mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-23 08:07:35 +08:00
fmu-v5 board_config: set up external spi
This commit is contained in:
committed by
David Sidrane
parent
74dfa8805f
commit
1e86f24cf9
@@ -120,10 +120,11 @@ __BEGIN_DECLS
|
||||
* MEMORY is on bus SPI2
|
||||
* MS5611 is on bus SPI4
|
||||
*/
|
||||
#define PX4_SPI_BUS_SENSORS 1
|
||||
#define PX4_SPI_BUS_MEMORY 2
|
||||
#define PX4_SPI_BUS_BARO 4
|
||||
#define PX4_SPI_BUS_EXTERNAL 6
|
||||
#define PX4_SPI_BUS_SENSORS 1
|
||||
#define PX4_SPI_BUS_MEMORY 2
|
||||
#define PX4_SPI_BUS_BARO 4
|
||||
#define PX4_SPI_BUS_EXTERNAL1 5
|
||||
#define PX4_SPI_BUS_EXTERNAL2 6
|
||||
|
||||
/* v BEGIN Legacy SPI defines TODO: fix this with enumeration */
|
||||
#define PX4_SPI_BUS_RAMTRON PX4_SPI_BUS_MEMORY
|
||||
@@ -151,18 +152,21 @@ __BEGIN_DECLS
|
||||
#define PX4_BARO_BUS_FIRST_CS PX4_SPIDEV_BARO
|
||||
#define PX4_BARO_BUS_LAST_CS PX4_SPIDEV_BARO
|
||||
|
||||
#define PX4_SPIDEV_EXTERNAL1 PX4_MK_SPI_SEL(PX4_SPI_BUS_EXTERNAL,0)
|
||||
#define PX4_SPIDEV_EXTERNAL2 PX4_MK_SPI_SEL(PX4_SPI_BUS_EXTERNAL,1)
|
||||
#define PX4_SPIDEV_EXTERNAL3 PX4_MK_SPI_SEL(PX4_SPI_BUS_EXTERNAL,2)
|
||||
#define PX4_SPIDEV_EXTERNAL4 PX4_MK_SPI_SEL(PX4_SPI_BUS_EXTERNAL,3)
|
||||
#define PX4_SPIDEV_EXTERNAL5 PX4_MK_SPI_SEL(PX4_SPI_BUS_EXTERNAL,4)
|
||||
#define PX4_SPIDEV_EXTERNAL6 PX4_MK_SPI_SEL(PX4_SPI_BUS_EXTERNAL,5)
|
||||
#define PX4_EXTERNAL_BUS_CS_GPIO {SPI5_CS1_EXTERNAL1, SPI5_CS2_EXTERNAL1, \
|
||||
SPI5_CS3_EXTERNAL1, \
|
||||
SPI6_CS1_EXTERNAL2, SPI6_CS2_EXTERNAL2, \
|
||||
#define PX4_SPIDEV_EXTERNAL1_1 PX4_MK_SPI_SEL(PX4_SPI_BUS_EXTERNAL1,0)
|
||||
#define PX4_SPIDEV_EXTERNAL1_2 PX4_MK_SPI_SEL(PX4_SPI_BUS_EXTERNAL1,1)
|
||||
#define PX4_SPIDEV_EXTERNAL1_3 PX4_MK_SPI_SEL(PX4_SPI_BUS_EXTERNAL1,2)
|
||||
#define PX4_EXTERNAL1_BUS_CS_GPIO {SPI5_CS1_EXTERNAL1, SPI5_CS2_EXTERNAL1, \
|
||||
SPI5_CS3_EXTERNAL1}
|
||||
#define PX4_EXTERNAL1_BUS_FIRST_CS PX4_SPIDEV_EXTERNAL1_1
|
||||
#define PX4_EXTERNAL1_BUS_LAST_CS PX4_SPIDEV_EXTERNAL1_3
|
||||
|
||||
#define PX4_SPIDEV_EXTERNAL2_1 PX4_MK_SPI_SEL(PX4_SPI_BUS_EXTERNAL2,0)
|
||||
#define PX4_SPIDEV_EXTERNAL2_2 PX4_MK_SPI_SEL(PX4_SPI_BUS_EXTERNAL2,1)
|
||||
#define PX4_SPIDEV_EXTERNAL2_3 PX4_MK_SPI_SEL(PX4_SPI_BUS_EXTERNAL2,2)
|
||||
#define PX4_EXTERNAL2_BUS_CS_GPIO {SPI6_CS1_EXTERNAL2, SPI6_CS2_EXTERNAL2, \
|
||||
SPI6_CS3_EXTERNAL2}
|
||||
#define PX4_EXTERNAL_BUS_FIRST_CS PX4_SPIDEV_EXTERNAL1
|
||||
#define PX4_EXTERNAL_BUS_LAST_CS PX4_SPIDEV_EXTERNAL6
|
||||
#define PX4_EXTERNAL2_BUS_FIRST_CS PX4_SPIDEV_EXTERNAL2_1
|
||||
#define PX4_EXTERNAL2_BUS_LAST_CS PX4_SPIDEV_EXTERNAL2_3
|
||||
|
||||
|
||||
/* I2C busses */
|
||||
|
||||
@@ -88,11 +88,10 @@ static const uint32_t spi3selects_gpio[] = {FIXME};
|
||||
#error Need to define SPI3 Usage
|
||||
#endif
|
||||
static const uint32_t spi4selects_gpio[] = PX4_BARO_BUS_CS_GPIO;
|
||||
#ifdef CONFIG_STM32F7_SPI3
|
||||
static const uint32_t spi5selects_gpio[] = {FIXME};;
|
||||
#error Need to define SPI5 Usage
|
||||
#ifdef CONFIG_STM32F7_SPI5
|
||||
static const uint32_t spi5selects_gpio[] = PX4_EXTERNAL1_BUS_CS_GPIO;
|
||||
#endif
|
||||
static const uint32_t spi6selects_gpio[] = PX4_EXTERNAL_BUS_CS_GPIO;
|
||||
static const uint32_t spi6selects_gpio[] = PX4_EXTERNAL2_BUS_CS_GPIO;
|
||||
|
||||
|
||||
/************************************************************************************
|
||||
@@ -242,12 +241,12 @@ __EXPORT int stm32_spi_bus_initialize(void)
|
||||
SPI_SELECT(spi_baro, cs, false);
|
||||
}
|
||||
|
||||
/* Get the SPI port for the PX4_SPI_EXTERNAL */
|
||||
/* Get the SPI port for the PX4_SPI_EXTERNAL1 */
|
||||
|
||||
spi_ext = stm32_spibus_initialize(PX4_SPI_BUS_EXTERNAL);
|
||||
spi_ext = stm32_spibus_initialize(PX4_SPI_BUS_EXTERNAL1);
|
||||
|
||||
if (!spi_ext) {
|
||||
message("[boot] FAILED to initialize SPI port %d\n", PX4_SPI_BUS_EXTERNAL);
|
||||
message("[boot] FAILED to initialize SPI port %d\n", PX4_SPI_BUS_EXTERNAL1);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@@ -255,7 +254,24 @@ __EXPORT int stm32_spi_bus_initialize(void)
|
||||
SPI_SETBITS(spi_ext, 8);
|
||||
SPI_SETMODE(spi_ext, SPIDEV_MODE3);
|
||||
|
||||
for (int cs = PX4_EXTERNAL_BUS_FIRST_CS; cs <= PX4_EXTERNAL_BUS_LAST_CS; cs++) {
|
||||
for (int cs = PX4_EXTERNAL1_BUS_FIRST_CS; cs <= PX4_EXTERNAL1_BUS_LAST_CS; cs++) {
|
||||
SPI_SELECT(spi_ext, cs, false);
|
||||
}
|
||||
|
||||
/* Get the SPI port for the PX4_SPI_EXTERNAL2 */
|
||||
|
||||
spi_ext = stm32_spibus_initialize(PX4_SPI_BUS_EXTERNAL2);
|
||||
|
||||
if (!spi_ext) {
|
||||
message("[boot] FAILED to initialize SPI port %d\n", PX4_SPI_BUS_EXTERNAL2);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
SPI_SETFREQUENCY(spi_ext, 8 * 1000 * 1000);
|
||||
SPI_SETBITS(spi_ext, 8);
|
||||
SPI_SETMODE(spi_ext, SPIDEV_MODE3);
|
||||
|
||||
for (int cs = PX4_EXTERNAL2_BUS_FIRST_CS; cs <= PX4_EXTERNAL2_BUS_LAST_CS; cs++) {
|
||||
SPI_SELECT(spi_ext, cs, false);
|
||||
}
|
||||
|
||||
@@ -421,7 +437,7 @@ __EXPORT void stm32_spi5select(FAR struct spi_dev_s *dev, enum spi_dev_e devid,
|
||||
|
||||
int sel = (int) devid;
|
||||
|
||||
ASSERT(PX4_SPI_BUS_ID(sel) == FIXME);
|
||||
ASSERT(PX4_SPI_BUS_ID(sel) == PX4_SPI_BUS_EXTERNAL1);
|
||||
|
||||
/* Making sure the other peripherals are not selected */
|
||||
for (int cs = 0; arraySize(spi5selects_gpio) > 1 && cs < arraySize(spi5selects_gpio); cs++) {
|
||||
@@ -455,7 +471,7 @@ __EXPORT void stm32_spi6select(FAR struct spi_dev_s *dev, enum spi_dev_e devid,
|
||||
|
||||
int sel = (int) devid;
|
||||
|
||||
ASSERT(PX4_SPI_BUS_ID(sel) == PX4_SPI_BUS_EXTERNAL);
|
||||
ASSERT(PX4_SPI_BUS_ID(sel) == PX4_SPI_BUS_EXTERNAL2);
|
||||
|
||||
/* Making sure the other peripherals are not selected */
|
||||
for (int cs = 0; arraySize(spi6selects_gpio) > 1 && cs < arraySize(spi6selects_gpio); cs++) {
|
||||
|
||||
Reference in New Issue
Block a user