Skip to content

Commit e1b85b7

Browse files
committed
fix LeafLab code for spi_config_gpios() which can't tolerate different GPIOs port for SPI pins
1 parent 01237a0 commit e1b85b7

5 files changed

Lines changed: 29 additions & 46 deletions

File tree

STM32F4/cores/maple/libmaple/HardwareSPI.cpp

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -385,21 +385,15 @@ static void configure_gpios(spi_dev *dev, bool as_master) {
385385
#endif
386386

387387
if(nssi) {
388-
spi_gpio_cfg(as_master,
389-
nssi->gpio_device,
390-
nssi->gpio_bit,
391-
scki->gpio_device,
392-
scki->gpio_bit,
393-
misoi->gpio_bit,
394-
mosii->gpio_bit);
388+
spi_config_gpios(dev, as_master, nssi->gpio_device, nssi->gpio_bit,
389+
scki->gpio_device, scki->gpio_bit,
390+
misoi->gpio_device, misoi->gpio_bit,
391+
mosii->gpio_device, mosii->gpio_bit);
395392
} else {
396-
spi_gpio_cfg(as_master,
397-
NULL,
398-
-1,
399-
scki->gpio_device,
400-
scki->gpio_bit,
401-
misoi->gpio_bit,
402-
mosii->gpio_bit);
393+
spi_config_gpios(dev, as_master, NULL, -1,
394+
scki->gpio_device, scki->gpio_bit,
395+
misoi->gpio_device, misoi->gpio_bit,
396+
mosii->gpio_device, mosii->gpio_bit);
403397
}
404398
}
405399

STM32F4/cores/maple/libmaple/spi.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,18 +221,22 @@ struct gpio_dev;
221221
* @param as_master If true, configure as bus master; otherwise, as slave.
222222
* @param nss_dev NSS pin's GPIO device
223223
* @param nss_bit NSS pin's GPIO bit on nss_dev
224-
* @param comm_dev SCK, MISO, MOSI pins' GPIO device
224+
* @param sck_dev SCK pin's GPIO device
225225
* @param sck_bit SCK pin's GPIO bit on comm_dev
226+
* @param miso_dev MISO pin's GPIO device
226227
* @param miso_bit MISO pin's GPIO bit on comm_dev
228+
* @param mosi_dev MOSI pin's GPIO device
227229
* @param mosi_bit MOSI pin's GPIO bit on comm_dev
228230
*/
229231
extern void spi_config_gpios(spi_dev *dev,
230232
uint8 as_master,
231233
struct gpio_dev *nss_dev,
232234
uint8 nss_bit,
233-
struct gpio_dev *comm_dev,
235+
struct gpio_dev *sck_dev,
234236
uint8 sck_bit,
237+
struct gpio_dev *miso_dev,
235238
uint8 miso_bit,
239+
struct gpio_dev *mosi_dev,
236240
uint8 mosi_bit);
237241

238242
/**

STM32F4/cores/maple/libmaple/spiF4.h

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -70,27 +70,9 @@ extern struct spi_dev *SPI3;
7070
struct gpio_dev;
7171
extern void spi_config_gpios(struct spi_dev*, uint8,
7272
struct gpio_dev*, uint8,
73-
struct gpio_dev*, uint8, uint8, uint8);
74-
/**
75-
* @brief Deprecated. Use spi_config_gpios() instead.
76-
* @see spi_config_gpios()
77-
*/
78-
static __always_inline void spi_gpio_cfg(uint8 as_master,
79-
struct gpio_dev *nss_dev,
80-
uint8 nss_bit,
81-
struct gpio_dev *comm_dev,
82-
uint8 sck_bit,
83-
uint8 miso_bit,
84-
uint8 mosi_bit) {
85-
/* We switched style globally to foo_config_gpios() and always
86-
* taking a foo_dev* argument (that last bit is the important
87-
* part) after this function was written.
88-
*
89-
* However, spi_config_gpios() just ignores the spi_dev* on F1, so
90-
* we can still keep this around for older code. */
91-
spi_config_gpios(NULL, as_master, nss_dev, nss_bit,
92-
comm_dev, sck_bit, miso_bit, mosi_bit);
93-
}
73+
struct gpio_dev*, uint8,
74+
struct gpio_dev*, uint8,
75+
struct gpio_dev*, uint8);
9476

9577
#ifdef __cplusplus
9678
}

STM32F4/cores/maple/libmaple/spi_f4.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,21 +58,23 @@ void spi_config_gpios(spi_dev *ignored,
5858
uint8 as_master,
5959
gpio_dev *nss_dev,
6060
uint8 nss_bit,
61-
gpio_dev *comm_dev,
61+
gpio_dev *sck_dev,
6262
uint8 sck_bit,
63+
gpio_dev *miso_dev,
6364
uint8 miso_bit,
65+
gpio_dev *mosi_dev,
6466
uint8 mosi_bit) {
6567
if (as_master) {
6668
// gpio_set_mode(nss_dev, nss_bit, GPIO_AF_OUTPUT_PP);
67-
gpio_set_mode(comm_dev, sck_bit, GPIO_AF_OUTPUT_PP);
69+
gpio_set_mode(sck_dev, sck_bit, GPIO_AF_OUTPUT_PP);
6870
// gpio_set_mode(comm_dev, miso_bit, GPIO_INPUT_FLOATING);
69-
gpio_set_mode(comm_dev, miso_bit, GPIO_AF_INPUT_PD);
70-
gpio_set_mode(comm_dev, mosi_bit, GPIO_AF_OUTPUT_PP);
71+
gpio_set_mode(miso_dev, miso_bit, GPIO_AF_INPUT_PD);
72+
gpio_set_mode(mosi_dev, mosi_bit, GPIO_AF_OUTPUT_PP);
7173
} else {
7274
gpio_set_mode(nss_dev, nss_bit, GPIO_INPUT_FLOATING);
73-
gpio_set_mode(comm_dev, sck_bit, GPIO_INPUT_FLOATING);
74-
gpio_set_mode(comm_dev, miso_bit, GPIO_AF_OUTPUT_PP);
75-
gpio_set_mode(comm_dev, mosi_bit, GPIO_INPUT_FLOATING);
75+
gpio_set_mode(sck_dev, sck_bit, GPIO_INPUT_FLOATING);
76+
gpio_set_mode(miso_dev, miso_bit, GPIO_AF_OUTPUT_PP);
77+
gpio_set_mode(mosi_dev, mosi_bit, GPIO_INPUT_FLOATING);
7678
}
7779
}
7880

STM32F4/libraries/SPI/src/SPI.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -605,8 +605,9 @@ static void configure_gpios(spi_dev *dev, bool as_master) {
605605
#endif
606606

607607
spi_config_gpios(dev, as_master, nssi->gpio_device, nssi->gpio_bit,
608-
scki->gpio_device, scki->gpio_bit, misoi->gpio_bit,
609-
mosii->gpio_bit);
608+
scki->gpio_device, scki->gpio_bit,
609+
misoi->gpio_device, misoi->gpio_bit,
610+
mosii->gpio_device, mosii->gpio_bit);
610611
}
611612

612613
static const spi_baud_rate baud_rates[8] __FLASH__ = {

0 commit comments

Comments
 (0)