mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +08:00
px4fmu-v4pro : Add support for ICM20602
This commit is contained in:
parent
74b0e485e7
commit
588a8d3841
@ -347,6 +347,11 @@ then
|
||||
if mpu6000 -R 2 -T 20608 start
|
||||
then
|
||||
fi
|
||||
|
||||
# Internal SPI bus ICM-20602
|
||||
if mpu6000 -R 2 -T 20602 start
|
||||
then
|
||||
fi
|
||||
|
||||
# Internal SPI bus mpu9250
|
||||
if mpu9250 -R 2 start
|
||||
|
||||
@ -98,7 +98,7 @@ __BEGIN_DECLS
|
||||
#define GPIO_SPI_CS_MPU9250 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN2)
|
||||
#define GPIO_SPI_CS_LIS3MDL (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN15)
|
||||
#define GPIO_SPI_CS_MS5611 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN7)
|
||||
#define GPIO_SPI_CS_ICM_20608_G (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN15)
|
||||
#define GPIO_SPI_CS_ICM_2060X (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN15)
|
||||
#define GPIO_SPI_CS_TEMPCAL_EEPROM (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTH|GPIO_PIN5)
|
||||
|
||||
/* SPI Bus 2 Memory */
|
||||
@ -124,7 +124,7 @@ __BEGIN_DECLS
|
||||
|
||||
#define GPIO_DRDY_MPU9250 (GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTD|GPIO_PIN15)
|
||||
#define GPIO_DRDY_LIS3MDL (GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTE|GPIO_PIN12)
|
||||
#define GPIO_DRDY_ICM_20608_G (GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTC|GPIO_PIN14)
|
||||
#define GPIO_DRDY_ICM_2060X (GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTC|GPIO_PIN14)
|
||||
|
||||
|
||||
/*
|
||||
@ -137,12 +137,12 @@ __BEGIN_DECLS
|
||||
#define GPIO_SPI_CS_OFF_MPU9250 _PIN_OFF(GPIO_SPI_CS_MPU9250)
|
||||
#define GPIO_SPI_CS_OFF_LIS3MDL _PIN_OFF(GPIO_SPI_CS_LIS3MDL)
|
||||
#define GPIO_SPI_CS_OFF_MS5611 _PIN_OFF(GPIO_SPI_CS_MS5611)
|
||||
#define GPIO_SPI_CS_OFF_ICM_20608_G _PIN_OFF(GPIO_SPI_CS_ICM_20608_G)
|
||||
#define GPIO_SPI_CS_OFF_ICM_2060X _PIN_OFF(GPIO_SPI_CS_ICM_2060X)
|
||||
#define GPIO_SPI_CS_OFF_TEMPCAL_EEPROM _PIN_OFF(GPIO_SPI_CS_OFF_TEMPCAL_EEPROM)
|
||||
|
||||
#define GPIO_DRDY_OFF_MPU9250 _PIN_OFF(GPIO_DRDY_MPU9250)
|
||||
#define GPIO_DRDY_OFF_LIS3MDL _PIN_OFF(GPIO_DRDY_LIS3MDL)
|
||||
#define GPIO_DRDY_OFF_ICM_20608_G _PIN_OFF(GPIO_DRDY_ICM_20608_G)
|
||||
#define GPIO_DRDY_OFF_ICM_2060X _PIN_OFF(GPIO_DRDY_ICM_2060X)
|
||||
|
||||
|
||||
/* SPI1 off */
|
||||
@ -172,6 +172,7 @@ __BEGIN_DECLS
|
||||
#define PX4_SPIDEV_EXT1 11
|
||||
#define PX4_SPIDEV_EEPROM 12
|
||||
#define PX4_SPIDEV_ICM_20608 13
|
||||
#define PX4_SPIDEV_ICM_20602 14
|
||||
|
||||
/* I2C busses */
|
||||
#define PX4_I2C_BUS_ONBOARD 1
|
||||
|
||||
@ -75,12 +75,12 @@ __EXPORT void stm32_spiinitialize(void)
|
||||
stm32_configgpio(GPIO_SPI_CS_MPU9250);
|
||||
stm32_configgpio(GPIO_SPI_CS_LIS3MDL);
|
||||
stm32_configgpio(GPIO_SPI_CS_MS5611);
|
||||
stm32_configgpio(GPIO_SPI_CS_ICM_20608_G);
|
||||
stm32_configgpio(GPIO_SPI_CS_ICM_2060X);
|
||||
stm32_configgpio(GPIO_SPI_CS_TEMPCAL_EEPROM);
|
||||
|
||||
stm32_configgpio(GPIO_DRDY_MPU9250);
|
||||
stm32_configgpio(GPIO_DRDY_LIS3MDL);
|
||||
stm32_configgpio(GPIO_DRDY_ICM_20608_G);
|
||||
stm32_configgpio(GPIO_DRDY_ICM_2060X);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_STM32_SPI2
|
||||
@ -100,12 +100,20 @@ __EXPORT void stm32_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid,
|
||||
/* SPI select is active low, so write !selected to select the device */
|
||||
|
||||
switch (devid) {
|
||||
|
||||
case PX4_SPIDEV_ICM:
|
||||
/* Intended fallthrough */
|
||||
|
||||
case PX4_SPIDEV_ICM_20602:
|
||||
/* Intended fallthrough */
|
||||
|
||||
case PX4_SPIDEV_ICM_20608:
|
||||
|
||||
/* Making sure the other peripherals are not selected */
|
||||
stm32_gpiowrite(GPIO_SPI_CS_MPU9250, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_LIS3MDL, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_MS5611, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_ICM_20608_G, !selected);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_ICM_2060X, !selected);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_TEMPCAL_EEPROM, 1);
|
||||
break;
|
||||
|
||||
@ -114,7 +122,7 @@ __EXPORT void stm32_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid,
|
||||
stm32_gpiowrite(GPIO_SPI_CS_MPU9250, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_LIS3MDL, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_MS5611, !selected);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_ICM_20608_G, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_ICM_2060X, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_TEMPCAL_EEPROM, 1);
|
||||
break;
|
||||
|
||||
@ -123,7 +131,7 @@ __EXPORT void stm32_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid,
|
||||
stm32_gpiowrite(GPIO_SPI_CS_MPU9250, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_LIS3MDL, !selected);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_MS5611, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_ICM_20608_G, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_ICM_2060X, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_TEMPCAL_EEPROM, 1);
|
||||
break;
|
||||
|
||||
@ -132,7 +140,7 @@ __EXPORT void stm32_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid,
|
||||
stm32_gpiowrite(GPIO_SPI_CS_MPU9250, !selected);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_LIS3MDL, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_MS5611, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_ICM_20608_G, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_ICM_2060X, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_TEMPCAL_EEPROM, 1);
|
||||
break;
|
||||
|
||||
@ -141,7 +149,7 @@ __EXPORT void stm32_spi1select(FAR struct spi_dev_s *dev, enum spi_dev_e devid,
|
||||
stm32_gpiowrite(GPIO_SPI_CS_MPU9250, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_LIS3MDL, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_MS5611, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_ICM_20608_G, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_ICM_2060X, 1);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_TEMPCAL_EEPROM, !selected);
|
||||
break;
|
||||
|
||||
@ -217,13 +225,13 @@ __EXPORT void board_spi_reset(int ms)
|
||||
stm32_configgpio(GPIO_SPI_CS_OFF_MPU9250);
|
||||
stm32_configgpio(GPIO_SPI_CS_OFF_LIS3MDL);
|
||||
stm32_configgpio(GPIO_SPI_CS_OFF_MS5611);
|
||||
stm32_configgpio(GPIO_SPI_CS_OFF_ICM_20608_G);
|
||||
stm32_configgpio(GPIO_SPI_CS_OFF_ICM_2060X);
|
||||
stm32_configgpio(GPIO_SPI_CS_TEMPCAL_EEPROM);
|
||||
|
||||
stm32_gpiowrite(GPIO_SPI_CS_OFF_MPU9250, 0);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_OFF_LIS3MDL, 0);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_OFF_MS5611, 0);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_OFF_ICM_20608_G, 0);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_OFF_ICM_2060X, 0);
|
||||
stm32_gpiowrite(GPIO_SPI_CS_TEMPCAL_EEPROM, 0);
|
||||
|
||||
stm32_configgpio(GPIO_SPI1_SCK_OFF);
|
||||
@ -236,11 +244,11 @@ __EXPORT void board_spi_reset(int ms)
|
||||
|
||||
stm32_configgpio(GPIO_DRDY_OFF_MPU9250);
|
||||
stm32_configgpio(GPIO_DRDY_OFF_LIS3MDL);
|
||||
stm32_configgpio(GPIO_DRDY_OFF_ICM_20608_G);
|
||||
stm32_configgpio(GPIO_DRDY_OFF_ICM_2060X);
|
||||
|
||||
stm32_gpiowrite(GPIO_DRDY_OFF_MPU9250, 0);
|
||||
stm32_gpiowrite(GPIO_DRDY_OFF_LIS3MDL, 0);
|
||||
stm32_gpiowrite(GPIO_DRDY_OFF_ICM_20608_G, 0);
|
||||
stm32_gpiowrite(GPIO_DRDY_OFF_ICM_2060X, 0);
|
||||
|
||||
/* set the sensor rail off */
|
||||
stm32_configgpio(GPIO_VDD_3V3_SENSORS_EN);
|
||||
@ -263,7 +271,7 @@ __EXPORT void board_spi_reset(int ms)
|
||||
stm32_configgpio(GPIO_SPI_CS_MPU9250);
|
||||
stm32_configgpio(GPIO_SPI_CS_LIS3MDL);
|
||||
stm32_configgpio(GPIO_SPI_CS_MS5611);
|
||||
stm32_configgpio(GPIO_SPI_CS_ICM_20608_G);
|
||||
stm32_configgpio(GPIO_SPI_CS_ICM_2060X);
|
||||
stm32_configgpio(GPIO_SPI_CS_TEMPCAL_EEPROM);
|
||||
|
||||
stm32_configgpio(GPIO_SPI1_SCK);
|
||||
@ -273,7 +281,7 @@ __EXPORT void board_spi_reset(int ms)
|
||||
/* bring up the EXTI pins again */
|
||||
stm32_configgpio(GPIO_DRDY_MPU9250);
|
||||
stm32_configgpio(GPIO_DRDY_LIS3MDL);
|
||||
stm32_configgpio(GPIO_DRDY_ICM_20608_G);
|
||||
stm32_configgpio(GPIO_DRDY_ICM_2060X);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user