8000 stmhal: Make SPI NSS pin definition optional. · sparkfun/circuitpython@460bcec · GitHub
[go: up one dir, main page]

Skip to content

Commit 460bcec

Browse files
dhylandspfalcon
authored andcommitted
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.
1 parent afd4909 commit 460bcec

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

stmhal/spi.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,12 +172,15 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
172172

173173
const pyb_spi_obj_t *self;
174174
const pin_obj_t *pins[4];
175+
pins[0] = NULL;
175176

176177
if (0) {
177178
#if defined(MICROPY_HW_SPI1_SCK)
178179
} else if (spi->Instance == SPI1) {
179180
self = &pyb_spi_obj[0];
181+
#if defined(MICROPY_HW_SPI1_NSS)
180182
pins[0] = &MICROPY_HW_SPI1_NSS;
183+
#endif
181184
pins[1] = &MICROPY_HW_SPI1_SCK;
182185
pins[2] = &MICROPY_HW_SPI1_MISO;
183186
pins[3] = &MICROPY_HW_SPI1_MOSI;
@@ -187,7 +190,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
187190
#if defined(MICROPY_HW_SPI2_SCK)
188191
} else if (spi->Instance == SPI2) {
189192
self = &pyb_spi_obj[1];
193+
#if defined(MICROPY_HW_SPI2_NSS)
190194
pins[0] = &MICROPY_HW_SPI2_NSS;
195+
#endif
191196
pins[1] = &MICROPY_HW_SPI2_SCK;
192197
pins[2] = &MICROPY_HW_SPI2_MISO;
193198
pins[3] = &MICROPY_HW_SPI2_MOSI;
@@ -197,7 +202,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
197202
#if defined(MICROPY_HW_SPI3_SCK)
198203
} else if (spi->Instance == SPI3) {
199204
self = &pyb_spi_obj[2];
205+
#if defined(MICROPY_HW_SPI3_NSS)
200206
pins[0] = &MICROPY_HW_SPI3_NSS;
207+
#endif
201208
pins[1] = &MICROPY_HW_SPI3_SCK;
202209
pins[2] = &MICROPY_HW_SPI3_MISO;
203210
pins[3] = &MICROPY_HW_SPI3_MOSI;
@@ -207,7 +214,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
207214
#if defined(MICROPY_HW_SPI4_SCK)
208215
} else if (spi->Instance == SPI4) {
209216
self = &pyb_spi_obj[3];
217+
#if defined(MICROPY_HW_SPI4_NSS)
210218
pins[0] = &MICROPY_HW_SPI4_NSS;
219+
#endif
211220
pins[1] = &MICROPY_HW_SPI4_SCK;
212221
pins[2] = &MICROPY_HW_SPI4_MISO;
213222
pins[3] = &MICROPY_HW_SPI4_MOSI;
@@ -217,7 +226,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
217226
#if defined(MICROPY_HW_SPI5_SCK)
218227
} else if (spi->Instance == SPI5) {
219228
self = &pyb_spi_obj[4];
229+
#if defined(MICROPY_HW_SPI5_NSS)
220230
pins[0] = &MICROPY_HW_SPI5_NSS;
231+
#endif
221232
pins[1] = &MICROPY_HW_SPI5_SCK;
222233
pins[2] = &MICROPY_HW_SPI5_MISO;
223234
pins[3] = &MICROPY_HW_SPI5_MOSI;
@@ -227,7 +238,9 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
227238
#if defined(MICROPY_HW_SPI6_SCK)
228239
} else if (spi->Instance == SPI6) {
229240
self = &pyb_spi_obj[5];
241+
#if defined(MICROPY_HW_SPI6_NSS)
230242
pins[0] = &MICROPY_HW_SPI6_NSS;
243+
#endif
231244
pins[1] = &MICROPY_HW_SPI6_SCK;
232245
pins[2] = &MICROPY_HW_SPI6_MISO;
233246
pins[3] = &MICROPY_HW_SPI6_MOSI;
@@ -239,7 +252,7 @@ void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) {
239252
return;
240253
}
241254

242-
for (uint i = (enable_nss_pin ? 0 : 1); i < 4; i++) {
255+
for (uint i = (enable_nss_pin && pins[0] ? 0 : 1); i < 4; i++) {
243256
mp_hal_gpio_set_af(pins[i], &GPIO_InitStructure, AF_FN_SPI, (self - &pyb_spi_obj[0]) + 1);
244257
}
245258

0 commit comments

Comments
 (0)
0