diff --git a/firmware/config/engines/bmw_e34.cpp b/firmware/config/engines/bmw_e34.cpp index 1429ce73cf..c929273dfa 100644 --- a/firmware/config/engines/bmw_e34.cpp +++ b/firmware/config/engines/bmw_e34.cpp @@ -68,10 +68,10 @@ void setBmwE34(DECLARE_ENGINE_PARAMETER_F) { bc->ignitionPinMode = OM_INVERTED; bc->ignitionPins[0] = GPIOB_5; // #1 - bc->ignitionPins[1] = GPIOB_6; // #2 - bc->ignitionPins[2] = GPIOB_7; // #3 + bc->ignitionPins[2] = GPIOB_6; // #3 + bc->ignitionPins[4] = GPIOB_7; // #5 - bc->triggerErrorPin = GPIOE_3; + bc->triggerErrorPin = GPIO_UNASSIGNED; engineConfiguration->clutchUpPin = GPIOD_3; engineConfiguration->clutchUpPinMode = PI_PULLUP; @@ -84,6 +84,11 @@ void setBmwE34(DECLARE_ENGINE_PARAMETER_F) { // set_idle_pwm 50 boardConfiguration->idlePosition = 50; + boardConfiguration->sdCardCsPin = GPIO_UNASSIGNED; + boardConfiguration->is_enabled_spi_2 = false; + boardConfiguration->is_enabled_spi_3 = false; + boardConfiguration->max31855spiDevice = SPI_NONE; + // turbocharger boost control solenoid: TODO output: GPIOE_6 // water injection #1 TODO GPIOD_7 // water injection #2 TODO GPIOE_2 diff --git a/firmware/config/stm32f4ems/efifeatures.h b/firmware/config/stm32f4ems/efifeatures.h index b64e37734d..08779e1166 100644 --- a/firmware/config/stm32f4ems/efifeatures.h +++ b/firmware/config/stm32f4ems/efifeatures.h @@ -199,8 +199,6 @@ //#define SPI_CS3_PIN 15 //#define SPI_CS4_PORT GPIOD //#define SPI_CS4_PIN 10 -//#define SPI_SD_MODULE_PORT GPIOD -//#define SPI_SD_MODULE_PIN 11 #define EFI_SPI1_AF 5 @@ -216,8 +214,6 @@ #define SPI_CS2_PIN 0 #define SPI_CS4_PORT GPIOD #define SPI_CS4_PIN 3 -#define SPI_SD_MODULE_PORT GPIOD -#define SPI_SD_MODULE_PIN 4 #define EFI_SPI3_AF 6 #define MMC_CARD_SPI SPID3 diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index 2ee89afe22..282cfa1f7b 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -560,6 +560,7 @@ void setDefaultConfiguration(DECLARE_ENGINE_PARAMETER_F) { boardConfiguration->hip9011Gain = 1; + boardConfiguration->sdCardCsPin = GPIOD_4; boardConfiguration->isSdCardEnabled = true; boardConfiguration->isFastAdcEnabled = true; boardConfiguration->isEngineControlEnabled = true; diff --git a/firmware/controllers/algo/engine_configuration_generated_structures.h b/firmware/controllers/algo/engine_configuration_generated_structures.h index 61c4cd0d74..331894ebcc 100644 --- a/firmware/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated by config_definition.jar on Sat Apr 04 09:37:43 EDT 2015 +// this section was generated by config_definition.jar on Sat Apr 04 10:01:54 EDT 2015 // begin #include "rusefi_types.h" typedef struct { @@ -396,7 +396,7 @@ typedef struct { /** * offset 324 */ - int sdCardCsPin; + brain_pin_e sdCardCsPin; /** * offset 328 */ @@ -1235,4 +1235,4 @@ typedef struct { } engine_configuration_s; // end -// this section was generated by config_definition.jar on Sat Apr 04 09:37:43 EDT 2015 +// this section was generated by config_definition.jar on Sat Apr 04 10:01:54 EDT 2015 diff --git a/firmware/controllers/flash_main.h b/firmware/controllers/flash_main.h index 4508bf50ba..c567636a0d 100644 --- a/firmware/controllers/flash_main.h +++ b/firmware/controllers/flash_main.h @@ -12,7 +12,7 @@ #include "engine_configuration.h" #include "engine.h" -#define FLASH_DATA_VERSION 7600 +#define FLASH_DATA_VERSION 7610 void readFromFlash(void); void initFlash(Logging *sharedLogger, Engine *engine); diff --git a/firmware/hw_layer/io_pins.cpp b/firmware/hw_layer/io_pins.cpp index d33ea5a42e..4d9de39bc0 100644 --- a/firmware/hw_layer/io_pins.cpp +++ b/firmware/hw_layer/io_pins.cpp @@ -115,7 +115,7 @@ void initOutputPins(void) { // outputPinRegister("spi CS3", SPI_CS_3, SPI_CS3_PORT, SPI_CS3_PIN); // outputPinRegister("spi CS4", SPI_CS_4, SPI_CS4_PORT, SPI_CS4_PIN); #if HAL_USE_SPI || defined(__DOXYGEN__) - outputPinRegister("spi CS5", &sdCsPin, SPI_SD_MODULE_PORT, SPI_SD_MODULE_PIN); + outputPinRegisterExt2("spi CS5", &sdCsPin, boardConfiguration->sdCardCsPin, &DEFAULT_OUTPUT); #endif // todo: should we move this code closer to the fuel pump logic? diff --git a/firmware/hw_layer/max31855.cpp b/firmware/hw_layer/max31855.cpp index d65d64528b..12e72098f6 100644 --- a/firmware/hw_layer/max31855.cpp +++ b/firmware/hw_layer/max31855.cpp @@ -144,16 +144,13 @@ static void egtRead(void) { void initMax31855(Logging *sharedLogger, SPIDriver *drv, egt_cs_array_t max31855_cs) { logger = sharedLogger; + // todo:spi device is now enabled separately - should probably be enabled here driver = drv; addConsoleAction("egtinfo", (Void) showEgtInfo); addConsoleAction("egtread", (Void) egtRead); -#if EFI_PROD_CODE - turnOnSpi(SPI_DEVICE_3); -#endif /* EFI_PROD_CODE */ - for (int i = 0; i < EGT_CHANNEL_COUNT; i++) { if (max31855_cs[i] != GPIO_UNASSIGNED) { diff --git a/firmware/hw_layer/mmc_card.cpp b/firmware/hw_layer/mmc_card.cpp index e83770c684..306e6987e3 100644 --- a/firmware/hw_layer/mmc_card.cpp +++ b/firmware/hw_layer/mmc_card.cpp @@ -34,9 +34,9 @@ static THD_WORKING_AREA(mmcThreadStack,UTILITY_THREAD_STACK_SIZE); // MMC monit */ MMCDriver MMCD1; -static SPIConfig hs_spicfg = { NULL, SPI_SD_MODULE_PORT, SPI_SD_MODULE_PIN, +static SPIConfig hs_spicfg = { NULL, NULL, 0, SPI_BaudRatePrescaler_8 }; -static SPIConfig ls_spicfg = { NULL, SPI_SD_MODULE_PORT, SPI_SD_MODULE_PIN, +static SPIConfig ls_spicfg = { NULL, NULL, 0, SPI_BaudRatePrescaler_256 }; /* MMC/SD over SPI driver configuration.*/ @@ -64,7 +64,7 @@ static FIL FDLogFile; static int totalLoggedBytes = 0; static void printMmcPinout(void) { - scheduleMsg(&logger, "MMC CS %s:%d", portname(SPI_SD_MODULE_PORT), SPI_SD_MODULE_PIN); + scheduleMsg(&logger, "MMC CS %s", hwPortname(boardConfiguration->sdCardCsPin)); // todo: we need to figure out the right SPI pinout, not just SPI2 // scheduleMsg(&logger, "MMC SCK %s:%d", portname(EFI_SPI2_SCK_PORT), EFI_SPI2_SCK_PIN); // scheduleMsg(&logger, "MMC MISO %s:%d", portname(EFI_SPI2_MISO_PORT), EFI_SPI2_MISO_PIN); @@ -256,6 +256,9 @@ void initMmcCard(void) { return; } + hs_spicfg.ssport = ls_spicfg.ssport = getHwPort(boardConfiguration->sdCardCsPin); + hs_spicfg.sspad = ls_spicfg.sspad = getHwPin(boardConfiguration->sdCardCsPin); + /** * FYI: SPI does not work with CCM memory, be sure to have main() stack in RAM, not in CCMRAM */ diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 48948141fb..4731b33624 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -318,7 +318,7 @@ custom adc_channel_mode_e 4 bits, U32, @OFFSET@, [0:1], "Off", "Slow", "Fas int idleThreadPeriod; int consoleLoopPeriod; int lcdThreadPeriod; - int sdCardCsPin; + brain_pin_e sdCardCsPin; int generalPeriodicThreadPeriod; uint32_t tunerStudioSerialSpeed;;"BPs", 1, 0, 0,1000000, 0 diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp index 381a9df6ef..65c6c11c21 100644 --- a/firmware/rusefi.cpp +++ b/firmware/rusefi.cpp @@ -243,12 +243,12 @@ void chDbgStackOverflowPanic(Thread *otp) { extern engine_pins_s enginePins; -// todo: why is this method here and not in error_handling.c ? +// todo: why is this method here and not in error_handling.cpp ? void firmwareError(const char *errorMsg, ...) { if (hasFirmwareErrorFlag) return; ON_FATAL_ERROR(); - hasFirmwareErrorFlag = TRUE; + hasFirmwareErrorFlag = true; if (indexOf(errorMsg, '%') == -1) { /** * in case of simple error message let's reduce stack usage @@ -276,5 +276,5 @@ int getRusEfiVersion(void) { return 1; // this is here to make the compiler happy about the unused array if (UNUSED_CCM_SIZE[0] == 0) return 1; // this is here to make the compiler happy about the unused array - return 20150403; + return 20150404; } diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini index 6de84cf6f9..21ad8e6d79 100644 --- a/firmware/tunerstudio/rusefi.ini +++ b/firmware/tunerstudio/rusefi.ini @@ -40,7 +40,7 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated by ConfigDefinition.jar on Sat Apr 04 09:37:45 EDT 2015 +; this section was generated by ConfigDefinition.jar on Sat Apr 04 10:01:56 EDT 2015 pageSize = 15288 page = 1 @@ -232,7 +232,7 @@ page = 1 ;skipping idleThreadPeriod offset 1184 ;skipping consoleLoopPeriod offset 1188 ;skipping lcdThreadPeriod offset 1192 -;skipping sdCardCsPin offset 1196 + sdCardCsPin = bits, U32, 1196, [0:6], "GPIOA_0", "GPIOA_1", "GPIOA_2", "GPIOA_3", "GPIOA_4", "GPIOA_5", "GPIOA_6", "GPIOA_7", "GPIOA_8", "GPIOA_9", "GPIOA_10", "GPIOA_11", "GPIOA_12", "GPIOA_13", "GPIOA_14", "GPIOA_15", "GPIOB_0", "GPIOB_1", "GPIOB_2", "GPIOB_3", "GPIOB_4", "GPIOB_5", "GPIOB_6", "GPIOB_7", "GPIOB_8", "GPIOB_9", "GPIOB_10", "GPIOB_11", "GPIOB_12", "GPIOB_13", "GPIOB_14", "GPIOB_15", "GPIOC_0", "GPIOC_1", "GPIOC_2", "GPIOC_3", "GPIOC_4", "GPIOC_5", "GPIOC_6", "GPIOC_7", "GPIOC_8", "GPIOC_9", "GPIOC_10", "GPIOC_11", "GPIOC_12", "GPIOC_13", "GPIOC_14", "GPIOC_15", "GPIOD_0", "GPIOD_1", "GPIOD_2", "GPIOD_3", "GPIOD_4", "GPIOD_5", "GPIOD_6", "GPIOD_7", "GPIOD_8", "GPIOD_9", "GPIOD_10", "GPIOD_11", "GPIOD_12", "GPIOD_13", "GPIOD_14", "GPIOD_15", "GPIOE_0", "GPIOE_1", "GPIOE_2", "GPIOE_3", "GPIOE_4", "GPIOE_5", "GPIOE_6", "GPIOE_7", "GPIOE_8", "GPIOE_9", "GPIOE_10", "GPIOE_11", "GPIOE_12", "GPIOE_13", "GPIOE_14", "GPIOE_15", "NONE", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" ;skipping generalPeriodicThreadPeriod offset 1200 tunerStudioSerialSpeed = scalar, U32, 1204, "BPs", 1, 0, 0,1000000, 0 boardTestModeJumperPin = bits, U32, 1208, [0:6], "GPIOA_0", "GPIOA_1", "GPIOA_2", "GPIOA_3", "GPIOA_4", "GPIOA_5", "GPIOA_6", "GPIOA_7", "GPIOA_8", "GPIOA_9", "GPIOA_10", "GPIOA_11", "GPIOA_12", "GPIOA_13", "GPIOA_14", "GPIOA_15", "GPIOB_0", "GPIOB_1", "GPIOB_2", "GPIOB_3", "GPIOB_4", "GPIOB_5", "GPIOB_6", "GPIOB_7", "GPIOB_8", "GPIOB_9", "GPIOB_10", "GPIOB_11", "GPIOB_12", "GPIOB_13", "GPIOB_14", "GPIOB_15", "GPIOC_0", "GPIOC_1", "GPIOC_2", "GPIOC_3", "GPIOC_4", "GPIOC_5", "GPIOC_6", "GPIOC_7", "GPIOC_8", "GPIOC_9", "GPIOC_10", "GPIOC_11", "GPIOC_12", "GPIOC_13", "GPIOC_14", "GPIOC_15", "GPIOD_0", "GPIOD_1", "GPIOD_2", "GPIOD_3", "GPIOD_4", "GPIOD_5", "GPIOD_6", "GPIOD_7", "GPIOD_8", "GPIOD_9", "GPIOD_10", "GPIOD_11", "GPIOD_12", "GPIOD_13", "GPIOD_14", "GPIOD_15", "GPIOE_0", "GPIOE_1", "GPIOE_2", "GPIOE_3", "GPIOE_4", "GPIOE_5", "GPIOE_6", "GPIOE_7", "GPIOE_8", "GPIOE_9", "GPIOE_10", "GPIOE_11", "GPIOE_12", "GPIOE_13", "GPIOE_14", "GPIOE_15", "NONE", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"