Alternative / better fix provided by @pico based on work by @victor_pv. Commented out AF REMAP of NSS in spi_f1.c
This commit is contained in:
parent
ece9c3681d
commit
657d6dae02
|
@ -63,7 +63,7 @@ void spi_config_gpios(spi_dev *ignored,
|
|||
uint8 miso_bit,
|
||||
uint8 mosi_bit) {
|
||||
if (as_master) {
|
||||
gpio_set_mode(nss_dev, nss_bit, GPIO_AF_OUTPUT_PP);
|
||||
// gpio_set_mode(nss_dev, nss_bit, GPIO_AF_OUTPUT_PP);// Roger Clark. Commented out, so that NSS can be driven as a normal GPIO pin during SPI use
|
||||
gpio_set_mode(comm_dev, sck_bit, GPIO_AF_OUTPUT_PP);
|
||||
gpio_set_mode(comm_dev, miso_bit, GPIO_INPUT_FLOATING);
|
||||
gpio_set_mode(comm_dev, mosi_bit, GPIO_AF_OUTPUT_PP);
|
||||
|
|
|
@ -119,34 +119,6 @@ SPIClass::SPIClass(uint32 spi_num) {
|
|||
*/
|
||||
|
||||
void SPIClass::begin(void) {
|
||||
gpio_pin_mode nssPinMode;
|
||||
int nssPin;
|
||||
if (dataMode >= 4) {
|
||||
ASSERT(0);
|
||||
return;
|
||||
}
|
||||
|
||||
#if BOARD_NR_SPI >= 1
|
||||
if (this->spi_d == SPI1)
|
||||
{
|
||||
nssPin=BOARD_SPI1_NSS_PIN;
|
||||
}
|
||||
#endif
|
||||
#if BOARD_NR_SPI >= 2
|
||||
if (this->spi_d == SPI2)
|
||||
{
|
||||
nssPin=BOARD_SPI2_NSS_PIN;
|
||||
}
|
||||
#endif
|
||||
#if BOARD_NR_SPI >= 3
|
||||
if (this->spi_d == SPI3)
|
||||
{
|
||||
nssPin=BOARD_SPI3_NSS_PIN;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
nssPinMode = gpio_get_mode(PIN_MAP[nssPin].gpio_device, PIN_MAP[nssPin].gpio_bit);// get and save NSS pin mode
|
||||
|
||||
uint32 flags = ((bitOrder == MSBFIRST ? SPI_FRAME_MSB : SPI_FRAME_LSB) | SPI_DFF_8_BIT | SPI_SW_SLAVE | SPI_SOFT_SS);
|
||||
spi_init(spi_d);
|
||||
|
@ -155,7 +127,6 @@ void SPIClass::begin(void) {
|
|||
Serial.print("spi_master_enable("); Serial.print(clockDivider); Serial.print(","); Serial.print(dataMode); Serial.print(","); Serial.print(flags); Serial.println(")");
|
||||
#endif
|
||||
spi_master_enable(spi_d, (spi_baud_rate)clockDivider, (spi_mode)dataMode, flags);
|
||||
gpio_set_mode(PIN_MAP[nssPin].gpio_device, PIN_MAP[nssPin].gpio_bit, nssPinMode);// restore pin mode of nss pin (work around for bug in the STM32)
|
||||
}
|
||||
|
||||
void SPIClass::beginSlave(void) {
|
||||
|
|
Loading…
Reference in New Issue