diff --git a/drivers/cc3000/src/ccspi.c b/drivers/cc3000/src/ccspi.c index 2abc637fee0849470105b29cda11797cfe712e26..81ea5628dfcc000c9e8cae45eb942d5d4db906d3 100644 --- a/drivers/cc3000/src/ccspi.c +++ b/drivers/cc3000/src/ccspi.c @@ -153,7 +153,7 @@ void SpiOpen(gcSpiHandleRx pfRxHandler) SPI_HANDLE->Init.TIMode = SPI_TIMODE_DISABLED; SPI_HANDLE->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED; SPI_HANDLE->Init.CRCPolynomial = 7; - spi_init(SPI_HANDLE); + spi_init(SPI_HANDLE, false); // configure wlan CS and EN pins GPIO_InitTypeDef GPIO_InitStructure; diff --git a/stmhal/lcd.c b/stmhal/lcd.c index ea7699be7d317df5d13dadd93f6c7cdfbee23f86..a47fffcd94d5a2952b03560744ea5ce48dd5c888 100644 --- a/stmhal/lcd.c +++ b/stmhal/lcd.c @@ -263,7 +263,7 @@ STATIC mp_obj_t pyb_lcd_make_new(mp_obj_t type_in, mp_uint_t n_args, mp_uint_t n init->CRCPolynomial = 0; // init the SPI bus - spi_init(lcd->spi); + spi_init(lcd->spi, false); // set the pins to default values lcd->pin_cs1->gpio->BSRRL = lcd->pin_cs1->pin_mask; diff --git a/stmhal/spi.c b/stmhal/spi.c index 0b825ce1dfe04d85da203d76db74fe5712e98692..007f22daf86ceb560fedf2504bd7a7ae6233d452 100644 --- a/stmhal/spi.c +++ b/stmhal/spi.c @@ -86,7 +86,7 @@ void spi_init0(void) { } // TODO allow to take a list of pins to use -void spi_init(SPI_HandleTypeDef *spi) { +void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin) { // init the GPIO lines GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; @@ -130,7 +130,7 @@ void spi_init(SPI_HandleTypeDef *spi) { return; } - for (uint i = 0; i < 4; i++) { + for (uint i = (enable_nss_pin ? 0 : 1); i < 4; i++) { GPIO_InitStructure.Pin = pins[i]->pin_mask; HAL_GPIO_Init(pins[i]->gpio, &GPIO_InitStructure); } @@ -297,7 +297,7 @@ STATIC mp_obj_t pyb_spi_init_helper(const pyb_spi_obj_t *self, mp_uint_t n_args, } // init the SPI bus - spi_init(self->spi); + spi_init(self->spi, init->NSS != SPI_NSS_SOFT); return mp_const_none; } diff --git a/stmhal/spi.h b/stmhal/spi.h index 1f6e7e7b2d5f1a362f45d78d13e3a2c7e9d41406..9f8155252580e2102d5a4f9c1a89b09eef2e7ce0 100644 --- a/stmhal/spi.h +++ b/stmhal/spi.h @@ -30,5 +30,5 @@ extern SPI_HandleTypeDef SPIHandle3; extern const mp_obj_type_t pyb_spi_type; void spi_init0(void); -void spi_init(SPI_HandleTypeDef *spi); +void spi_init(SPI_HandleTypeDef *spi, bool enable_nss_pin); SPI_HandleTypeDef *spi_get_handle(mp_obj_t o);