@@ -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