ports: add initSpiCs helper that does not mak pin used

This commit is contained in:
Andrey Gusakov 2024-02-03 01:38:14 +03:00 committed by rusefillc
parent f9389aae39
commit 84ac47c4af
5 changed files with 32 additions and 8 deletions

View File

@ -273,12 +273,18 @@ void initSpiModule(SPIDriver *driver, brain_pin_e sck, brain_pin_e miso,
PAL_MODE_ALTERNATE(misoAf) | misoMode | PAL_STM32_OSPEED_HIGHEST | PAL_STM32_PUPDR_PULLUP);
}
void initSpiCs(SPIConfig *spiConfig, brain_pin_e csPin) {
spiConfig->end_cb = nullptr;
void initSpiCsNoOccupy(SPIConfig *spiConfig, brain_pin_e csPin) {
ioportid_t port = getHwPort("spi", csPin);
ioportmask_t pin = getHwPin("spi", csPin);
spiConfig->ssport = port;
spiConfig->sspad = pin;
}
void initSpiCs(SPIConfig *spiConfig, brain_pin_e csPin) {
/* TODO: why this is here? */
spiConfig->end_cb = nullptr;
initSpiCsNoOccupy(spiConfig, csPin);
efiSetPadMode("chip select", csPin, PAL_STM32_MODE_OUTPUT);
}

View File

@ -186,12 +186,17 @@ void initSpiModule(SPIDriver *driver, brain_pin_e sck, brain_pin_e miso,
efiSetPadMode("SPI master in ", miso, PAL_MODE_ALTERNATE(getSpiAf(driver)) /*| misoMode | PAL_STM32_OSPEED_HIGHEST*/);
}
void initSpiCs(SPIConfig *spiConfig, brain_pin_e csPin) {
spiConfig->end_cb = NULL;
void initSpiCsNoOccupy(SPIConfig *spiConfig, brain_pin_e csPin) {
ioportid_t port = getHwPort("spi", csPin);
ioportmask_t pin = getHwPin("spi", csPin);
spiConfig->ssport = port;
spiConfig->sspad = pin;
}
void initSpiCs(SPIConfig *spiConfig, brain_pin_e csPin) {
/* TODO: why this is here? */
spiConfig->end_cb = nullptr;
initSpiCsNoOccupy(spiConfig, csPin);
// CS is controlled inside 'hal_spi_lld' driver using both software and hardware methods.
//efiSetPadMode("chip select", csPin, PAL_MODE_OUTPUT_OPENDRAIN);
}

View File

@ -179,12 +179,18 @@ void initSpiModule(SPIDriver *driver, brain_pin_e sck, brain_pin_e miso,
efiSetPadMode("SPI master in ", miso, PAL_MODE_ALTERNATE(getSpiAf(driver)) | misoMode | PAL_STM32_OSPEED_HIGHEST);
}
void initSpiCs(SPIConfig *spiConfig, brain_pin_e csPin) {
spiConfig->end_cb = NULL;
void initSpiCsNoOccupy(SPIConfig *spiConfig, brain_pin_e csPin) {
ioportid_t port = getHwPort("spi", csPin);
ioportmask_t pin = getHwPin("spi", csPin);
spiConfig->ssport = port;
spiConfig->sspad = pin;
}
void initSpiCs(SPIConfig *spiConfig, brain_pin_e csPin) {
/* TODO: why this is here? */
spiConfig->end_cb = nullptr;
initSpiCsNoOccupy(spiConfig, csPin);
// CS is controlled inside 'hal_spi_lld' driver using both software and hardware methods.
//efiSetPadMode("chip select", csPin, PAL_MODE_OUTPUT_OPENDRAIN);
}

View File

@ -60,6 +60,7 @@ void initSpiModule(SPIDriver *driver, brain_pin_e sck, brain_pin_e miso,
int mosiMode,
int misoMode);
void initSpiCsNoOccupy(SPIConfig *spiConfig, brain_pin_e csPin);
void initSpiCs(SPIConfig *spiConfig, brain_pin_e csPin);
void turnOnSpi(spi_device_e device);
#endif // HAL_USE_SPI

View File

@ -152,12 +152,18 @@ void initSpiModule(SPIDriver *driver, brain_pin_e sck, brain_pin_e miso,
efiSetPadMode("SPI master in ", miso, PAL_MODE_ALTERNATE(getSpiAf(driver)) | misoMode | PAL_STM32_OSPEED_HIGHEST | PAL_STM32_PUPDR_PULLUP);
}
void initSpiCs(SPIConfig *spiConfig, brain_pin_e csPin) {
spiConfig->end_cb = nullptr;
void initSpiCsNoOccupy(SPIConfig *spiConfig, brain_pin_e csPin) {
ioportid_t port = getHwPort("spi", csPin);
ioportmask_t pin = getHwPin("spi", csPin);
spiConfig->ssport = port;
spiConfig->sspad = pin;
}
void initSpiCs(SPIConfig *spiConfig, brain_pin_e csPin) {
/* TODO: why this is here? */
spiConfig->end_cb = nullptr;
initSpiCsNoOccupy(spiConfig, csPin);
efiSetPadMode("chip select", csPin, PAL_STM32_MODE_OUTPUT);
}