diff --git a/firmware/config/stm32f7ems/efifeatures.h b/firmware/config/stm32f7ems/efifeatures.h new file mode 100644 index 0000000000..89fdd81984 --- /dev/null +++ b/firmware/config/stm32f7ems/efifeatures.h @@ -0,0 +1,317 @@ +/** + * @file efifeatures.h + * + * @brief In this header we can configure which firmware modules are used. + * + * @date Aug 29, 2013 + * @author Andrey Belomutskiy, (c) 2012-2017 + */ + +#ifndef EFIFEATURES_H_ +#define EFIFEATURES_H_ + +#define EFI_GPIO_HARDWARE TRUE + +#define EFI_FSIO TRUE + +#define EFI_PWM_TESTER FALSE + +#define HAL_USE_USB_MSD FALSE + +#define EFI_USE_CCM TRUE + +/** + * if you have a 60-2 trigger, or if you just want better performance, you + * probably want EFI_ENABLE_ASSERTS to be FALSE. Also you would probably want to FALSE + * CH_DBG_ENABLE_CHECKS + * CH_DBG_ENABLE_ASSERTS + * CH_DBG_ENABLE_TRACE + * in chconf.h + * + */ +#if !defined(EFI_ENABLE_ASSERTS) || defined(__DOXYGEN__) + #define EFI_ENABLE_ASSERTS TRUE +#endif /* EFI_ENABLE_ASSERTS */ + +#if !defined(EFI_ENABLE_MOCK_ADC) || defined(__DOXYGEN__) + #define EFI_ENABLE_MOCK_ADC TRUE +#endif /* EFI_ENABLE_MOCK_ADC */ + + +//#define EFI_UART_ECHO_TEST_MODE TRUE + +#define EFI_USE_UART_FOR_CONSOLE FALSE + +/** + * Build-in logic analyzer support. Logic analyzer viewer is one of the java console panes. + */ +#define EFI_WAVE_ANALYZER TRUE + +/** + * TunerStudio support. + */ +#define EFI_TUNER_STUDIO TRUE + +/** + * Bluetooth UART setup support. + */ +#define EFI_BLUETOOTH_SETUP FALSE + +/** + * TunerStudio debug output + */ +#define EFI_TUNER_STUDIO_VERBOSE TRUE + +#define EFI_DEFAILED_LOGGING FALSE + +/** + * Dev console support. + */ +#define EFI_CLI_SUPPORT TRUE + +#define EFI_RTC TRUE + +#define EFI_ALTERNATOR_CONTROL TRUE + +#define EFI_AUX_PID TRUE + +#define EFI_SIGNAL_EXECUTOR_SLEEP FALSE +#define EFI_SIGNAL_EXECUTOR_ONE_TIMER TRUE +#define EFI_SIGNAL_EXECUTOR_HW_TIMER FALSE + +#define FUEL_MATH_EXTREME_LOGGING FALSE + +#define SPARK_EXTREME_LOGGING FALSE + +#define TRIGGER_EXTREME_LOGGING FALSE + +#define EFI_INTERNAL_FLASH TRUE + +/** + * Usually you need shaft position input, but maybe you do not need it? + */ +#define EFI_SHAFT_POSITION_INPUT TRUE + +/** + * Maybe we are just sniffing what's going on? + */ +#define EFI_ENGINE_CONTROL TRUE + +#define EFI_SPEED_DENSITY TRUE + +/** + * MCP42010 digital potentiometer support. This could be useful if you are stimulating some + * stock ECU + */ +//#define EFI_POTENTIOMETER FALSE +#define EFI_POTENTIOMETER TRUE + +#define EFI_ANALOG_SENSORS TRUE + +#define EFI_MAX_31855 TRUE + +#define EFI_MCP_3208 FALSE + +#define EFI_HIP_9011 TRUE + +#define EFI_CJ125 TRUE + +#define EFI_INTERNAL_ADC TRUE + +#define EFI_DENSO_ADC FALSE + +#define EFI_CAN_SUPPORT TRUE + +#define EFI_HD44780_LCD TRUE + +#define EFI_IDLE_CONTROL TRUE + +/** + * Control the main power relay based on measured ignition voltage (Vbatt) + */ +#define EFI_MAIN_RELAY_CONTROL FALSE + +#define EFI_PWM TRUE + +#define EFI_VEHICLE_SPEED TRUE + +#define EFI_FUEL_PUMP TRUE + +#define EFI_ENGINE_EMULATOR TRUE +#define EFI_EMULATE_POSITION_SENSORS TRUE + +/** + * This macros is used to hide pieces of the code from unit tests, so it only makes sense in folders exposed to the tests project. + * This macros is NOT about taking out logging in general. + */ +#define EFI_PROD_CODE TRUE + +/** + * Do we need file logging (like SD card) logic? + */ +#define EFI_FILE_LOGGING TRUE + +#ifndef EFI_USB_SERIAL +#define EFI_USB_SERIAL TRUE +#endif + +/** + * While we embed multiple PnP configurations into the same firmware binary, these marcoses give us control + * over which configurations go into the binary + */ +#define EFI_SUPPORT_DODGE_NEON TRUE +#define EFI_SUPPORT_FORD_ASPIRE TRUE +#define EFI_SUPPORT_FORD_FIESTA TRUE +#define EFI_SUPPORT_NISSAN_PRIMERA TRUE +#define EFI_SUPPORT_1995_FORD_INLINE_6 TRUE + +#define EFI_ENGINE_SNIFFER TRUE + +#define EFI_HISTOGRAMS FALSE +#define EFI_SENSOR_CHART TRUE + +#if defined __GNUC__ +#define EFI_PERF_METRICS FALSE +#define DL_OUTPUT_BUFFER 6500 +#else +#define EFI_PERF_METRICS FALSE +#define DL_OUTPUT_BUFFER 8000 +#endif + +/** + * Do we need GPS logic? + */ +#define EFI_UART_GPS TRUE +//#define EFI_UART_GPS FALSE + +#define EFI_ELECTRONIC_THROTTLE_BODY TRUE +//#define EFI_ELECTRONIC_THROTTLE_BODY FALSE + +/** + * Do we need Malfunction Indicator blinking logic? + */ +#define EFI_MALFUNCTION_INDICATOR TRUE +//#define EFI_MALFUNCTION_INDICATOR FALSE + +#define CONSOLE_MAX_ACTIONS 180 + +#define EFI_MAP_AVERAGING TRUE +//#define EFI_MAP_AVERAGING FALSE + +// todo: most of this should become configurable + +// todo: switch to continues ADC conversion for slow ADC? +#define EFI_INTERNAL_SLOW_ADC_PWM &PWMD8 +// todo: switch to continues ADC conversion for fast ADC? +#define EFI_INTERNAL_FAST_ADC_PWM &PWMD4 + +#define EFI_SPI1_AF 5 + +#define EFI_SPI2_AF 5 + +/** + * This section is for right-side center SPI + */ + +#define EFI_SPI3_AF 6 +// todo: finish migration to sdCardSpiDevice one day +#define MMC_CARD_SPI SPID3 + +#define EFI_I2C_SCL_BRAIN_PIN GPIOB_6 + +#define EFI_I2C_SDA_BRAIN_PIN GPIOB_7 +#define EFI_I2C_AF 4 + +/** + * Patched version of ChibiOS/RT support extra details in the system error messages + */ +#define EFI_CUSTOM_PANIC_METHOD TRUE + +#define ADC_CHANNEL_VREF ADC_CHANNEL_IN14 + +/** + * currently ChibiOS uses only first and second channels of each timer for input capture + * + * So, our options are: + * + * TIM2_CH1 + * PA5 + * + * TIM4_CH1 + * PB6 + * PD12 + * + * TIM9_CH1 + * PE5 + */ + + +// todo: start using consoleUartDevice? Not sure +#ifndef EFI_CONSOLE_UART_DEVICE +#define EFI_CONSOLE_UART_DEVICE (&SD3) +#endif + +/** + * Use 'HAL_USE_UART' DMA-mode driver instead of 'HAL_USE_SERIAL' + * + * See also + * STM32_SERIAL_USE_USARTx + * STM32_UART_USE_USARTx + * in mcuconf.h + */ +#define TS_UART_DMA_MODE FALSE + +#define TS_DMA_UART_DEVICE (&UARTD3) +#define TS_SERIAL_UART_DEVICE (&SD3) + +// todo: add DMA-mode for Console? +#if TS_UART_DMA_MODE +#undef EFI_CONSOLE_UART_DEVICE +#endif + +// todo: start using consoleSerialTxPin? Not sure +#ifndef EFI_CONSOLE_TX_PORT +#define EFI_CONSOLE_TX_PORT GPIOC +#endif +#ifndef EFI_CONSOLE_TX_PIN +#define EFI_CONSOLE_TX_PIN 10 +#endif +// todo: start using consoleSerialRxPin? Not sure +#ifndef EFI_CONSOLE_RX_PORT +#define EFI_CONSOLE_RX_PORT GPIOC +#endif +#ifndef EFI_CONSOLE_RX_PIN +#define EFI_CONSOLE_RX_PIN 11 +#endif +// todo: this should be detected automatically based on pin selection +#define EFI_CONSOLE_AF 7 + +// todo: this should be detected automatically based on pin selection +#define TS_SERIAL_AF 7 + +#define LED_WARNING_BRAIN_PIN GPIOD_13 + +// LED_ERROR_BRAIN_PIN should match LED_ERROR_PORT/LED_ERROR_PIN +#define LED_ERROR_BRAIN_PIN GPIOD_14 +#define LED_ERROR_PORT GPIOD +#define LED_ERROR_PIN 14 + +#define EFI_WARNING_LED TRUE + +// USART1 -> check defined STM32_SERIAL_USE_USART1 +// For GPS we have USART1. We can start with PB7 USART1_RX and PB6 USART1_TX +#define GPS_SERIAL_DEVICE &SD1 +#define GPS_SERIAL_SPEED 38400 + +#define CONSOLE_MODE_SWITCH_PORT GPIOB +#define CONSOLE_MODE_SWITCH_PIN 1 + +#define CONFIG_RESET_SWITCH_PORT GPIOD +#define CONFIG_RESET_SWITCH_PIN 6 + +/** + * This is the size of the MemoryStream used by chvprintf + */ +#define INTERMEDIATE_LOGGING_BUFFER_SIZE 2000 + +#endif /* EFIFEATURES_H_ */