Commit 460bceca authored by Dave Hylands's avatar Dave Hylands Committed by Paul Sokolovsky

stmhal: Make SPI NSS pin definition optional.

Some boards (like the GHI Electronics G30 Dev Board) don't use
NSS at all and rather just use GPIO chip selects.
parent afd4909a
...@@ -172,12 +172,15 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) { ...@@ -172,12 +172,15 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
const pyb_spi_obj_t *self; const pyb_spi_obj_t *self;
const pin_obj_t *pins[4]; const pin_obj_t *pins[4];
pins[0] = NULL;
if (0) { if (0) {
#if defined(MICROPY_HW_SPI1_SCK) #if defined(MICROPY_HW_SPI1_SCK)
} else if (spi->Instance == SPI1) { } else if (spi->Instance == SPI1) {
self = &pyb_spi_obj[0]; self = &pyb_spi_obj[0];
#if defined(MICROPY_HW_SPI1_NSS)
pins[0] = &MICROPY_HW_SPI1_NSS; pins[0] = &MICROPY_HW_SPI1_NSS;
#endif
pins[1] = &MICROPY_HW_SPI1_SCK; pins[1] = &MICROPY_HW_SPI1_SCK;
pins[2] = &MICROPY_HW_SPI1_MISO; pins[2] = &MICROPY_HW_SPI1_MISO;
pins[3] = &MICROPY_HW_SPI1_MOSI; pins[3] = &MICROPY_HW_SPI1_MOSI;
...@@ -187,7 +190,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) { ...@@ -187,7 +190,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
#if defined(MICROPY_HW_SPI2_SCK) #if defined(MICROPY_HW_SPI2_SCK)
} else if (spi->Instance == SPI2) { } else if (spi->Instance == SPI2) {
self = &pyb_spi_obj[1]; self = &pyb_spi_obj[1];
#if defined(MICROPY_HW_SPI2_NSS)
pins[0] = &MICROPY_HW_SPI2_NSS; pins[0] = &MICROPY_HW_SPI2_NSS;
#endif
pins[1] = &MICROPY_HW_SPI2_SCK; pins[1] = &MICROPY_HW_SPI2_SCK;
pins[2] = &MICROPY_HW_SPI2_MISO; pins[2] = &MICROPY_HW_SPI2_MISO;
pins[3] = &MICROPY_HW_SPI2_MOSI; pins[3] = &MICROPY_HW_SPI2_MOSI;
...@@ -197,7 +202,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) { ...@@ -197,7 +202,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
#if defined(MICROPY_HW_SPI3_SCK) #if defined(MICROPY_HW_SPI3_SCK)
} else if (spi->Instance == SPI3) { } else if (spi->Instance == SPI3) {
self = &pyb_spi_obj[2]; self = &pyb_spi_obj[2];
#if defined(MICROPY_HW_SPI3_NSS)
pins[0] = &MICROPY_HW_SPI3_NSS; pins[0] = &MICROPY_HW_SPI3_NSS;
#endif
pins[1] = &MICROPY_HW_SPI3_SCK; pins[1] = &MICROPY_HW_SPI3_SCK;
pins[2] = &MICROPY_HW_SPI3_MISO; pins[2] = &MICROPY_HW_SPI3_MISO;
pins[3] = &MICROPY_HW_SPI3_MOSI; pins[3] = &MICROPY_HW_SPI3_MOSI;
...@@ -207,7 +214,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) { ...@@ -207,7 +214,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
#if defined(MICROPY_HW_SPI4_SCK) #if defined(MICROPY_HW_SPI4_SCK)
} else if (spi->Instance == SPI4) { } else if (spi->Instance == SPI4) {
self = &pyb_spi_obj[3]; self = &pyb_spi_obj[3];
#if defined(MICROPY_HW_SPI4_NSS)
pins[0] = &MICROPY_HW_SPI4_NSS; pins[0] = &MICROPY_HW_SPI4_NSS;
#endif
pins[1] = &MICROPY_HW_SPI4_SCK; pins[1] = &MICROPY_HW_SPI4_SCK;
pins[2] = &MICROPY_HW_SPI4_MISO; pins[2] = &MICROPY_HW_SPI4_MISO;
pins[3] = &MICROPY_HW_SPI4_MOSI; pins[3] = &MICROPY_HW_SPI4_MOSI;
...@@ -217,7 +226,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) { ...@@ -217,7 +226,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
#if defined(MICROPY_HW_SPI5_SCK) #if defined(MICROPY_HW_SPI5_SCK)
} else if (spi->Instance == SPI5) { } else if (spi->Instance == SPI5) {
self = &pyb_spi_obj[4]; self = &pyb_spi_obj[4];
#if defined(MICROPY_HW_SPI5_NSS)
pins[0] = &MICROPY_HW_SPI5_NSS; pins[0] = &MICROPY_HW_SPI5_NSS;
#endif
pins[1] = &MICROPY_HW_SPI5_SCK; pins[1] = &MICROPY_HW_SPI5_SCK;
pins[2] = &MICROPY_HW_SPI5_MISO; pins[2] = &MICROPY_HW_SPI5_MISO;
pins[3] = &MICROPY_HW_SPI5_MOSI; pins[3] = &MICROPY_HW_SPI5_MOSI;
...@@ -227,7 +238,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) { ...@@ -227,7 +238,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
#if defined(MICROPY_HW_SPI6_SCK) #if defined(MICROPY_HW_SPI6_SCK)
} else if (spi->Instance == SPI6) { } else if (spi->Instance == SPI6) {
self = &pyb_spi_obj[5]; self = &pyb_spi_obj[5];
#if defined(MICROPY_HW_SPI6_NSS)
pins[0] = &MICROPY_HW_SPI6_NSS; pins[0] = &MICROPY_HW_SPI6_NSS;
#endif
pins[1] = &MICROPY_HW_SPI6_SCK; pins[1] = &MICROPY_HW_SPI6_SCK;
pins[2] = &MICROPY_HW_SPI6_MISO; pins[2] = &MICROPY_HW_SPI6_MISO;
pins[3] = &MICROPY_HW_SPI6_MOSI; pins[3] = &MICROPY_HW_SPI6_MOSI;
...@@ -239,7 +252,7 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) { ...@@ -239,7 +252,7 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
return; return;
} }
for (uint i = (enable_nss_pin ? 0 : 1); i < 4; i++) { for (uint i = (enable_nss_pin && pins[0] ? 0 : 1); i < 4; i++) {
mp_hal_gpio_set_af(pins[i], &GPIO_InitStructure, AF_FN_SPI, (self - &pyb_spi_obj[0]) + 1); mp_hal_gpio_set_af(pins[i], &GPIO_InitStructure, AF_FN_SPI, (self - &pyb_spi_obj[0]) + 1);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment