Skip to content

Commit 657d6da

Browse files
Alternative / better fix provided by @Pico based on work by @victor_pv. Commented out AF REMAP of NSS in spi_f1.c
1 parent ece9c36 commit 657d6da

2 files changed

Lines changed: 1 addition & 30 deletions

File tree

STM32F1/cores/maple/libmaple/spi_f1.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ void spi_config_gpios(spi_dev *ignored,
6363
uint8 miso_bit,
6464
uint8 mosi_bit) {
6565
if (as_master) {
66-
gpio_set_mode(nss_dev, nss_bit, GPIO_AF_OUTPUT_PP);
66+
// 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
6767
gpio_set_mode(comm_dev, sck_bit, GPIO_AF_OUTPUT_PP);
6868
gpio_set_mode(comm_dev, miso_bit, GPIO_INPUT_FLOATING);
6969
gpio_set_mode(comm_dev, mosi_bit, GPIO_AF_OUTPUT_PP);

STM32F1/libraries/SPI/src/SPI.cpp

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -119,34 +119,6 @@ SPIClass::SPIClass(uint32 spi_num) {
119119
*/
120120

121121
void SPIClass::begin(void) {
122-
gpio_pin_mode nssPinMode;
123-
int nssPin;
124-
if (dataMode >= 4) {
125-
ASSERT(0);
126-
return;
127-
}
128-
129-
#if BOARD_NR_SPI >= 1
130-
if (this->spi_d == SPI1)
131-
{
132-
nssPin=BOARD_SPI1_NSS_PIN;
133-
}
134-
#endif
135-
#if BOARD_NR_SPI >= 2
136-
if (this->spi_d == SPI2)
137-
{
138-
nssPin=BOARD_SPI2_NSS_PIN;
139-
}
140-
#endif
141-
#if BOARD_NR_SPI >= 3
142-
if (this->spi_d == SPI3)
143-
{
144-
nssPin=BOARD_SPI3_NSS_PIN;
145-
}
146-
#endif
147-
148-
149-
nssPinMode = gpio_get_mode(PIN_MAP[nssPin].gpio_device, PIN_MAP[nssPin].gpio_bit);// get and save NSS pin mode
150122

151123
uint32 flags = ((bitOrder == MSBFIRST ? SPI_FRAME_MSB : SPI_FRAME_LSB) | SPI_DFF_8_BIT | SPI_SW_SLAVE | SPI_SOFT_SS);
152124
spi_init(spi_d);
@@ -155,7 +127,6 @@ void SPIClass::begin(void) {
155127
Serial.print("spi_master_enable("); Serial.print(clockDivider); Serial.print(","); Serial.print(dataMode); Serial.print(","); Serial.print(flags); Serial.println(")");
156128
#endif
157129
spi_master_enable(spi_d, (spi_baud_rate)clockDivider, (spi_mode)dataMode, flags);
158-
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)
159130
}
160131

161132
void SPIClass::beginSlave(void) {

0 commit comments

Comments
 (0)