mRo ctrl zero updates

- add ICM20602 and ICM20648 data ready interrupts
 - enable Bosch BMI088 IMU
 - move HRT_TIMER to TIM3 (same timer as PPM channel)
This commit is contained in:
Daniel Agar 2019-12-01 17:22:29 -05:00
parent a859a6b57c
commit fd72e5e795
6 changed files with 25 additions and 9 deletions

View File

@ -29,7 +29,7 @@ px4_add_board(
gps
#heater
#imu # all available imu drivers
#imu/bmi088
imu/bmi088
imu/mpu6000
imu/icm20948
irlock

View File

@ -11,8 +11,11 @@ mpu6000 -R 10 -s -T 20602 start
# Internal ICM-20689
#icm20689 -R 10 20689 start
# Internal BMI088
bmi088 start
# Internal SPI bus BMI088 accel
bmi088 -A -R 10 start
# Internal SPI bus BMI088 gyro
bmi088 -G -R 10 start
# Interal DPS310 (barometer)
dps310 start

View File

@ -215,7 +215,6 @@ CONFIG_UART4_RXDMA=y
CONFIG_UART4_TXBUFSIZE=1500
CONFIG_UART7_BAUD=57600
CONFIG_UART7_RXBUFSIZE=600
CONFIG_UART7_RXDMA=y
CONFIG_UART7_SERIAL_CONSOLE=y
CONFIG_UART7_TXBUFSIZE=1500
CONFIG_UART8_BAUD=57600

View File

@ -81,6 +81,10 @@
#define GPIO_SPI1_CS1_ICM20602 /* PC2 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN2)
#define GPIO_SPI1_CS2_ICM20948 /* PE15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN15)
/* Define the SPI1 Data Ready interrupts */
#define GPIO_SPI1_DRDY1_ICM20602 /* PD15 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTD|GPIO_PIN15)
#define GPIO_SPI1_DRDY2_ICM20948 /* PE12 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTE|GPIO_PIN12)
/* SPI 2 CS */
#define GPIO_SPI2_CS1_FRAM /* PD10 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN10)
#define GPIO_SPI2_CS2_BARO /* PD7 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN7)
@ -253,7 +257,7 @@
#define GPIO_OTGFS_VBUS /* PA9 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_100MHz|GPIO_PORTA|GPIO_PIN9)
/* High-resolution timer */
#define HRT_TIMER 8 /* use timer8 for the HRT */
#define HRT_TIMER 3 /* use timer3 for the HRT */
#define HRT_TIMER_CHANNEL 3 /* use capture/compare channel 3 */
#define HRT_PPM_CHANNEL /* T3C2 */ 2 /* use capture/compare channel 1 */
@ -328,10 +332,6 @@
GPIO_VDD_3V3_SPEKTRUM_POWER_EN, \
GPIO_TONE_ALARM_IDLE, \
GPIO_SAFETY_SWITCH_IN, \
GPIO_DRDY_BMI088_INT1_ACCEL, \
GPIO_DRDY_BMI088_INT2_ACCEL, \
GPIO_DRDY_BMI088_INT3_GYRO, \
GPIO_DRDY_BMI088_INT4_GYRO, \
}
#define BOARD_ENABLE_CONSOLE_BUFFER

View File

@ -203,6 +203,9 @@ __EXPORT void board_spi_reset(int ms)
stm32_configgpio(_PIN_OFF(GPIO_SPI1_SCK));
stm32_configgpio(_PIN_OFF(GPIO_SPI1_MISO));
stm32_configgpio(_PIN_OFF(GPIO_SPI1_MOSI));
stm32_configgpio(_PIN_OFF(GPIO_SPI1_DRDY1_ICM20602));
stm32_configgpio(_PIN_OFF(GPIO_SPI1_DRDY2_ICM20948));
// SPI5
for (auto cs : spi5selects_gpio) {
@ -242,6 +245,9 @@ __EXPORT void board_spi_reset(int ms)
stm32_configgpio(GPIO_SPI1_SCK);
stm32_configgpio(GPIO_SPI1_MISO);
stm32_configgpio(GPIO_SPI1_MOSI);
stm32_configgpio(GPIO_SPI1_DRDY1_ICM20602);
stm32_configgpio(GPIO_SPI1_DRDY2_ICM20948);
// SPI5
for (auto cs : spi5selects_gpio) {

View File

@ -90,7 +90,11 @@ start(bool external_bus, enum Rotation rotation, enum sensor_type sensor)
#endif
} else {
#if defined(PX4_SPI_BUS_SENSORS3) && defined(PX4_SPIDEV_BMI088_ACC)
*g_dev_acc_ptr = new BMI088_accel(PX4_SPI_BUS_SENSORS3, path_accel, PX4_SPIDEV_BMI088_ACC, rotation);
#elif defined(PX4_SPI_BUS_5) && defined(PX4_SPIDEV_BMI088_ACC)
*g_dev_acc_ptr = new BMI088_accel(PX4_SPI_BUS_5, path_accel, PX4_SPIDEV_BMI088_ACC, rotation);
#endif
}
if (*g_dev_acc_ptr == nullptr) {
@ -120,7 +124,11 @@ start(bool external_bus, enum Rotation rotation, enum sensor_type sensor)
#endif
} else {
#if defined(PX4_SPI_BUS_SENSORS3) && defined(PX4_SPIDEV_BMI088_GYR)
*g_dev_gyr_ptr = new BMI088_gyro(PX4_SPI_BUS_SENSORS3, path_gyro, PX4_SPIDEV_BMI088_GYR, rotation);
#elif defined(PX4_SPI_BUS_5) && defined(PX4_SPIDEV_BMI088_GYR)
*g_dev_gyr_ptr = new BMI088_gyro(PX4_SPI_BUS_5, path_gyro, PX4_SPIDEV_BMI088_GYR, rotation);
#endif
}
if (*g_dev_gyr_ptr == nullptr) {