fix LeafLab code for spi_config_gpios() which can't tolerate different GPIOs port for SPI pins
This commit is contained in:
parent
01237a0934
commit
e1b85b7774
|
@ -385,21 +385,15 @@ static void configure_gpios(spi_dev *dev, bool as_master) {
|
|||
#endif
|
||||
|
||||
if(nssi) {
|
||||
spi_gpio_cfg(as_master,
|
||||
nssi->gpio_device,
|
||||
nssi->gpio_bit,
|
||||
scki->gpio_device,
|
||||
scki->gpio_bit,
|
||||
misoi->gpio_bit,
|
||||
mosii->gpio_bit);
|
||||
spi_config_gpios(dev, as_master, nssi->gpio_device, nssi->gpio_bit,
|
||||
scki->gpio_device, scki->gpio_bit,
|
||||
misoi->gpio_device, misoi->gpio_bit,
|
||||
mosii->gpio_device, mosii->gpio_bit);
|
||||
} else {
|
||||
spi_gpio_cfg(as_master,
|
||||
NULL,
|
||||
-1,
|
||||
scki->gpio_device,
|
||||
scki->gpio_bit,
|
||||
misoi->gpio_bit,
|
||||
mosii->gpio_bit);
|
||||
spi_config_gpios(dev, as_master, NULL, -1,
|
||||
scki->gpio_device, scki->gpio_bit,
|
||||
misoi->gpio_device, misoi->gpio_bit,
|
||||
mosii->gpio_device, mosii->gpio_bit);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -221,18 +221,22 @@ struct gpio_dev;
|
|||
* @param as_master If true, configure as bus master; otherwise, as slave.
|
||||
* @param nss_dev NSS pin's GPIO device
|
||||
* @param nss_bit NSS pin's GPIO bit on nss_dev
|
||||
* @param comm_dev SCK, MISO, MOSI pins' GPIO device
|
||||
* @param sck_dev SCK pin's GPIO device
|
||||
* @param sck_bit SCK pin's GPIO bit on comm_dev
|
||||
* @param miso_dev MISO pin's GPIO device
|
||||
* @param miso_bit MISO pin's GPIO bit on comm_dev
|
||||
* @param mosi_dev MOSI pin's GPIO device
|
||||
* @param mosi_bit MOSI pin's GPIO bit on comm_dev
|
||||
*/
|
||||
extern void spi_config_gpios(spi_dev *dev,
|
||||
uint8 as_master,
|
||||
struct gpio_dev *nss_dev,
|
||||
uint8 nss_bit,
|
||||
struct gpio_dev *comm_dev,
|
||||
struct gpio_dev *sck_dev,
|
||||
uint8 sck_bit,
|
||||
struct gpio_dev *miso_dev,
|
||||
uint8 miso_bit,
|
||||
struct gpio_dev *mosi_dev,
|
||||
uint8 mosi_bit);
|
||||
|
||||
/**
|
||||
|
|
|
@ -70,27 +70,9 @@ extern struct spi_dev *SPI3;
|
|||
struct gpio_dev;
|
||||
extern void spi_config_gpios(struct spi_dev*, uint8,
|
||||
struct gpio_dev*, uint8,
|
||||
struct gpio_dev*, uint8, uint8, uint8);
|
||||
/**
|
||||
* @brief Deprecated. Use spi_config_gpios() instead.
|
||||
* @see spi_config_gpios()
|
||||
*/
|
||||
static __always_inline void spi_gpio_cfg(uint8 as_master,
|
||||
struct gpio_dev *nss_dev,
|
||||
uint8 nss_bit,
|
||||
struct gpio_dev *comm_dev,
|
||||
uint8 sck_bit,
|
||||
uint8 miso_bit,
|
||||
uint8 mosi_bit) {
|
||||
/* We switched style globally to foo_config_gpios() and always
|
||||
* taking a foo_dev* argument (that last bit is the important
|
||||
* part) after this function was written.
|
||||
*
|
||||
* However, spi_config_gpios() just ignores the spi_dev* on F1, so
|
||||
* we can still keep this around for older code. */
|
||||
spi_config_gpios(NULL, as_master, nss_dev, nss_bit,
|
||||
comm_dev, sck_bit, miso_bit, mosi_bit);
|
||||
}
|
||||
struct gpio_dev*, uint8,
|
||||
struct gpio_dev*, uint8,
|
||||
struct gpio_dev*, uint8);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -58,21 +58,23 @@ void spi_config_gpios(spi_dev *ignored,
|
|||
uint8 as_master,
|
||||
gpio_dev *nss_dev,
|
||||
uint8 nss_bit,
|
||||
gpio_dev *comm_dev,
|
||||
gpio_dev *sck_dev,
|
||||
uint8 sck_bit,
|
||||
gpio_dev *miso_dev,
|
||||
uint8 miso_bit,
|
||||
gpio_dev *mosi_dev,
|
||||
uint8 mosi_bit) {
|
||||
if (as_master) {
|
||||
// gpio_set_mode(nss_dev, nss_bit, GPIO_AF_OUTPUT_PP);
|
||||
gpio_set_mode(comm_dev, sck_bit, GPIO_AF_OUTPUT_PP);
|
||||
gpio_set_mode(sck_dev, sck_bit, GPIO_AF_OUTPUT_PP);
|
||||
// gpio_set_mode(comm_dev, miso_bit, GPIO_INPUT_FLOATING);
|
||||
gpio_set_mode(comm_dev, miso_bit, GPIO_AF_INPUT_PD);
|
||||
gpio_set_mode(comm_dev, mosi_bit, GPIO_AF_OUTPUT_PP);
|
||||
gpio_set_mode(miso_dev, miso_bit, GPIO_AF_INPUT_PD);
|
||||
gpio_set_mode(mosi_dev, mosi_bit, GPIO_AF_OUTPUT_PP);
|
||||
} else {
|
||||
gpio_set_mode(nss_dev, nss_bit, GPIO_INPUT_FLOATING);
|
||||
gpio_set_mode(comm_dev, sck_bit, GPIO_INPUT_FLOATING);
|
||||
gpio_set_mode(comm_dev, miso_bit, GPIO_AF_OUTPUT_PP);
|
||||
gpio_set_mode(comm_dev, mosi_bit, GPIO_INPUT_FLOATING);
|
||||
gpio_set_mode(sck_dev, sck_bit, GPIO_INPUT_FLOATING);
|
||||
gpio_set_mode(miso_dev, miso_bit, GPIO_AF_OUTPUT_PP);
|
||||
gpio_set_mode(mosi_dev, mosi_bit, GPIO_INPUT_FLOATING);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -605,8 +605,9 @@ static void configure_gpios(spi_dev *dev, bool as_master) {
|
|||
#endif
|
||||
|
||||
spi_config_gpios(dev, as_master, nssi->gpio_device, nssi->gpio_bit,
|
||||
scki->gpio_device, scki->gpio_bit, misoi->gpio_bit,
|
||||
mosii->gpio_bit);
|
||||
scki->gpio_device, scki->gpio_bit,
|
||||
misoi->gpio_device, misoi->gpio_bit,
|
||||
mosii->gpio_device, mosii->gpio_bit);
|
||||
}
|
||||
|
||||
static const spi_baud_rate baud_rates[8] __FLASH__ = {
|
||||
|
|
Loading…
Reference in New Issue