From 76585409fa6c8b737017e94685d55cd009aad112 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Thu, 11 Nov 2021 10:03:32 -0800 Subject: [PATCH] durandal rev 1 has bmi088->icm20602 --- boards/holybro/durandal-v1/default.px4board | 1 + .../holybro/durandal-v1/init/rc.board_sensors | 12 ++++ boards/holybro/durandal-v1/src/board_config.h | 5 ++ boards/holybro/durandal-v1/src/manifest.c | 4 +- boards/holybro/durandal-v1/src/spi.cpp | 68 +++++++++++++------ 5 files changed, 67 insertions(+), 23 deletions(-) diff --git a/boards/holybro/durandal-v1/default.px4board b/boards/holybro/durandal-v1/default.px4board index ba6d27c4e0..1335a5ece5 100644 --- a/boards/holybro/durandal-v1/default.px4board +++ b/boards/holybro/durandal-v1/default.px4board @@ -18,6 +18,7 @@ CONFIG_DRIVERS_GPS=y CONFIG_DRIVERS_HEATER=y CONFIG_DRIVERS_IMU_ANALOG_DEVICES_ADIS16448=y CONFIG_DRIVERS_IMU_BOSCH_BMI088=y +CONFIG_DRIVERS_IMU_INVENSENSE_ICM20602=y CONFIG_DRIVERS_IMU_INVENSENSE_ICM20689=y CONFIG_DRIVERS_IMU_INVENSENSE_ICM20948=y CONFIG_COMMON_LIGHT=y diff --git a/boards/holybro/durandal-v1/init/rc.board_sensors b/boards/holybro/durandal-v1/init/rc.board_sensors index 99f3d37a74..9397359b7d 100644 --- a/boards/holybro/durandal-v1/init/rc.board_sensors +++ b/boards/holybro/durandal-v1/init/rc.board_sensors @@ -11,6 +11,18 @@ icm20689 -R 2 -s start bmi088 -A -R 2 -s start bmi088 -G -R 2 -s start +if ver hwtypecmp VD00 +then + # Internal SPI BMI088 + bmi088 -A -R 2 -s start + bmi088 -G -R 2 -s start +fi +if ver hwtypecmp VD01 +then + # Internal SPI ICM-20602 + icm20602 -R 2 -s start +fi + # internal compass ist8310 -I -R 10 start diff --git a/boards/holybro/durandal-v1/src/board_config.h b/boards/holybro/durandal-v1/src/board_config.h index a2dfdde765..7ffa7bfa9d 100644 --- a/boards/holybro/durandal-v1/src/board_config.h +++ b/boards/holybro/durandal-v1/src/board_config.h @@ -162,6 +162,11 @@ #define HW_INFO_INIT_VER 2 #define HW_INFO_INIT_REV 3 +#define BOARD_NUM_SPI_CFG_HW_VERSIONS 2 + +#define VD00 HW_VER_REV(0x0,0x0) // Durandal, Ver 0 Rev 0 +#define VD01 HW_VER_REV(0x0,0x1) // Durandal, Ver 0 Rev 1 + /* CAN Silence * * Silent mode control \ ESC Mux select diff --git a/boards/holybro/durandal-v1/src/manifest.c b/boards/holybro/durandal-v1/src/manifest.c index 74ee51c6ae..54ab596f50 100644 --- a/boards/holybro/durandal-v1/src/manifest.c +++ b/boards/holybro/durandal-v1/src/manifest.c @@ -82,7 +82,9 @@ static const px4_hw_mft_item_t hw_mft_list_durandal[] = { }; static px4_hw_mft_list_entry_t mft_lists[] = { - {0x0000, hw_mft_list_durandal, arraySize(hw_mft_list_durandal)}, +// ver_rev + {VD00, hw_mft_list_durandal, arraySize(hw_mft_list_durandal)}, + {VD01, hw_mft_list_durandal, arraySize(hw_mft_list_durandal)}, }; /************************************************************************************ diff --git a/boards/holybro/durandal-v1/src/spi.cpp b/boards/holybro/durandal-v1/src/spi.cpp index 6d65a49d13..667fa865c5 100644 --- a/boards/holybro/durandal-v1/src/spi.cpp +++ b/boards/holybro/durandal-v1/src/spi.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (C) 2020 PX4 Development Team. All rights reserved. + * Copyright (C) 2020, 2021 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -35,28 +35,52 @@ #include #include -constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = { - initSPIBus(SPI::Bus::SPI1, { - initSPIDevice(DRV_IMU_DEVTYPE_ICM20689, SPI::CS{GPIO::PortF, GPIO::Pin2}, SPI::DRDY{GPIO::PortB, GPIO::Pin4}), - initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortF, GPIO::Pin4}, SPI::DRDY{GPIO::PortB, GPIO::Pin14}), - initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortG, GPIO::Pin10}, SPI::DRDY{GPIO::PortB, GPIO::Pin15}), - initSPIDevice(DRV_DEVTYPE_UNUSED, SPI::CS{GPIO::PortH, GPIO::Pin5}), - }, {GPIO::PortE, GPIO::Pin3}), - initSPIBus(SPI::Bus::SPI2, { - initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortF, GPIO::Pin5}) +constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSIONS] = { + initSPIHWVersion(HW_VER_REV(0, 0), { + initSPIBus(SPI::Bus::SPI1, { + initSPIDevice(DRV_IMU_DEVTYPE_ICM20689, SPI::CS{GPIO::PortF, GPIO::Pin2}, SPI::DRDY{GPIO::PortB, GPIO::Pin4}), + initSPIDevice(DRV_GYR_DEVTYPE_BMI088, SPI::CS{GPIO::PortF, GPIO::Pin4}, SPI::DRDY{GPIO::PortB, GPIO::Pin14}), + initSPIDevice(DRV_ACC_DEVTYPE_BMI088, SPI::CS{GPIO::PortG, GPIO::Pin10}, SPI::DRDY{GPIO::PortB, GPIO::Pin15}), + initSPIDevice(DRV_DEVTYPE_UNUSED, SPI::CS{GPIO::PortH, GPIO::Pin5}), + }, {GPIO::PortE, GPIO::Pin3}), + initSPIBus(SPI::Bus::SPI2, { + initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortF, GPIO::Pin5}) + }), + initSPIBus(SPI::Bus::SPI4, { + initSPIDevice(DRV_BARO_DEVTYPE_MS5611, SPI::CS{GPIO::PortF, GPIO::Pin10}), + }), + initSPIBusExternal(SPI::Bus::SPI5, { + initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin4}), + initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin10}), + }), + initSPIBusExternal(SPI::Bus::SPI6, { + initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin6}), + initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin7}), + initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin8}) + }), }), - initSPIBus(SPI::Bus::SPI4, { - initSPIDevice(DRV_BARO_DEVTYPE_MS5611, SPI::CS{GPIO::PortF, GPIO::Pin10}), - }), - initSPIBusExternal(SPI::Bus::SPI5, { - initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin4}), - initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin10}), - }), - initSPIBusExternal(SPI::Bus::SPI6, { - initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin6}), - initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin7}), - initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin8}) + initSPIHWVersion(HW_VER_REV(0, 1), { + initSPIBus(SPI::Bus::SPI1, { + initSPIDevice(DRV_IMU_DEVTYPE_ICM20689, SPI::CS{GPIO::PortF, GPIO::Pin2}, SPI::DRDY{GPIO::PortB, GPIO::Pin4}), + initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortF, GPIO::Pin4}, SPI::DRDY{GPIO::PortB, GPIO::Pin14}), + initSPIDevice(DRV_DEVTYPE_UNUSED, SPI::CS{GPIO::PortH, GPIO::Pin5}), + }, {GPIO::PortE, GPIO::Pin3}), + initSPIBus(SPI::Bus::SPI2, { + initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortF, GPIO::Pin5}) + }), + initSPIBus(SPI::Bus::SPI4, { + initSPIDevice(DRV_BARO_DEVTYPE_MS5611, SPI::CS{GPIO::PortF, GPIO::Pin10}), + }), + initSPIBusExternal(SPI::Bus::SPI5, { + initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin4}), + initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin10}), + }), + initSPIBusExternal(SPI::Bus::SPI6, { + initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin6}), + initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin7}), + initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin8}) + }), }), }; -static constexpr bool unused = validateSPIConfig(px4_spi_buses); +static constexpr bool unused = validateSPIConfig(px4_spi_buses_all_hw);