diff --git a/boards/av/x-v1/default.cmake b/boards/av/x-v1/default.cmake index 6016c56e89bb3911a7223759419df8b89ca118c5..a8fc9cefa021c32d2907fb588348fe7af594c928 100644 --- a/boards/av/x-v1/default.cmake +++ b/boards/av/x-v1/default.cmake @@ -40,7 +40,7 @@ px4_add_board( #md25 mkblctrl pca9685 - #pmw3901 + pmw3901 #protocol_splitter #pwm_input pwm_out_sim diff --git a/boards/av/x-v1/init/rc.board_sensors b/boards/av/x-v1/init/rc.board_sensors index 5b3ceeddc68877a788f15bc81346eb0b0f171a8d..275fc767357394bda3a6fc29ea509c51825243d9 100644 --- a/boards/av/x-v1/init/rc.board_sensors +++ b/boards/av/x-v1/init/rc.board_sensors @@ -12,8 +12,12 @@ lsm303agr -R 4 start ms4525_airspeed -T 4515 -b 3 start -# TODO: try to autostart pmw3901 -# TODO: try to autostart adis16497 start +# try to autostart pmw3901 on SPI2 (external) +if ! pmw3901 start +then + # if pmw3901 failed to start, try starting the adis16497 (SPI2) + adis16497 start +fi # Possible external compasses ist8310 -C -b 1 start diff --git a/boards/av/x-v1/src/board_config.h b/boards/av/x-v1/src/board_config.h index c363a3330a8eb4e17cc5615c0519652e29d41d5a..ecc9575d8f0c2cdd12cb0161c7cd885185225359 100644 --- a/boards/av/x-v1/src/board_config.h +++ b/boards/av/x-v1/src/board_config.h @@ -55,7 +55,7 @@ #define BOARD_HAS_NBAT_I 0 // No Ibat ADC #define PX4_SPI_BUS_SENSOR1 1 -#define PX4_SPI_BUS_SENSOR2 2 +#define PX4_SPI_BUS_EXTERNAL1 2 #define PX4_SPI_BUS_SENSOR4 4 #define PX4_SPI_BUS_SENSOR5 5 @@ -80,6 +80,7 @@ /* Define the SPI2 Data Ready interrupts */ #define GPIO_SPI2_DRDY1_ADIS16497 /* PJ5 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTJ|GPIO_PIN5) +#define SPI2_CS1_EXTERNAL1 GPIO_SPI2_DRDY1_ADIS16497 /* Define the SPI4 Data Ready interrupts */ #define GPIO_SPI4_DRDY1_LPS22HB /* PK1 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTK|GPIO_PIN1) @@ -127,8 +128,8 @@ #define PX4_SENSOR1_BUS_CS_GPIO {GPIO_SPI1_CS1_ADIS16477} /* SPI2 */ -#define PX4_SPIDEV_ADIS16497 PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSOR2,0) -#define PX4_SENSOR2_BUS_CS_GPIO {GPIO_SPI2_CS1_ADIS16497} +#define PX4_SPIDEV_EXTERNAL1_1 PX4_MK_SPI_SEL(PX4_SPI_BUS_EXTERNAL1,0) +#define PX4_EXTERNAL1_BUS_CS_GPIO {SPI2_CS1_EXTERNAL1} /* SPI4 */ #define PX4_SPIDEV_LPS22HB PX4_MK_SPI_SEL(PX4_SPI_BUS_SENSOR4,0) diff --git a/boards/av/x-v1/src/spi.cpp b/boards/av/x-v1/src/spi.cpp index 23ca9492223c6fbab7522bcdc142e777869b24f0..317fe2d2956ccb02e2dcb7ab8afb906206755e46 100644 --- a/boards/av/x-v1/src/spi.cpp +++ b/boards/av/x-v1/src/spi.cpp @@ -58,7 +58,7 @@ /* Define CS GPIO array */ static constexpr uint32_t spi1selects_gpio[] = PX4_SENSOR1_BUS_CS_GPIO; -static constexpr uint32_t spi2selects_gpio[] = PX4_SENSOR2_BUS_CS_GPIO; +static constexpr uint32_t spi2selects_gpio[] = PX4_EXTERNAL1_BUS_CS_GPIO; static constexpr uint32_t spi4selects_gpio[] = PX4_SENSOR4_BUS_CS_GPIO; static constexpr uint32_t spi5selects_gpio[] = PX4_SENSOR5_BUS_CS_GPIO; @@ -145,7 +145,7 @@ __EXPORT uint8_t stm32_spi1status(FAR struct spi_dev_s *dev, uint32_t devid) #if defined(CONFIG_STM32F7_SPI2) __EXPORT void stm32_spi2select(FAR struct spi_dev_s *dev, uint32_t devid, bool selected) { - ASSERT(PX4_SPI_BUS_ID(devid) == PX4_SPI_BUS_SENSOR2); + ASSERT(PX4_SPI_BUS_ID(devid) == PX4_SPI_BUS_EXTERNAL1); // Making sure the other peripherals are not selected for (auto cs : spi2selects_gpio) {