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

Skip to content

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Nov 27, 2024. It is now read-only.

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