diff --git a/firmware/config/boards/hellen/hellen_common.cpp b/firmware/config/boards/hellen/hellen_common.cpp index 5eb9a0a369..1852fe106a 100644 --- a/firmware/config/boards/hellen/hellen_common.cpp +++ b/firmware/config/boards/hellen/hellen_common.cpp @@ -64,13 +64,12 @@ void hellenBoardStandBy() { * 2) SD card initialization * 3) accelerometer main initialization if accelerometer feature is desired */ +extern OutputPin accelerometerChipSelect; + void hellenMegaAccelerometerPreInitCS2Pin() { - static bool initialized = false; - static OutputPin cs2pin; - if (!initialized) { - initialized = true; - cs2pin.initPin("mm-CS2", Gpio::H_SPI1_CS2); - cs2pin.setValue(1); + if (!accelerometerChipSelect.isInitialized()) { + accelerometerChipSelect.initPin("mm-CS2", Gpio::H_SPI1_CS2); + accelerometerChipSelect.setValue(1); } } diff --git a/firmware/hw_layer/sensors/accelerometer.cpp b/firmware/hw_layer/sensors/accelerometer.cpp index b7cc55c723..75028f9318 100644 --- a/firmware/hw_layer/sensors/accelerometer.cpp +++ b/firmware/hw_layer/sensors/accelerometer.cpp @@ -56,10 +56,7 @@ static SPIConfig accelerometerSpiCfg = { .cr2 = SPI_CR2_8BIT_MODE }; - -#ifndef HW_HELLEN - static OutputPin chipSelect; -#endif +OutputPin accelerometerChipSelect; #if (EFI_ONBOARD_MEMS_LIS2DW12 == TRUE) @@ -223,10 +220,11 @@ void initAccelerometer() { return; } - /* Commented until we have hellenMegaAccelerometerPreInitCS2Pin() */ - #ifndef HW_HELLEN - chipSelect.initPin("SPI Acc", engineConfiguration->accelerometerCsPin); - #endif + /* so far only Hellen boards share SPI device for SD card and accelerometer + * thus need to make sure CS pin is in a well known proper state */ + if (!accelerometerChipSelect.isInitialized()) { + accelerometerChipSelect.initPin("SPI Acc", engineConfiguration->accelerometerCsPin); + } accelerometerSpiCfg.ssport = getHwPort("SPI Acc", engineConfiguration->accelerometerCsPin); accelerometerSpiCfg.sspad = getHwPin("SPI Acc", engineConfiguration->accelerometerCsPin);