mirror of https://github.com/FOME-Tech/fome-fw.git
support spi4/5/6
This commit is contained in:
parent
7fafa1a144
commit
9c2a6420b4
|
@ -320,14 +320,11 @@
|
|||
#define EFI_INTERNAL_FAST_ADC_GPT &GPTD6
|
||||
|
||||
#define EFI_SPI1_AF 5
|
||||
|
||||
#define EFI_SPI2_AF 5
|
||||
|
||||
/**
|
||||
* This section is for right-side center SPI
|
||||
*/
|
||||
|
||||
#define EFI_SPI3_AF 6
|
||||
#define EFI_SPI4_AF 5
|
||||
#define EFI_SPI5_AF 5
|
||||
#define EFI_SPI6_AF 6
|
||||
|
||||
/**
|
||||
* Patched version of ChibiOS/RT support extra details in the system error messages
|
||||
|
|
|
@ -291,6 +291,8 @@ typedef enum __attribute__ ((__packed__)) {
|
|||
SPI_DEVICE_2 = 2,
|
||||
SPI_DEVICE_3 = 3,
|
||||
SPI_DEVICE_4 = 4,
|
||||
SPI_DEVICE_5 = 5,
|
||||
SPI_DEVICE_6 = 6,
|
||||
} spi_device_e;
|
||||
|
||||
typedef enum __attribute__ ((__packed__)) {
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
#endif
|
||||
|
||||
#if HAL_USE_SPI
|
||||
extern bool isSpiInitialized[5];
|
||||
extern bool isSpiInitialized[6];
|
||||
|
||||
/**
|
||||
* Only one consumer can use SPI bus at a given time
|
||||
|
@ -79,7 +79,6 @@ void unlockSpi(spi_device_e device) {
|
|||
}
|
||||
|
||||
static void initSpiModules() {
|
||||
UNUSED(engineConfiguration);
|
||||
if (engineConfiguration->is_enabled_spi_1) {
|
||||
turnOnSpi(SPI_DEVICE_1);
|
||||
}
|
||||
|
@ -92,6 +91,12 @@ static void initSpiModules() {
|
|||
if (engineConfiguration->is_enabled_spi_4) {
|
||||
turnOnSpi(SPI_DEVICE_4);
|
||||
}
|
||||
if (engineConfiguration->is_enabled_spi_5) {
|
||||
turnOnSpi(SPI_DEVICE_5);
|
||||
}
|
||||
if (engineConfiguration->is_enabled_spi_6) {
|
||||
turnOnSpi(SPI_DEVICE_6);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -120,6 +125,16 @@ SPIDriver * getSpiDevice(spi_device_e spiDevice) {
|
|||
if (spiDevice == SPI_DEVICE_4) {
|
||||
return &SPID4;
|
||||
}
|
||||
#endif
|
||||
#if STM32_SPI_USE_SPI5
|
||||
if (spiDevice == SPI_DEVICE_5) {
|
||||
return &SPID5;
|
||||
}
|
||||
#endif
|
||||
#if STM32_SPI_USE_SPI6
|
||||
if (spiDevice == SPI_DEVICE_6) {
|
||||
return &SPID6;
|
||||
}
|
||||
#endif
|
||||
firmwareError(ObdCode::CUSTOM_ERR_UNEXPECTED_SPI, "Unexpected SPI device: %d", spiDevice);
|
||||
return NULL;
|
||||
|
|
|
@ -56,7 +56,7 @@ void HardFaultVector(void) {
|
|||
}
|
||||
|
||||
#if HAL_USE_SPI || defined(__DOXYGEN__)
|
||||
bool isSpiInitialized[5] = { false, false, false, false, false };
|
||||
bool isSpiInitialized[6] = { false, false, false, false, false, false };
|
||||
|
||||
static int getSpiAf(SPIDriver *driver) {
|
||||
#if STM32_SPI_USE_SPI1
|
||||
|
|
|
@ -48,7 +48,7 @@ void HardFaultVector(void) {
|
|||
}
|
||||
|
||||
#if HAL_USE_SPI || defined(__DOXYGEN__)
|
||||
bool isSpiInitialized[5] = { false, false, false, false, false };
|
||||
bool isSpiInitialized[6] = { false, false, false, false, false, false };
|
||||
|
||||
static int getSpiAf(SPIDriver *driver) {
|
||||
#if STM32_SPI_USE_SPI1
|
||||
|
|
|
@ -463,7 +463,7 @@ EXTERNC int getRemainingStack(thread_t *otp) {
|
|||
}
|
||||
|
||||
#if HAL_USE_SPI
|
||||
bool isSpiInitialized[5] = { false, false, false, false, false };
|
||||
bool isSpiInitialized[6] = { false, false, false, false, false, false};
|
||||
|
||||
static int getSpiAf(SPIDriver *driver) {
|
||||
#if STM32_SPI_USE_SPI1
|
||||
|
@ -480,6 +480,21 @@ static int getSpiAf(SPIDriver *driver) {
|
|||
if (driver == &SPID3) {
|
||||
return EFI_SPI3_AF;
|
||||
}
|
||||
#endif
|
||||
#if STM32_SPI_USE_SPI4
|
||||
if (driver == &SPID4) {
|
||||
return EFI_SPI4_AF;
|
||||
}
|
||||
#endif
|
||||
#if STM32_SPI_USE_SPI5
|
||||
if (driver == &SPID5) {
|
||||
return EFI_SPI5_AF;
|
||||
}
|
||||
#endif
|
||||
#if STM32_SPI_USE_SPI6
|
||||
if (driver == &SPID6) {
|
||||
return EFI_SPI6_AF;
|
||||
}
|
||||
#endif
|
||||
return -1;
|
||||
}
|
||||
|
@ -492,6 +507,12 @@ brain_pin_e getMisoPin(spi_device_e device) {
|
|||
return engineConfiguration->spi2misoPin;
|
||||
case SPI_DEVICE_3:
|
||||
return engineConfiguration->spi3misoPin;
|
||||
case SPI_DEVICE_4:
|
||||
return engineConfiguration->spi4misoPin;
|
||||
case SPI_DEVICE_5:
|
||||
return engineConfiguration->spi5misoPin;
|
||||
case SPI_DEVICE_6:
|
||||
return engineConfiguration->spi6misoPin;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -506,6 +527,12 @@ brain_pin_e getMosiPin(spi_device_e device) {
|
|||
return engineConfiguration->spi2mosiPin;
|
||||
case SPI_DEVICE_3:
|
||||
return engineConfiguration->spi3mosiPin;
|
||||
case SPI_DEVICE_4:
|
||||
return engineConfiguration->spi4mosiPin;
|
||||
case SPI_DEVICE_5:
|
||||
return engineConfiguration->spi5mosiPin;
|
||||
case SPI_DEVICE_6:
|
||||
return engineConfiguration->spi6mosiPin;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -520,6 +547,12 @@ brain_pin_e getSckPin(spi_device_e device) {
|
|||
return engineConfiguration->spi2sckPin;
|
||||
case SPI_DEVICE_3:
|
||||
return engineConfiguration->spi3sckPin;
|
||||
case SPI_DEVICE_4:
|
||||
return engineConfiguration->spi4sckPin;
|
||||
case SPI_DEVICE_5:
|
||||
return engineConfiguration->spi5sckPin;
|
||||
case SPI_DEVICE_6:
|
||||
return engineConfiguration->spi6sckPin;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -531,9 +564,7 @@ void turnOnSpi(spi_device_e device) {
|
|||
return; // already initialized
|
||||
isSpiInitialized[device] = true;
|
||||
if (device == SPI_DEVICE_1) {
|
||||
// todo: introduce a nice structure with all fields for same SPI
|
||||
#if STM32_SPI_USE_SPI1
|
||||
// scheduleMsg(&logging, "Turning on SPI1 pins");
|
||||
initSpiModule(&SPID1, getSckPin(device),
|
||||
getMisoPin(device),
|
||||
getMosiPin(device),
|
||||
|
@ -544,7 +575,6 @@ void turnOnSpi(spi_device_e device) {
|
|||
}
|
||||
if (device == SPI_DEVICE_2) {
|
||||
#if STM32_SPI_USE_SPI2
|
||||
// scheduleMsg(&logging, "Turning on SPI2 pins");
|
||||
initSpiModule(&SPID2, getSckPin(device),
|
||||
getMisoPin(device),
|
||||
getMosiPin(device),
|
||||
|
@ -555,7 +585,6 @@ void turnOnSpi(spi_device_e device) {
|
|||
}
|
||||
if (device == SPI_DEVICE_3) {
|
||||
#if STM32_SPI_USE_SPI3
|
||||
// scheduleMsg(&logging, "Turning on SPI3 pins");
|
||||
initSpiModule(&SPID3, getSckPin(device),
|
||||
getMisoPin(device),
|
||||
getMosiPin(device),
|
||||
|
@ -566,11 +595,34 @@ void turnOnSpi(spi_device_e device) {
|
|||
}
|
||||
if (device == SPI_DEVICE_4) {
|
||||
#if STM32_SPI_USE_SPI4
|
||||
// scheduleMsg(&logging, "Turning on SPI4 pins");
|
||||
/* there are no configuration fields for SPI4 in engineConfiguration, rely on board init code
|
||||
* it should set proper functions for SPI4 pins */
|
||||
initSpiModule(&SPID4, getSckPin(device),
|
||||
getMisoPin(device),
|
||||
getMosiPin(device),
|
||||
engineConfiguration->spi4SckMode,
|
||||
engineConfiguration->spi4MosiMode,
|
||||
engineConfiguration->spi4MisoMode);
|
||||
#endif /* STM32_SPI_USE_SPI4 */
|
||||
}
|
||||
if (device == SPI_DEVICE_5) {
|
||||
#if STM32_SPI_USE_SPI5
|
||||
initSpiModule(&SPID5, getSckPin(device),
|
||||
getMisoPin(device),
|
||||
getMosiPin(device),
|
||||
engineConfiguration->spi5SckMode,
|
||||
engineConfiguration->spi5MosiMode,
|
||||
engineConfiguration->spi5MisoMode);
|
||||
#endif /* STM32_SPI_USE_SPI5 */
|
||||
}
|
||||
if (device == SPI_DEVICE_6) {
|
||||
#if STM32_SPI_USE_SPI6
|
||||
initSpiModule(&SPID6, getSckPin(device),
|
||||
getMisoPin(device),
|
||||
getMosiPin(device),
|
||||
engineConfiguration->spi6SckMode,
|
||||
engineConfiguration->spi6MosiMode,
|
||||
engineConfiguration->spi6MisoMode);
|
||||
#endif /* STM32_SPI_USE_SPI6 */
|
||||
}
|
||||
}
|
||||
|
||||
void initSpiModule(SPIDriver *driver, brain_pin_e sck, brain_pin_e miso,
|
||||
|
|
|
@ -432,6 +432,8 @@ bit useFordRedundantPps;On some Ford and Toyota vehicles one of the pedal sensor
|
|||
bit cltSensorPulldown
|
||||
bit iatSensorPulldown
|
||||
bit allowIdenticalPps
|
||||
bit is_enabled_spi_5
|
||||
bit is_enabled_spi_6
|
||||
|
||||
int16_t tpsMin;Closed throttle, 1 volt = 200 units;"ADC", 1, 0, 0, 1023, 0
|
||||
int16_t tpsMax;Full throttle, 1 volt = 200 units;"ADC", 1, 0, 0, 1023, 0
|
||||
|
@ -1489,7 +1491,19 @@ pin_input_mode_e[LUA_DIGITAL_INPUT_COUNT iterate] luaDigitalInputPinModes;
|
|||
output_pin_e speedometerOutputPin
|
||||
uint16_t speedometerPulsePerKm;Number of speedometer pulses per kilometer travelled.;"", 1, 0, 0, 65000, 0
|
||||
|
||||
uint8_t[246] mainUnusedEnd;;"units", 1, 0, 0, 1, 0
|
||||
Gpio spi4mosiPin;
|
||||
Gpio spi4misoPin;
|
||||
Gpio spi4sckPin;
|
||||
|
||||
Gpio spi5mosiPin;
|
||||
Gpio spi5misoPin;
|
||||
Gpio spi5sckPin;
|
||||
|
||||
Gpio spi6mosiPin;
|
||||
Gpio spi6misoPin;
|
||||
Gpio spi6sckPin;
|
||||
|
||||
uint8_t[237] mainUnusedEnd;;"units", 1, 0, 0, 1, 0
|
||||
|
||||
! end of engine_configuration_s
|
||||
end_struct
|
||||
|
|
Loading…
Reference in New Issue