diff --git a/Tools/bootloaders/CUAV-X7-bdshot_bl.bin b/Tools/bootloaders/CUAV-X7-bdshot_bl.bin new file mode 100644 index 0000000000000..8ff1550f7a45c Binary files /dev/null and b/Tools/bootloaders/CUAV-X7-bdshot_bl.bin differ diff --git a/Tools/bootloaders/CubeOrange-bdshot_bl.bin b/Tools/bootloaders/CubeOrange-bdshot_bl.bin new file mode 100644 index 0000000000000..69fd41369a14c Binary files /dev/null and b/Tools/bootloaders/CubeOrange-bdshot_bl.bin differ diff --git a/Tools/bootloaders/Durandal-bdshot_bl.bin b/Tools/bootloaders/Durandal-bdshot_bl.bin new file mode 100644 index 0000000000000..08f2b85b69262 Binary files /dev/null and b/Tools/bootloaders/Durandal-bdshot_bl.bin differ diff --git a/Tools/bootloaders/MatekF405-bdshot_bl.bin b/Tools/bootloaders/MatekF405-bdshot_bl.bin new file mode 100644 index 0000000000000..9579c7e5c4ea8 Binary files /dev/null and b/Tools/bootloaders/MatekF405-bdshot_bl.bin differ diff --git a/Tools/bootloaders/MatekH743-bdshot_bl.bin b/Tools/bootloaders/MatekH743-bdshot_bl.bin new file mode 100644 index 0000000000000..854bcd761fe24 Binary files /dev/null and b/Tools/bootloaders/MatekH743-bdshot_bl.bin differ diff --git a/Tools/bootloaders/OmnibusNanoV6-bdshot_bl.bin b/Tools/bootloaders/OmnibusNanoV6-bdshot_bl.bin new file mode 100644 index 0000000000000..c678dbcf910ab Binary files /dev/null and b/Tools/bootloaders/OmnibusNanoV6-bdshot_bl.bin differ diff --git a/Tools/bootloaders/Pixracer-bdshot_bl.bin b/Tools/bootloaders/Pixracer-bdshot_bl.bin new file mode 100644 index 0000000000000..92e1fd74f79fc Binary files /dev/null and b/Tools/bootloaders/Pixracer-bdshot_bl.bin differ diff --git a/Tools/bootloaders/mRoPixracerPro-bdshot_bl.bin b/Tools/bootloaders/mRoPixracerPro-bdshot_bl.bin new file mode 100644 index 0000000000000..8de5ad01eda5d Binary files /dev/null and b/Tools/bootloaders/mRoPixracerPro-bdshot_bl.bin differ diff --git a/Tools/bootloaders/omnibusf4pro-bdshot_bl.bin b/Tools/bootloaders/omnibusf4pro-bdshot_bl.bin new file mode 100644 index 0000000000000..185fed14120cf Binary files /dev/null and b/Tools/bootloaders/omnibusf4pro-bdshot_bl.bin differ diff --git a/Tools/scripts/build_binaries.py b/Tools/scripts/build_binaries.py index 714c8aa31c4cf..64c362ba99da7 100755 --- a/Tools/scripts/build_binaries.py +++ b/Tools/scripts/build_binaries.py @@ -572,16 +572,20 @@ def common_boards(self): "KakuteF7Mini", "MambaF405v2", "MatekF405", + "MatekF405-bdshot", "MatekF405-STD", "MatekF405-Wing", "MatekF765-Wing", "MatekH743", + "MatekH743-bdshot", "OMNIBUSF7V2", "sparky2", "omnibusf4", "omnibusf4pro", + "omnibusf4pro-bdshot", "omnibusf4v6", "OmnibusNanoV6", + "OmnibusNanoV6-bdshot", "mini-pix", "airbotf4", "revo-mini", @@ -597,13 +601,16 @@ def common_boards(self): "CUAVv5Nano", "CUAV-Nora", "CUAV-X7", + "CUAV-X7-bdshot", "mRoX21", "Pixracer", + "Pixracer-bdshot", "F4BY", "mRoX21-777", "mRoControlZeroF7", "mRoNexus", "mRoPixracerPro", + "mRoPixracerPro-bdshot", "mRoControlZeroOEMH7", "F35Lightning", "speedybeef4", @@ -616,7 +623,9 @@ def common_boards(self): "VRBrain-v54", "TBS-Colibri-F7", "Durandal", + "Durandal-bdshot", "CubeOrange", + "CubeOrange-bdshot", "CubeYellow", "R9Pilot", "QioTekZealotF427", diff --git a/Tools/scripts/generate_manifest.py b/Tools/scripts/generate_manifest.py index 90cb767ae3dcb..cc7545de89d6e 100755 --- a/Tools/scripts/generate_manifest.py +++ b/Tools/scripts/generate_manifest.py @@ -23,6 +23,7 @@ 'Pixhawk4' : ('Pixhawk 4', 'Holybro'), 'Pix32v5' : ('Pix32 v5', 'Holybro'), 'Durandal' : ('Durandal', 'Holybro'), + 'Durandal-bdshot' : ('Durandal', 'Holybro'), 'PH4-mini' : ('Pixhawk 4 Mini', 'Holybro'), 'KakuteF4' : ('KakuteF4', 'Holybro'), 'KakuteF7' : ('KakuteF7', 'Holybro'), @@ -30,6 +31,7 @@ 'CubeBlack' : ('CubeBlack', 'Hex/ProfiCNC'), 'CubeYellow' : ('CubeYellow', 'Hex/ProfiCNC'), 'CubeOrange' : ('CubeOrange', 'Hex/ProfiCNC'), + 'CubeOrange-bdshot' : ('CubeOrange', 'Hex/ProfiCNC'), 'CubePurple' : ('CubePurple', 'Hex/ProfiCNC'), 'CubeSolo' : ('CubeSolo', '3DR'), 'CubeGreen-solo' : ('CubeGreen Solo', 'Hex/ProfiCNC'), @@ -37,17 +39,23 @@ 'CUAVv5Nano' : ('CUAVv5 Nano', 'CUAV'), 'CUAV-Nora' : ('CUAV Nora', 'CUAV'), 'CUAV-X7' : ('CUAV X7', 'CUAV'), + 'CUAV-X7-bdshot' : ('CUAV X7', 'CUAV'), 'DrotekP3Pro' : ('Pixhawk 3 Pro', 'Drotek'), 'MambaF405v2' : ('Diatone Mamba F405 MK2', 'Diatone'), 'MatekF405' : ('Matek F405', 'Matek'), + 'MatekF405-bdshot' : ('Matek F405', 'Matek'), 'MatekF405-STD' : ('Matek F405 STD', 'Matek'), 'MatekF405-Wing' : ('Matek F405 Wing', 'Matek'), + 'MatekH743' : ('Matek H743', 'Matek'), + 'MatekH743-bdshot' : ('Matek H743', 'Matek'), 'mini-pix' : ('MiniPix', 'Radiolink'), 'Pixhawk1' : ('Pixhawk1', 'mRobotics'), 'Pixracer' : ('PixRacer', 'mRobotics'), + 'Pixracer-bdshot' : ('PixRacer', 'mRobotics'), 'mRoX21' : ('mRo X2.1', 'mRobotics'), 'mRoX21-777' : ('mRo X2.1-777', 'mRobotics'), 'mRoPixracerPro' : ('mRo PixracerPro', 'mRobotics'), + 'mRoPixracerPro-bdshot' : ('mRo PixracerPro', 'mRobotics'), 'mRoControlZeroOEMH7' : ('mRo ControlZero OEM H7', 'mRobotics'), 'mRoNexus' : ('mRo Nexus', 'mRobotics'), 'TBS-Colibri-F7' : ('Colibri F7', 'TBS'), @@ -55,8 +63,10 @@ 'mindpx-v2' : ('MindPX V2', 'AirMind'), 'OMNIBUSF7V2' : ('Omnibus F7 V2', 'Airbot'), 'omnibusf4pro' : ('Omnibus F4 Pro', 'Airbot'), + 'omnibusf4pro-bdshot' : ('Omnibus F4 Pro', 'Airbot'), 'omnibusf4v6' : ('Omnibus F4 V6', 'Airbot'), 'OmnibusNanoV6' : ('Omnibus Nano V6', 'Airbot'), + 'OmnibusNanoV6-bdshot' : ('Omnibus Nano V6', 'Airbot'), 'speedybeef4' : ('SpeedyBee F4', 'SpeedyBee'), 'QioTekZealotF427' : ('ZealotF427', 'QioTek'), 'BeastH7' : ('Beast H7 55A AIO', 'iFlight'), diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7-bdshot/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7-bdshot/defaults.parm new file mode 100644 index 0000000000000..56c00efb7f847 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7-bdshot/defaults.parm @@ -0,0 +1,18 @@ +# temperature control. We need lower P/I values +# to prevent oscillation of the BMI088 temperature +# the ADIS16470 is factory temperature calibrated, +# but the BMI088 isn't, so temperature control is still +# worthwhile +BRD_IMU_TARGTEMP 45 +BRD_IMUHEAT_P 50 +BRD_IMUHEAT_I 0.07 + +# turn on the CAN power monitoring(default) +CAN_P1_DRIVER 1 +BATT_MONITOR 8 + +# setup the parameter for the ADC power module +BATT_VOLT_PIN 16 +BATT_CURR_PIN 17 +BATT_VOLT_MULT 18.000 +BATT_AMP_PERVLT 24.000 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7-bdshot/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7-bdshot/hwdef-bl.dat new file mode 100644 index 0000000000000..41c75c649b37e --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7-bdshot/hwdef-bl.dat @@ -0,0 +1 @@ +include ../CUAV-X7/hwdef-bl.dat diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7-bdshot/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7-bdshot/hwdef.dat new file mode 100644 index 0000000000000..5dd2d33b89fcc --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7-bdshot/hwdef.dat @@ -0,0 +1,8 @@ +# Bi-directional dshot version CUAV-X7 + +include ../CUAV-X7/hwdef.dat + +undef PH10 PH12 + +PH10 TIM5_CH1 TIM5 PWM(1) GPIO(50) BIDIR +PH12 TIM5_CH3 TIM5 PWM(3) GPIO(52) BIDIR diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-bdshot/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-bdshot/hwdef-bl.dat new file mode 100644 index 0000000000000..b24ffaa71dc1d --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-bdshot/hwdef-bl.dat @@ -0,0 +1 @@ +include ../CubeOrange/hwdef-bl.dat diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-bdshot/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-bdshot/hwdef.dat index 50c3bb375c929..6666bb218600e 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-bdshot/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-bdshot/hwdef.dat @@ -1,324 +1,12 @@ -# hw definition file for processing by chibios_hwdef.py +# Bi-directional dshot version of CubeOrange -# USB setup -USB_VENDOR 0x2DAE # ONLY FOR USE BY HEX! NOBODY ELSE -USB_PRODUCT 0x1016 -USB_STRING_MANUFACTURER "Hex/ProfiCNC" -USB_STRING_PRODUCT "CubeOrange" -USB_STRING_SERIAL "%SERIAL%" +include ../CubeOrange/hwdef.dat -# MCU class and specific type -MCU STM32H7xx STM32H743xx +undef PE14 PE13 PE11 PE9 PD13 PD14 -# crystal frequency -OSCILLATOR_HZ 24000000 - -# board ID for firmware load -APJ_BOARD_ID 140 - -FLASH_SIZE_KB 2048 - -# with 2M flash we can afford to optimize for speed -env OPTIMIZE -O2 - -FLASH_RESERVE_START_KB 128 - -define HAL_STORAGE_SIZE 16384 - -# order of I2C buses -I2C_ORDER I2C2 I2C1 - -# order of UARTs (and USB) -SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7 OTG2 - -# If the board has an IOMCU connected via a UART then this defines the -# UART to talk to that MCU. Leave it out for boards with no IOMCU. - -# UART for IOMCU -IOMCU_UART USART6 - -# UART4 serial GPS -PA0 UART4_TX UART4 -PA1 UART4_RX UART4 NODMA - -PA2 BATT_VOLTAGE_SENS ADC1 SCALE(1) -PA3 BATT_CURRENT_SENS ADC1 SCALE(1) - -# Now the VDD sense pin. This is used to sense primary board voltage. -PA4 VDD_5V_SENS ADC1 SCALE(2) - -PA5 SPI1_SCK SPI1 -PA6 SPI1_MISO SPI1 -PA7 SPI1_MOSI SPI1 - -# This defines an output pin which will default to output HIGH. It is -# a pin that enables peripheral power on this board. It starts in the -# off state, then is pulled low to enable peripherals in -# peripheral_power_enable() -PA8 nVDD_5V_PERIPH_EN OUTPUT HIGH - -# This is the pin that senses USB being connected. It is an input pin -# setup as OPENDRAIN. -PA9 VBUS INPUT OPENDRAIN - -# Now we define the pins that USB is connected on. -PA11 OTG_FS_DM OTG1 -PA12 OTG_FS_DP OTG1 - -# These are the pins for SWD debugging with a STlinkv2 or black-magic probe. -PA13 JTMS-SWDIO SWD -PA14 JTCK-SWCLK SWD - -# PWM output for buzzer -PA15 TIM2_CH1 TIM2 GPIO(77) ALARM - -# This defines a couple of general purpose outputs, mapped to GPIO -# numbers 1 and 2 for users. -PB0 EXTERN_GPIO1 OUTPUT GPIO(1) -PB1 EXTERN_GPIO2 OUTPUT GPIO(2) - -# This defines some input pins, currently unused. -PB2 BOOT1 INPUT -PB3 FMU_SW0 INPUT - -# This defines the pins for the 2nd CAN interface, if available. -PB6 CAN2_TX CAN2 -PB12 CAN2_RX CAN2 - -# Now the first I2C bus. The pin speeds are automatically setup -# correctly, but can be overridden here if needed. -PB8 I2C1_SCL I2C1 -PB9 I2C1_SDA I2C1 - -# the 2nd I2C bus -PB10 I2C2_SCL I2C2 -PB11 I2C2_SDA I2C2 - -# the 2nd SPI bus -PB13 SPI2_SCK SPI2 -PB14 SPI2_MISO SPI2 -PB15 SPI2_MOSI SPI2 - -# This input pin is used to detect that power is valid on USB. -PC0 VBUS_nVALID INPUT PULLUP - -# This defines the CS pin for the magnetometer and first IMU. Note -# that CS pins are software controlled, and are not tied to a particular -# SPI bus. -PC1 MAG_CS CS -PC2 MPU_CS CS - -# This defines more ADC inputs. -PC3 AUX_POWER ADC1 SCALE(1) -PC4 AUX_ADC2 ADC1 SCALE(1) - -# And the analog input for airspeed (rarely used these days). -PC5 PRESSURE_SENS ADC1 SCALE(2) - -# USART6 to IO -PC6 USART6_TX USART6 -PC7 USART6_RX USART6 - -# Now setup the pins for the microSD card, if available. -PC8 SDMMC1_D0 SDMMC1 -PC9 SDMMC1_D1 SDMMC1 -PC10 SDMMC1_D2 SDMMC1 -PC11 SDMMC1_D3 SDMMC1 -PC12 SDMMC1_CK SDMMC1 -PD2 SDMMC1_CMD SDMMC1 - -# More CS pins for more sensors. The labels for all CS pins need to -# match the SPI device table later in this file. -PC13 GYRO_EXT_CS CS -PC14 BARO_EXT_CS CS -PC15 ACCEL_EXT_CS CS -PD7 BARO_CS CS -PE4 MPU_EXT_CS CS - -# the first CAN bus -PD0 CAN1_RX CAN1 -PD1 CAN1_TX CAN1 - -# Another USART, this one for telem1. This one has RTS and CTS lines. -# USART2 serial2 telem1 -PD3 USART2_CTS USART2 -PD4 USART2_RTS USART2 -PD5 USART2_TX USART2 -PD6 USART2_RX USART2 - -# The telem2 USART, also with RTS/CTS available. -# USART3 serial3 telem2 -PD8 USART3_TX USART3 -PD9 USART3_RX USART3 -PD11 USART3_CTS USART3 -PD12 USART3_RTS USART3 - -# The CS pin for FRAM (ramtron). This one is marked as using -# SPEED_VERYLOW, which matches the HAL_PX4 setup. -PD10 FRAM_CS CS SPEED_VERYLOW - -# Now we start defining some PWM pins. We also map these pins to GPIO -# values, so users can set BRD_PWM_COUNT to choose how many of the PWM -# outputs on the primary MCU are setup as PWM and how many as -# GPIOs. To match HAL_PX4 we number the GPIOs for the PWM outputs -# starting at 50. PE14 TIM1_CH4 TIM1 PWM(1) GPIO(50) BIDIR PE13 TIM1_CH3 TIM1 PWM(2) GPIO(51) # this will automatically be shared with TIM1_CH4 PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) BIDIR PE9 TIM1_CH1 TIM1 PWM(4) GPIO(53) # this will automatically be shared with TIM1_CH1 PD13 TIM4_CH2 TIM4 PWM(5) GPIO(54) BIDIR PD14 TIM4_CH3 TIM4 PWM(6) GPIO(55) BIDIR - -define BOARD_PWM_COUNT_DEFAULT 4 - -# Pin for PWM Voltage Selection -PB4 PWM_VOLT_SEL OUTPUT HIGH GPIO(3) - -# Relays default to use GPIO pins 54 and 55. -define RELAY1_PIN_DEFAULT 54 -define RELAY2_PIN_DEFAULT 55 - -# This is the invensense data-ready pin. We don't use it in the -# default driver. -PD15 MPU_DRDY INPUT - -# the 2nd GPS UART -# UART8 serial4 GPS2 -PE0 UART8_RX UART8 -PE1 UART8_TX UART8 NODMA - -# Now setup SPI bus4. -PE2 SPI4_SCK SPI4 -PE5 SPI4_MISO SPI4 -PE6 SPI4_MOSI SPI4 - -# This is the pin to enable the sensors rail. It can be used to power -# cycle sensors to recover them in case there are problems with power on -# timing affecting sensor stability. We pull it LOW on startup, which -# means sensors off, then it is pulled HIGH in peripheral_power_enable() -PE3 VDD_3V3_SENSORS_EN OUTPUT LOW - -# UART7 maps to uartF in the HAL (serial5 in SERIALn_ parameters). -PE7 UART7_RX UART7 -PE8 UART7_TX UART7 - -# Define a LED, mapping it to GPIO(0). LOW will illuminate the LED -PE12 FMU_LED_AMBER OUTPUT HIGH OPENDRAIN GPIO(0) - -# Power flag pins: these tell the MCU the status of the various power -# supplies that are available. The pin names need to exactly match the -# names used in AnalogIn.cpp. -PB5 VDD_BRICK_nVALID INPUT PULLUP -PB7 VDD_BRICK2_nVALID INPUT PULLUP -PE10 VDD_5V_HIPOWER_nOC INPUT PULLUP -PE15 VDD_5V_PERIPH_nOC INPUT PULLUP - -SPIDEV ms5611 SPI1 DEVID3 BARO_CS MODE3 20*MHZ 20*MHZ -SPIDEV ms5611_ext SPI4 DEVID2 BARO_EXT_CS MODE3 20*MHZ 20*MHZ -SPIDEV mpu6000 SPI1 DEVID4 MPU_CS MODE3 2*MHZ 8*MHZ -SPIDEV icm20608-am SPI1 DEVID2 ACCEL_EXT_CS MODE3 4*MHZ 8*MHZ -SPIDEV mpu9250 SPI1 DEVID4 MPU_CS MODE3 4*MHZ 8*MHZ -SPIDEV mpu9250_ext SPI4 DEVID1 MPU_EXT_CS MODE3 4*MHZ 8*MHZ -SPIDEV icm20948 SPI1 DEVID4 MPU_CS MODE3 4*MHZ 8*MHZ -SPIDEV icm20948_ext SPI4 DEVID1 MPU_EXT_CS MODE3 4*MHZ 8*MHZ -SPIDEV hmc5843 SPI1 DEVID5 MAG_CS MODE3 11*MHZ 11*MHZ -SPIDEV lsm9ds0_g SPI1 DEVID1 GYRO_EXT_CS MODE3 11*MHZ 11*MHZ -SPIDEV lsm9ds0_am SPI1 DEVID2 ACCEL_EXT_CS MODE3 11*MHZ 11*MHZ -SPIDEV lsm9ds0_ext_g SPI4 DEVID4 GYRO_EXT_CS MODE3 11*MHZ 11*MHZ -SPIDEV lsm9ds0_ext_am SPI4 DEVID3 ACCEL_EXT_CS MODE3 11*MHZ 11*MHZ -SPIDEV icm20602_ext SPI4 DEVID4 GYRO_EXT_CS MODE3 4*MHZ 8*MHZ -SPIDEV ramtron SPI2 DEVID10 FRAM_CS MODE3 8*MHZ 8*MHZ -SPIDEV external0m0 SPI4 DEVID5 MPU_EXT_CS MODE0 2*MHZ 2*MHZ -SPIDEV external0m1 SPI4 DEVID5 MPU_EXT_CS MODE1 2*MHZ 2*MHZ -SPIDEV external0m2 SPI4 DEVID5 MPU_EXT_CS MODE2 2*MHZ 2*MHZ -SPIDEV external0m3 SPI4 DEVID5 MPU_EXT_CS MODE3 2*MHZ 2*MHZ -SPIDEV pixartPC15 SPI4 DEVID13 ACCEL_EXT_CS MODE3 2*MHZ 2*MHZ - -# three IMUs, but allow for different varients. First two IMUs are -# isolated, 3rd isn't -IMU Invensense SPI:mpu9250_ext ROTATION_PITCH_180 - -# the 3 rotations for the LSM9DS0 driver are for the accel, the gyro -# and the H varient of the gyro -IMU LSM9DS0 SPI:lsm9ds0_ext_g SPI:lsm9ds0_ext_am ROTATION_ROLL_180_YAW_270 ROTATION_ROLL_180_YAW_90 ROTATION_ROLL_180_YAW_90 - -# 3rd non-isolated IMU -IMU Invensense SPI:mpu9250 ROTATION_YAW_270 - -# alternative IMU set for newer cubes -IMU Invensense SPI:icm20602_ext ROTATION_ROLL_180_YAW_270 -IMU Invensensev2 SPI:icm20948_ext ROTATION_PITCH_180 -IMU Invensensev2 SPI:icm20948 ROTATION_YAW_270 - -# Sensor Check alias for validating board type -CHECK_ICM20649 spi_check_register_inv2("icm20948", INV2REG_WHOAMI, INV2_WHOAMI_ICM20649) -CHECK_ICM20602_EXT spi_check_register("icm20602_ext", MPUREG_WHOAMI, MPU_WHOAMI_ICM20602) -CHECK_ICM20948_EXT spi_check_register_inv2("icm20948_ext", INV2REG_WHOAMI, INV2_WHOAMI_ICM20948) -CHECK_MS5611 check_ms5611("ms5611") -CHECK_MS5611_EXT check_ms5611("ms5611_ext") - -# Sensor Check Macros to be used for validating board type -CHECK_IMU0_PRESENT $CHECK_ICM20602_EXT -CHECK_IMU1_PRESENT $CHECK_ICM20948_EXT -CHECK_IMU2_PRESENT $CHECK_ICM20649 -CHECK_BARO0_PRESENT $CHECK_MS5611 -CHECK_BARO1_PRESENT $CHECK_MS5611_EXT - -BOARD_VALIDATE $CHECK_IMU0_PRESENT $CHECK_IMU1_PRESENT $CHECK_IMU2_PRESENT $CHECK_BARO0_PRESENT $CHECK_BARO1_PRESENT - - -define HAL_DEFAULT_INS_FAST_SAMPLE 7 - -# two baros -BARO MS56XX SPI:ms5611_ext -BARO MS56XX SPI:ms5611 - -# two compasses. First is in the LSM303D -COMPASS LSM303D SPI:lsm9ds0_ext_am ROTATION_YAW_270 -# 2nd compass is part of the 2nd invensense IMU -COMPASS AK8963:probe_mpu9250 1 ROTATION_YAW_270 - -# compass as part of ICM20948 on newer cubes -COMPASS AK09916:probe_ICM20948 0 ROTATION_ROLL_180_YAW_90 - -# also probe for external compasses -define HAL_PROBE_EXTERNAL_I2C_COMPASSES - -define HAL_CHIBIOS_ARCH_FMUV3 1 - -define BOARD_TYPE_DEFAULT 3 - -# Nnow some defines for logging and terrain data files. -define HAL_BOARD_LOG_DIRECTORY "/APM/LOGS" -define HAL_BOARD_TERRAIN_DIRECTORY "/APM/TERRAIN" - -# allow to have have a dedicated safety switch pin -define HAL_HAVE_SAFETY_SWITCH 1 - -# Enable RAMTROM parameter storage. -define HAL_WITH_RAMTRON 1 - -# Setup for the possibility of an IMU heater since the pixhawk2 cube has -# an IMU heater. -define HAL_HAVE_IMU_HEATER 1 - -# Enable FAT filesystem support (needs a microSD defined via SDMMC). -define HAL_OS_FATFS_IO 1 - -# Now setup the default battery pins driver analog pins and default -# scaling for the power brick. -define HAL_BATT_VOLT_PIN 14 -define HAL_BATT_CURR_PIN 15 -define HAL_BATT_VOLT_SCALE 10.1 -define HAL_BATT_CURR_SCALE 17.0 -define HAL_GPIO_PWM_VOLT_PIN 3 -define HAL_GPIO_PWM_VOLT_3v3 1 - -# List of files to put in ROMFS. For fmuv3 we need an IO firmware so -# we can automatically update the IOMCU firmware on boot. The format -# is "ROMFS ROMFS-filename source-filename". Paths are relative to the -# ardupilot root. -ROMFS io_firmware.bin Tools/IO_Firmware/iofirmware_highpolh.bin - -DMA_NOSHARE SPI1* SPI4* USART6* - diff --git a/libraries/AP_HAL_ChibiOS/hwdef/Durandal-bdshot/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/Durandal-bdshot/hwdef-bl.dat new file mode 100644 index 0000000000000..0e17449b5bbdb --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/Durandal-bdshot/hwdef-bl.dat @@ -0,0 +1 @@ +include ../Durandal/hwdef-bl.dat diff --git a/libraries/AP_HAL_ChibiOS/hwdef/Durandal-bdshot/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/Durandal-bdshot/hwdef.dat new file mode 100644 index 0000000000000..54241bbe2df69 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/Durandal-bdshot/hwdef.dat @@ -0,0 +1,10 @@ +# Bi-directional dshot version of Durandal + +include ../Durandal/hwdef.dat + +undef PE14 PA10 PE11 PE9 PD13 PD14 + +PE14 TIM1_CH4 TIM1 PWM(1) GPIO(50) BIDIR +PA10 TIM1_CH3 TIM1 PWM(2) GPIO(51) +PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) BIDIR +PE9 TIM1_CH1 TIM1 PWM(4) GPIO(53) diff --git a/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-bdshot/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-bdshot/hwdef-bl.dat new file mode 100644 index 0000000000000..aa20e62bd4206 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-bdshot/hwdef-bl.dat @@ -0,0 +1 @@ +include ../MatekF405/hwdef-bl.dat diff --git a/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-bdshot/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-bdshot/hwdef.dat index 6d6ef3a09589f..6ae5e97e18428 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-bdshot/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-bdshot/hwdef.dat @@ -1,173 +1,7 @@ -# hw definition file for MatekF405 hardware -# tested on the MatekF405-OSD board -# with thanks to betaflight for pinout +# Bi-directional dshot version of MatekF405 +include ../MatekF405/hwdef.dat -# MCU class and specific type -MCU STM32F4xx STM32F405xx +undef PC6 -# board ID for firmware load -APJ_BOARD_ID 125 - -# crystal frequency -OSCILLATOR_HZ 8000000 - -define STM32_ST_USE_TIMER 4 -define CH_CFG_ST_RESOLUTION 16 - -FLASH_SIZE_KB 1024 - - -# only one I2C bus -I2C_ORDER I2C1 - -# order of UARTs (and USB) -SERIAL_ORDER OTG1 USART3 UART4 USART1 UART5 USART2 - -# LEDs -PB9 LED_BLUE OUTPUT LOW GPIO(0) -PA14 LED_GREEN OUTPUT LOW GPIO(1) - -define HAL_GPIO_A_LED_PIN 0 -define HAL_GPIO_B_LED_PIN 1 - -# buzzer -PC13 BUZZER OUTPUT GPIO(80) LOW -define HAL_BUZZER_PIN 80 -define HAL_BUZZER_ON 1 -define HAL_BUZZER_OFF 0 - -# spi1 bus for IMU -PA5 SPI1_SCK SPI1 -PA6 SPI1_MISO SPI1 -PA7 SPI1_MOSI SPI1 - -# spi2 for OSD -PB13 SPI2_SCK SPI2 -PB14 SPI2_MISO SPI2 -PB15 SPI2_MOSI SPI2 -PB10 MAX7456_CS CS - -# spi3 for sdcard and onboard flash -PB3 SPI3_SCK SPI3 -PB4 SPI3_MISO SPI3 -PB5 SPI3_MOSI SPI3 -PC1 SDCARD_CS CS -PC0 M25P16_CS CS - -PC2 MPU6000_CS CS - -# only one I2C bus in normal config -PB6 I2C1_SCL I2C1 -PB7 I2C1_SDA I2C1 - -# analog pins -PC5 BATT_VOLTAGE_SENS ADC1 SCALE(1) -PC4 BATT_CURRENT_SENS ADC1 SCALE(1) -PB1 RSSI_ADC_PIN ADC1 SCALE(1) - -# define default battery setup -# PC5 - ADC12_CH15 -define HAL_BATT_VOLT_PIN 15 -# PC4 - ADC12_CH14 -define HAL_BATT_CURR_PIN 14 -define HAL_BATT_VOLT_SCALE 10.1 -define HAL_BATT_CURR_SCALE 17.0 - -#analog rssi pin (also could be used as analog airspeed input) -# PB1 - ADC12_CH9 -define BOARD_RSSI_ANA_PIN 9 - -# USART1 -PA9 USART1_TX USART1 -PA10 USART1_RX USART1 - -# RC input using timer -PA3 TIM9_CH2 TIM9 RCININT PULLDOWN - -# alternative RC input using UART -PA2 USART2_TX USART2 NODMA -PA3 USART2_RX USART2 NODMA ALT(1) - -# USART3 -PC10 USART3_TX USART3 -PC11 USART3_RX USART3 - -# UART4 -PA0 UART4_TX UART4 -PA1 UART4_RX UART4 - -# UART5 -PD2 UART5_RX UART5 -PC12 UART5_TX UART5 - -# PA10 IO-debug-console -PA11 OTG_FS_DM OTG1 -PA12 OTG_FS_DP OTG1 - -# USB detection -PB12 VBUS INPUT OPENDRAIN - -# debug (disabled out to allow for both LEDs) -#PA13 JTMS-SWDIO SWD -#PA14 JTCK-SWCLK SWD - -# PWM out pins. Note that channel order follows the ArduPilot motor -# order conventions PC6 TIM8_CH1 TIM8 PWM(1) GPIO(50) BIDIR -PC7 TIM8_CH2 TIM8 PWM(2) GPIO(51) -PC8 TIM8_CH3 TIM8 PWM(3) GPIO(52) -PC9 TIM8_CH4 TIM8 PWM(4) GPIO(53) -PA15 TIM2_CH1 TIM2 PWM(5) GPIO(54) -PA8 TIM1_CH1 TIM1 PWM(6) GPIO(55) - -define HAL_STORAGE_SIZE 15360 -define STORAGE_FLASH_PAGE 2 - -# reserve 32k for bootloader and 32k for flash storage -FLASH_RESERVE_START_KB 64 - -# one IMU -IMU Invensense SPI:mpu6000 ROTATION_YAW_180 - -# probe for I2C BMP280, but allow init on board variants without onboard baro too -BARO BMP280 I2C:0:0x76 -define HAL_PROBE_EXTERNAL_I2C_BAROS -define HAL_BARO_ALLOW_INIT_NO_BARO - -# no built-in compass, but probe the i2c bus for all possible -# external compass types -define ALLOW_ARM_NO_COMPASS -define HAL_COMPASS_DEFAULT HAL_COMPASS_NONE -define HAL_PROBE_EXTERNAL_I2C_COMPASSES -define HAL_I2C_INTERNAL_MASK 0 -define HAL_COMPASS_AUTO_ROT_DEFAULT 2 - -# SPI devices -SPIDEV mpu6000 SPI1 DEVID1 MPU6000_CS MODE3 1*MHZ 8*MHZ -SPIDEV sdcard SPI3 DEVID1 SDCARD_CS MODE0 400*KHZ 25*MHZ -SPIDEV osd SPI2 DEVID1 MAX7456_CS MODE0 10*MHZ 10*MHZ - -# filesystem setup on sdcard -define HAL_OS_FATFS_IO 1 -define HAL_BOARD_LOG_DIRECTORY "/APM/LOGS" -define HAL_BOARD_TERRAIN_DIRECTORY "/APM/TERRAIN" - -# 8 PWM available by default -define BOARD_PWM_COUNT_DEFAULT 8 - -# setup for OSD -define OSD_ENABLED 1 -define HAL_OSD_TYPE_DEFAULT 1 -ROMFS_WILDCARD libraries/AP_OSD/fonts/font*.bin - -# disable SMBUS and fuel battery monitors to save flash -define HAL_BATTMON_SMBUS_ENABLE 0 -define HAL_BATTMON_FUEL_ENABLE 0 - -# disable parachute and sprayer to save flash -define HAL_PARACHUTE_ENABLED 0 -define HAL_SPRAYER_ENABLED 0 - -# reduce max size of embedded params for apj_tool.py -define AP_PARAM_MAX_EMBEDDED_PARAM 1024 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/MatekH743-bdshot/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/MatekH743-bdshot/hwdef-bl.dat new file mode 100644 index 0000000000000..fd5a1dfc833c1 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/MatekH743-bdshot/hwdef-bl.dat @@ -0,0 +1 @@ +include ../MatekH743/hwdef-bl.dat diff --git a/libraries/AP_HAL_ChibiOS/hwdef/MatekH743-bdshot/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/MatekH743-bdshot/hwdef.dat index e67a2856940bd..32ec2edd01f34 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/MatekH743-bdshot/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/MatekH743-bdshot/hwdef.dat @@ -1,138 +1,13 @@ -# hw definition file for processing by chibios_pins.py -# for Matek H743-WING +# Bi-directional dshot version of MatekF405 +# RC input and buzzer timers need to be used so buzzer becomes single tone +# and UART is used for RCIN -# MCU class and specific type -MCU STM32H7xx STM32H743xx +include ../MatekH743/hwdef.dat -# board ID for firmware load -APJ_BOARD_ID 1013 +# undefine the pins we are going to change +undef PC7 PB0 PB1 PA0 PA1 PA15 -# crystal frequency, setup to use external oscillator -OSCILLATOR_HZ 8000000 - -FLASH_SIZE_KB 2048 -env OPTIMIZE -O2 - -# bootloader takes first sector -FLASH_RESERVE_START_KB 128 - - -# ChibiOS system timer -STM32_ST_USE_TIMER 12 -define CH_CFG_ST_RESOLUTION 16 - -# USB -PA11 OTG_FS_DM OTG1 -PA12 OTG_FS_DP OTG1 - -PA13 JTMS-SWDIO SWD -PA14 JTCK-SWCLK SWD - -# SPI1 for IMU1 (MPU6000) -PA5 SPI1_SCK SPI1 -PA6 SPI1_MISO SPI1 -PD7 SPI1_MOSI SPI1 -PC15 IMU1_CS CS - -# SPI2 for MAX7456 OSD -PB12 MAX7456_CS CS -PB13 SPI2_SCK SPI2 -PB14 SPI2_MISO SPI2 -PB15 SPI2_MOSI SPI2 - -# SPI3 - external -PB3 SPI3_SCK SPI3 -PB4 SPI3_MISO SPI3 -PB5 SPI3_MOSI SPI3 - -# external CS pins -PD4 EXT_CS1 CS -PE2 EXT_CS2 CS - -# SPI4 for IMU2 (ICM20602) -PE11 IMU2_CS CS -PE12 SPI4_SCK SPI4 -PE13 SPI4_MISO SPI4 -PE14 SPI4_MOSI SPI4 - -# two I2C bus -I2C_ORDER I2C2 I2C1 - -# I2C1 -PB6 I2C1_SCL I2C1 -PB7 I2C1_SDA I2C1 - -# I2C2 -PB10 I2C2_SCL I2C2 -PB11 I2C2_SDA I2C2 - -# ADC -PC0 BATT_VOLTAGE_SENS ADC1 SCALE(1) -PC1 BATT_CURRENT_SENS ADC1 SCALE(1) -PA4 BATT2_VOLTAGE_SENS ADC1 SCALE(1) -PA7 BATT2_CURRENT_SENS ADC1 SCALE(1) - -define HAL_BATT_MONITOR_DEFAULT 4 -define HAL_BATT_VOLT_PIN 10 -define HAL_BATT_CURR_PIN 11 -define HAL_BATT2_VOLT_PIN 18 -define HAL_BATT2_CURR_PIN 7 -define HAL_BATT_VOLT_SCALE 11.0 -define HAL_BATT_CURR_SCALE 40.0 -define HAL_BATT2_VOLT_SCALE 11.0 - -PC4 PRESSURE_SENS ADC1 SCALE(2) -define HAL_DEFAULT_AIRSPEED_PIN 4 - -PC5 RSSI_ADC ADC1 -define BOARD_RSSI_ANA_PIN 8 - -# LED -# green LED1 marked as B/E -# blue LED0 marked as ACT -PE3 LED0 OUTPUT LOW GPIO(90) # blue -PE4 LED1 OUTPUT LOW GPIO(91) # green -define HAL_GPIO_A_LED_PIN 91 -define HAL_GPIO_B_LED_PIN 90 -define HAL_GPIO_LED_OFF 1 - -# order of UARTs (and USB) -SERIAL_ORDER OTG1 UART7 USART1 USART2 USART3 UART8 UART4 USART6 OTG2 - -# USART1 (telem2) -PA10 USART1_RX USART1 -PA9 USART1_TX USART1 - -# USART2 (GPS1) -PD5 USART2_TX USART2 -PD6 USART2_RX USART2 - -# USART3 (GPS2) -PD9 USART3_RX USART3 -PD8 USART3_TX USART3 - -# UART4 (spare) -PB9 UART4_TX UART4 -PB8 UART4_RX UART4 - -# USART6 (RC input), SERIAL7 PC7 USART6_RX USART6 -PC6 USART6_TX USART6 NODMA - -# UART7 (telem1) -PE7 UART7_RX UART7 -PE8 UART7_TX UART7 -PE10 UART7_CTS UART7 -PE9 UART7_RTS UART7 - -# UART8 (spare) -PE0 UART8_RX UART8 -PE1 UART8_TX UART8 - -# CAN bus -PD0 CAN1_RX CAN1 -PD1 CAN1_TX CAN1 -PD3 GPIO_CAN1_SILENT OUTPUT PUSHPULL SPEED_LOW LOW GPIO(70) # Motors PB0 TIM3_CH3 TIM3 PWM(1) GPIO(50) BIDIR @@ -140,78 +15,11 @@ PB1 TIM3_CH4 TIM3 PWM(2) GPIO(51) PA0 TIM2_CH1 TIM2 PWM(3) GPIO(52) BIDIR PA1 TIM2_CH2 TIM2 PWM(4) GPIO(53) -PA2 TIM5_CH3 TIM5 PWM(5) GPIO(54) -PA3 TIM5_CH4 TIM5 PWM(6) GPIO(55) -PD12 TIM4_CH1 TIM4 PWM(7) GPIO(56) -PD13 TIM4_CH2 TIM4 PWM(8) GPIO(57) -PD14 TIM4_CH3 TIM4 PWM(9) GPIO(58) -PD15 TIM4_CH4 TIM4 PWM(10) GPIO(59) -PE5 TIM15_CH1 TIM15 PWM(11) GPIO(60) -PE6 TIM15_CH2 TIM15 PWM(12) GPIO(61) -PA8 TIM1_CH1 TIM1 PWM(13) GPIO(62) # for WS2812 LED - # Beeper PA15 BUZZER OUTPUT GPIO(32) LOW define HAL_BUZZER_PIN 32 define HAL_BUZZER_ON 1 define HAL_BUZZER_OFF 0 -# microSD support -PC8 SDMMC1_D0 SDMMC1 -PC9 SDMMC1_D1 SDMMC1 -PC10 SDMMC1_D2 SDMMC1 -PC11 SDMMC1_D3 SDMMC1 -PC12 SDMMC1_CK SDMMC1 -PD2 SDMMC1_CMD SDMMC1 - -# GPIOs -PD10 PINIO1 OUTPUT GPIO(81) LOW -PD11 PINIO2 OUTPUT GPIO(82) LOW - DMA_PRIORITY S* TIM3* TIM2* - -define HAL_STORAGE_SIZE 16384 - -# use last 2 pages for flash storage -# H743 has 16 pages of 128k each -define STORAGE_FLASH_PAGE 14 - -# spi devices -SPIDEV mpu6000 SPI1 DEVID1 IMU1_CS MODE3 1*MHZ 4*MHZ -SPIDEV icm20602 SPI4 DEVID1 IMU2_CS MODE3 1*MHZ 4*MHZ -SPIDEV osd SPI2 DEVID4 MAX7456_CS MODE0 10*MHZ 10*MHZ - DMA_NOSHARE SPI1* SPI4* TIM3* TIM2* - -# SPI3 external connections -SPIDEV pixartflow SPI3 DEVID1 EXT_CS1 MODE3 2*MHZ 2*MHZ - -# no built-in compass, but probe the i2c bus for all possible -# external compass types -define ALLOW_ARM_NO_COMPASS -define HAL_COMPASS_DEFAULT HAL_COMPASS_NONE -define HAL_PROBE_EXTERNAL_I2C_COMPASSES -define HAL_I2C_INTERNAL_MASK 0 -define HAL_COMPASS_AUTO_ROT_DEFAULT 2 - -# two IMUs. We put icm20602 first as we can sample accel at 4kHz -IMU Invensense SPI:icm20602 ROTATION_ROLL_180_YAW_270 -IMU Invensense SPI:mpu6000 ROTATION_ROLL_180_YAW_270 -define HAL_DEFAULT_INS_FAST_SAMPLE 1 - -# MS5611 integrated on I2C2 bus, multiple possible choices for external barometer -BARO MS56XX I2C:0:0x77 -BARO DPS280 I2C:0:0x76 -BARO BMP280 I2C:0:0x76 - -define HAL_OS_FATFS_IO 1 -define HAL_BOARD_LOG_DIRECTORY "/APM/LOGS" -define HAL_BOARD_TERRAIN_DIRECTORY "/APM/TERRAIN" - -# setup for OSD -define OSD_ENABLED 1 -define HAL_OSD_TYPE_DEFAULT 1 -ROMFS_WILDCARD libraries/AP_OSD/fonts/font*.bin - -define BOARD_PWM_COUNT_DEFAULT 13 - diff --git a/libraries/AP_HAL_ChibiOS/hwdef/OmnibusNanoV6-bdshot/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/OmnibusNanoV6-bdshot/hwdef-bl.dat new file mode 100644 index 0000000000000..9db66dadf37ad --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/OmnibusNanoV6-bdshot/hwdef-bl.dat @@ -0,0 +1 @@ +include ../OmnibusNanoV6/hwdef-bl.dat diff --git a/libraries/AP_HAL_ChibiOS/hwdef/OmnibusNanoV6-bdshot/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/OmnibusNanoV6-bdshot/hwdef.dat index 1c55cb0b070ed..e95336fc32397 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/OmnibusNanoV6-bdshot/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/OmnibusNanoV6-bdshot/hwdef.dat @@ -1,152 +1,13 @@ -# hw definition file for processing by chibios_pins.py -# Omnibus F4 Nano V6 only -# with F405 mcu, mpu6000 imu, bmp280 barometer, 7456 series osd, flash log storage +# Bi-directional dshot version of OmnibusNanoV6 -MCU STM32F4xx STM32F405xx +include ../OmnibusNanoV6/hwdef.dat -# board ID for firmware load -APJ_BOARD_ID 133 +undef PB0 PB1 PA3 PB5 +undef STM32_PWM_USE_ADVANCED -# crystal frequency -OSCILLATOR_HZ 8000000 - -STM32_ST_USE_TIMER 5 - -# flash size -FLASH_SIZE_KB 1024 -FLASH_RESERVE_START_KB 64 - -# order of I2C buses -I2C_ORDER I2C2 I2C1 - -# order of UARTs -SERIAL_ORDER OTG1 USART1 UART4 USART6 USART3 - -#adc -PC1 BAT_CURR_SENS ADC1 SCALE(1) -PC2 BAT_VOLT_SENS ADC1 SCALE(1) -PA0 RSSI_IN ADC1 - -#pwm output PB0 TIM3_CH3 TIM3 PWM(1) GPIO(50) PB1 TIM3_CH4 TIM3 PWM(2) GPIO(51) BIDIR PA3 TIM2_CH4 TIM2 PWM(3) GPIO(52) BIDIR PB5 TIM3_CH2 TIM3 PWM(4) GPIO(53) BIDIR DMA_NOSHARE SPI2* - -PA4 MPU6000_CS CS -PA5 SPI1_SCK SPI1 -PA6 SPI1_MISO SPI1 -PA7 SPI1_MOSI SPI1 - -# note that this board needs PULLUP on I2C pins -PB10 I2C2_SCL I2C2 PULLUP -PB11 I2C2_SDA I2C2 PULLUP - -# I2C1 on PPM / PB9 pads of V6.x board revision -PB8 I2C1_SCL I2C1 PULLUP -PB9 I2C1_SDA I2C1 PULLUP - -# use RX3 / TX3 pins as USART3 = SERIAL4 in BRD_ALT_CONFIG = 1 -PB10 USART3_TX USART3 ALT(1) -PB11 USART3_RX USART3 ALT(1) - -# SPI2 for flash -PB15 SPI2_MOSI SPI2 -PB14 SPI2_MISO SPI2 -PB13 SPI2_SCK SPI2 -PB12 FLASH_CS CS - -# USART1 = SERIAL1 on original V6 revision only -# not available on V6.x revisions due to altered inverter layout -PA10 USART1_RX USART1 -PA9 USART1_TX USART1 - -# USART6 = SERIAL3 -PC6 USART6_TX USART6 -PC7 USART6_RX USART6 - -# UART4 (ESC sensor) -PA1 UART4_RX UART4 - -PA13 JTMS-SWDIO SWD -PA14 JTCK-SWCLK SWD - -PA15 OSD_CS CS -PB3 BMP280_CS CS -PC12 SPI3_MOSI SPI3 -PC11 SPI3_MISO SPI3 -PC10 SPI3_SCK SPI3 - -PA8 LED OUTPUT HIGH GPIO(41) - -# passive buzzer disabled, timer 3 used for PWM(4) output -#PB4 TIM3_CH1 TIM3 GPIO(70) ALARM - -# use active buzzer instead -PB4 BUZZER OUTPUT GPIO(80) LOW -define HAL_BUZZER_PIN 80 -define HAL_BUZZER_ON 1 -define HAL_BUZZER_OFF 0 - -PA11 OTG_FS_DM OTG1 -PA12 OTG_FS_DP OTG1 -PC5 VBUS INPUT OPENDRAIN - -#LED strip output pad used for RC input -PB6 TIM4_CH1 TIM4 RCININT PULLDOWN LOW - -#Omnibus F4 V3 and later had hw inverter on UART6 -#Overide it to use as GPS UART port -PC8 SBUS_INVERT_RX OUTPUT LOW -PC9 SBUS_INVERT_TX OUTPUT LOW - -# SPI Device table -SPIDEV mpu6000 SPI1 DEVID1 MPU6000_CS MODE3 1*MHZ 8*MHZ -SPIDEV bmp280 SPI3 DEVID3 BMP280_CS MODE3 1*MHZ 8*MHZ -SPIDEV osd SPI3 DEVID4 OSD_CS MODE0 10*MHZ 10*MHZ -SPIDEV dataflash SPI2 DEVID1 FLASH_CS MODE3 32*MHZ 32*MHZ - -# enable logging to dataflash -define HAL_LOGGING_DATAFLASH - -# one IMU -IMU Invensense SPI:mpu6000 ROTATION_YAW_90 - -# one baro -BARO BMP280 SPI:bmp280 - -# no built-in compass, but probe the i2c bus for all possible -# external compass types -define ALLOW_ARM_NO_COMPASS -define HAL_COMPASS_DEFAULT HAL_COMPASS_NONE -define HAL_PROBE_EXTERNAL_I2C_COMPASSES -define HAL_I2C_INTERNAL_MASK 0 - -define STORAGE_FLASH_PAGE 1 -define HAL_STORAGE_SIZE 15360 - - -# define default battery setup -define HAL_BATT_VOLT_PIN 12 -define HAL_BATT_CURR_PIN 11 -define HAL_BATT_VOLT_SCALE 11 -define HAL_BATT_CURR_SCALE 18.2 - -#analog rssi pin (also could be used as analog airspeed input) -#PA0 - ADC123_CH0 -define BOARD_RSSI_ANA_PIN 0 - - -define HAL_GPIO_A_LED_PIN 41 - -define OSD_ENABLED 1 -define HAL_OSD_TYPE_DEFAULT 1 - -define BOARD_PWM_COUNT_DEFAULT 4 - -#font for the osd -ROMFS_WILDCARD libraries/AP_OSD/fonts/font*.bin - -define HAL_MOUNT_ENABLED 0 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/Pixracer-bdshot/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/Pixracer-bdshot/hwdef-bl.dat new file mode 100644 index 0000000000000..8c09b9c31c05b --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/Pixracer-bdshot/hwdef-bl.dat @@ -0,0 +1 @@ +include ../Pixracer/hwdef-bl.dat diff --git a/libraries/AP_HAL_ChibiOS/hwdef/Pixracer-bdshot/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/Pixracer-bdshot/hwdef.dat index 3b27c60463020..9ee405f803408 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/Pixracer-bdshot/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/Pixracer-bdshot/hwdef.dat @@ -1,234 +1,15 @@ -# hw definition file for processing by chibios_hwdef.py for the -# mRo Pixracer board. This is a fmuv4 board +# Bi-directional dshot version of Pixracer +# DMA on USART1 is lost -define CONFIG_HAL_BOARD_SUBTYPE HAL_BOARD_SUBTYPE_CHIBIOS_FMUV4 +include ../Pixracer/hwdef.dat -# MCU class and specific type -MCU STM32F4xx STM32F427xx +undef PB6 PB7 PE14 PE9 -# board ID for firmware load -APJ_BOARD_ID 11 - -# crystal frequency -OSCILLATOR_HZ 24000000 - - -# ChibiOS system timer -STM32_ST_USE_TIMER 5 - -# flash size -FLASH_SIZE_KB 2048 - -env OPTIMIZE -O2 - -# serial port for stdout disabled, use USB console -# STDOUT_SERIAL SD7 -# STDOUT_BAUDRATE 57600 - -# only one I2C bus -I2C_ORDER I2C1 - -# to match px4 we make the first bus number 1 -define HAL_I2C_BUS_BASE 1 -define HAL_I2C_INTERNAL_MASK 0 - -# order of UARTs (and USB) -SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 USART1 UART7 - -# UART4 is GPS -PA0 UART4_TX UART4 -PA1 UART4_RX UART4 -PA2 BATT_VOLTAGE_SENS ADC1 -PA3 BATT_CURRENT_SENS ADC1 -PA4 VDD_5V_SENS ADC1 SCALE(2) - -# SPI1 is sensors bus -PA5 SPI1_SCK SPI1 -PA6 SPI1_MISO SPI1 -PA7 SPI1_MOSI SPI1 - -PA9 VBUS INPUT - -PA11 OTG_FS_DM OTG1 -PA12 OTG_FS_DP OTG1 - -PA13 JTMS-SWDIO SWD -PA14 JTCK-SWCLK SWD - -# PWM output for buzzer -PA15 TIM2_CH1 TIM2 GPIO(77) ALARM - -# control of spektrum power pin -PE4 SPEKTRUM_PWR OUTPUT LOW GPIO(70) -define HAL_GPIO_SPEKTRUM_PWR 70 - -# spektrum power is active low -define HAL_SPEKTRUM_PWR_ENABLED 0 - -# spektrum RC input pin, used as GPIO for bind for satellite receivers -PB0 SPEKTRUM_RC INPUT PULLUP GPIO(71) -define HAL_GPIO_SPEKTRUM_RC 71 - -PB2 BOOT1 INPUT -PB5 VDD_BRICK_VALID INPUT PULLDOWN - -# USART1 is ESP8266 PB6 USART1_TX USART1 NODMA PB7 USART1_RX USART1 NODMA -PA8 USART1_RTS USART1 -# PE10 is not a hw CTS pin for USART1 -PE10 8266_CTS INPUT - -# make GPIOs for ESP8266 available via mavlink relay control as pins -# 60 to 63 -PB4 8266_GPIO2 OUTPUT GPIO(60) -PE2 8266_GPI0 INPUT PULLUP GPIO(61) -PE5 8266_PD OUTPUT HIGH GPIO(62) -PE6 8266_RST OUTPUT HIGH GPIO(63) - -PB8 I2C1_SCL I2C1 -PB9 I2C1_SDA I2C1 - -# SPI2 is FRAM -PB10 SPI2_SCK SPI2 -PB12 CAN2_RX CAN2 -PB13 CAN2_TX CAN2 # this is SPI2_SCK on beta board -PB14 SPI2_MISO SPI2 -PB15 SPI2_MOSI SPI2 - -PC0 VBUS_VALID INPUT PULLDOWN -PC1 RSSI_IN ADC1 -PC2 MPU9250_CS CS -PC3 LED_SAFETY OUTPUT -PC4 SAFETY_IN INPUT PULLDOWN -PC5 VDD_PERIPH_EN OUTPUT HIGH - -PC7 TIM8_CH2 TIM8 RCININT FLOAT LOW # also USART6_RX for serial RC -PC13 SBUS_INV OUTPUT LOW - -PC8 SDIO_D0 SDIO -PC9 SDIO_D1 SDIO -PC10 SDIO_D2 SDIO -PC11 SDIO_D3 SDIO -PC12 SDIO_CK SDIO - - -PC14 20608_DRDY INPUT -PC15 20608_CS CS - -PD0 CAN1_RX CAN1 -PD1 CAN1_TX CAN1 -PD2 SDIO_CMD SDIO - -# USART2 serial2 telem1 -PD3 USART2_CTS USART2 -PD4 USART2_RTS USART2 -PD5 USART2_TX USART2 -PD6 USART2_RX USART2 - -PD7 BARO_CS CS - -# USART3 serial3 telem2 -PD8 USART3_TX USART3 -PD9 USART3_RX USART3 -PD10 FRAM_CS CS -PD11 USART3_CTS USART3 -PD12 USART3_RTS USART3 - -PD15 MPU9250_DRDY INPUT - -# UART8 serial4 FrSky -PE0 UART8_RX UART8 -PE1 UART8_TX UART8 - -# allow this uart to be inverted for transmit under user control -# the polarity is the value to use on the GPIO to change the polarity -# to the opposite of the default -PA10 UART8_TXINV OUTPUT HIGH GPIO(78) POL(0) - -PE3 VDD_SENSORS_EN OUTPUT HIGH - -# UART7 is debug -PE7 UART7_RX UART7 NODMA -PE8 UART7_TX UART7 NODMA PE14 TIM1_CH4 TIM1 PWM(1) GPIO(50) BIDIR -PE13 TIM1_CH3 TIM1 PWM(2) GPIO(51) -PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) PE9 TIM1_CH1 TIM1 PWM(4) GPIO(53) BIDIR -PD13 TIM4_CH2 TIM4 PWM(5) GPIO(54) -PD14 TIM4_CH3 TIM4 PWM(6) GPIO(55) DMA_PRIORITY SDIO TIM1_UP TIM1_CH4 TIM1_CH1 DMA_NOSHARE SPI1* - -PE12 MAG_DRDY INPUT -PE15 MAG_CS CS - -# SPI device table. The DEVID values are chosen to match the PX4 port -# of ArduPilot so users don't need to re-do their accel and compass calibrations -# when moving to ChibiOS -SPIDEV ms5611_int SPI2 DEVID3 BARO_CS MODE3 20*MHZ 20*MHZ -SPIDEV mpu9250 SPI1 DEVID4 MPU9250_CS MODE3 2*MHZ 4*MHZ -SPIDEV icm20608 SPI1 DEVID6 20608_CS MODE3 2*MHZ 8*MHZ -SPIDEV hmc5843 SPI1 DEVID5 MAG_CS MODE3 11*MHZ 11*MHZ -SPIDEV lis3mdl SPI1 DEVID5 MAG_CS MODE3 500*KHZ 500*KHZ -SPIDEV ramtron SPI2 DEVID10 FRAM_CS MODE3 8*MHZ 8*MHZ - -define HAL_CHIBIOS_ARCH_FMUV4 1 - -define HAL_BOARD_LOG_DIRECTORY "/APM/LOGS" -define HAL_BOARD_TERRAIN_DIRECTORY "/APM/TERRAIN" - -define HAL_STORAGE_SIZE 16384 - -# enable RAMTROM parameter storage -define HAL_WITH_RAMTRON 1 - -# enable FAT filesystem -define HAL_OS_FATFS_IO 1 - -# pixracer has 3 LEDs, Red, Green, Blue -define HAL_HAVE_PIXRACER_LED - -define HAL_GPIO_LED_ON 0 -define HAL_GPIO_LED_OFF 1 - -# LED setup for PixracerLED driver -PB11 LED_RED OUTPUT GPIO(0) -PB1 LED_GREEN OUTPUT GPIO(1) -PB3 LED_BLUE OUTPUT GPIO(2) - -define HAL_GPIO_A_LED_PIN 0 -define HAL_GPIO_B_LED_PIN 1 -define HAL_GPIO_C_LED_PIN 2 - -# battery setup -define HAL_BATT_VOLT_PIN 2 -define HAL_BATT_CURR_PIN 3 -define HAL_BATT_VOLT_SCALE 10.1 -define HAL_BATT_CURR_SCALE 17.0 - -# setup serial port defaults for ESP8266 -define HAL_SERIAL5_PROTOCOL SerialProtocol_MAVLink2 -define HAL_SERIAL5_BAUD 921600 - -# 6 PWM available by default -define BOARD_PWM_COUNT_DEFAULT 6 - - -# two IMUs -IMU Invensense SPI:icm20608 ROTATION_ROLL_180_YAW_90 -IMU Invensense SPI:mpu9250 ROTATION_ROLL_180_YAW_90 -define HAL_DEFAULT_INS_FAST_SAMPLE 1 - -# 2 compasses. R15 has LIS3MDL instead of HMC5843 -COMPASS HMC5843 SPI:hmc5843 false ROTATION_PITCH_180 -COMPASS LIS3MDL SPI:lis3mdl false ROTATION_NONE -COMPASS AK8963:probe_mpu9250 0 ROTATION_ROLL_180_YAW_90 - -# also probe all types of external I2C compasses -define HAL_PROBE_EXTERNAL_I2C_COMPASSES - -# one barometer -BARO MS56XX SPI:ms5611_int diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro-bdshot/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro-bdshot/hwdef-bl.dat new file mode 100644 index 0000000000000..d5b537521c685 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro-bdshot/hwdef-bl.dat @@ -0,0 +1 @@ +include ../mRoPixracerPro/hwdef-bl.dat diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro-bdshot/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro-bdshot/hwdef.dat index 706c8b914fd9f..405623a3292b9 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro-bdshot/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro-bdshot/hwdef.dat @@ -1,285 +1,11 @@ -########################################################################################################################################################### -# mRo Pixracer Pro Flight Controller -# STM32H743IIK6 -# 8 PWM / IO - DMA capable and hardware and/or software switchable 3.3v / 5v Logic (hardware default) -# Logic level set in hardware: No Solder for 5v, Solder 1-2 for 3.3v, Solder 2-3 for 3.3v / 5v software switchable -# Exposed JST GH Connectors: GPS UART+I2C connector, 6 Available UARTS (2 with Flow Control), 2 FDCAN, SPI, I2C, Power with analog current and voltage sense -# 3 IMUs (ICM20602 6DOF, ICM20948 9DOF, BMI088 6DOF) -# Baro, FRAM (256kb), SDCARD Socket, TC2030 JTAG, USB-C -# Onboard 3 color LED and buzzer -# Uncased weight and dimensions: -# Weight (with headers): 11.3g (.40oz) -# Length: 36mm (1.42in) -# Width: 36mm (1.42in) -# Mounting holes: 31.5mm x 31.5mm 4mm grommeted mounting holes for 3mm fasteners -# M10064C - Initial Release -########################################################################################################################################################### +# Bi-directional dshot version of mRoPixracerPro -# default to all pins low to avoid ESD issues -DEFAULTGPIO OUTPUT LOW PULLDOWN +include ../mRoPixracerPro/hwdef.dat -# MCU class and specific type -MCU STM32H7xx STM32H743xx +undef PE14 PE9 -# board ID for firmware load -APJ_BOARD_ID 1017 - -# crystal frequency -OSCILLATOR_HZ 24000000 - -FLASH_SIZE_KB 2048 - -# with 2M flash we can afford to optimize for speed -env OPTIMIZE -O2 - -# start on 2th sector (1st sector for bootloader) -FLASH_RESERVE_START_KB 128 - -# use FRAM for storage -define HAL_STORAGE_SIZE 16384 -define HAL_WITH_RAMTRON 1 - -# USB setup -USB_STRING_MANUFACTURER "mRo" - -# RC Input set for Interrupt also USART6_RX for serial RC -PC7 TIM3_CH2 TIM3 RCININT FLOAT LOW - -# Control of Spektrum power pin -PE4 SPEKTRUM_PWR OUTPUT LOW GPIO(70) -define HAL_GPIO_SPEKTRUM_PWR 70 - -# Spektrum Power is Active Low -define HAL_SPEKTRUM_PWR_ENABLED 0 - -# Spektrum RC Input pin, used as GPIO for bind for Satellite Receivers -PB0 SPEKTRUM_RC INPUT PULLUP GPIO(71) -define HAL_GPIO_SPEKTRUM_RC 71 - -# Order of I2C buses -I2C_ORDER I2C1 - -# this board only has a single I2C bus so make it external -define HAL_I2C_INTERNAL_MASK 0 - -# order of UARTs (and USB) and suggested usage -# USART2 Telem 1 (Flow Control) -# USART3 Telem 2 (Flow Control) -# UART4 GPS -# UART8 FRSKY Telem -# USART1 Additional UART -# UART7 Additional UART - -# USART6 RC input (Only RX pin is connected) - -SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 USART1 UART7 OTG2 - -# default the 2nd interface to MAVLink2 -define HAL_OTG2_PROTOCOL SerialProtocol_MAVLink2 - -# Another USART, this one for telem1. This one has RTS and CTS lines. -# USART2 telem1 -PD3 USART2_CTS USART2 -PD4 USART2_RTS USART2 -PD5 USART2_TX USART2 -PD6 USART2_RX USART2 - -# The telem2 USART, this one for telem2. This one has RTS and CTS lines. -# USART3 telem2 -PD8 USART3_TX USART3 -PD9 USART3_RX USART3 -PD11 USART3_CTS USART3 -PD12 USART3_RTS USART3 - -# UART4 GPS -PA0 UART4_TX UART4 -PA1 UART4_RX UART4 - -# USART1 Spare -PB6 USART1_TX USART1 -PB7 USART1_RX USART1 - -# UART7 Spare or Debug Console -PE7 UART7_RX UART7 -PE8 UART7_TX UART7 - -# UART8 FrSky Telemetry -PE0 UART8_RX UART8 -PE1 UART8_TX UART8 - -# RSSI Analog Input -PC1 RSSI_IN ADC1 - -# Analog current and voltage sense pins. -PA2 BATT_VOLTAGE_SENS ADC1 SCALE(1) -PA3 BATT_CURRENT_SENS ADC1 SCALE(1) - -# Now the VDD sense pin. This is used to sense primary board voltage. -PA4 VDD_5V_SENS ADC1 SCALE(2) - -#SPI1 ICM_20602 / ICM_20948 -PA5 SPI1_SCK SPI1 -PA6 SPI1_MISO SPI1 -PA7 SPI1_MOSI SPI1 - -#SPI2 FRAM / DPS310 -PB10 SPI2_SCK SPI2 -PB14 SPI2_MISO SPI2 -PB15 SPI2_MOSI SPI2 - -#SPI5 BMI088 -PF7 SPI5_SCK SPI5 -PF8 SPI5_MISO SPI5 -PF9 SPI5_MOSI SPI5 - -#SPI6 EXTERNAL -PG13 SPI6_SCK SPI6 -PG12 SPI6_MISO SPI6 -PG14 SPI6_MOSI SPI6 - -# This is the pin that senses USB being connected. It is an input pin -# setup as OPENDRAIN. -PA9 VBUS INPUT OPENDRAIN - -# This input pin is used to detect that power is valid on USB. -PC0 VBUS_VALID INPUT - -# Now we define the pins that USB is connected on. -PA11 OTG_FS_DM OTG1 -PA12 OTG_FS_DP OTG1 - -# These are the pins for SWD debugging with a STlinkv2 or black-magic probe. -PA13 JTMS-SWDIO SWD -PA14 JTCK-SWCLK SWD - -# PWM output for buzzer -PA15 TIM2_CH1 TIM2 GPIO(77) ALARM - -# Now the first I2C bus. The pin speeds are automatically setup -# correctly, but can be overridden here if needed. -PB8 I2C1_SCL I2C1 -PB9 I2C1_SDA I2C1 - -# Now setup the pins for the microSD card, if available. -PC8 SDMMC1_D0 SDMMC1 -PC9 SDMMC1_D1 SDMMC1 -PC10 SDMMC1_D2 SDMMC1 -PC11 SDMMC1_D3 SDMMC1 -PC12 SDMMC1_CK SDMMC1 -PD2 SDMMC1_CMD SDMMC1 - -# More CS pins for more sensors. The labels for all CS pins need to -# match the SPI device table later in this file. -PC2 ICM_20602_CS CS -PD7 BARO_CS CS -PD10 FRAM_CS CS SPEED_VERYLOW -PE15 ICM_20948_CS CS -PF10 BMI088_GYRO_CS CS -PF6 BMI088_ACCEL_CS CS -PG9 EXT_SPI_CS CS - -# the first CAN bus -PD0 CAN1_RX CAN1 -PD1 CAN1_TX CAN1 - -PF11 GPIO_CAN1_SILENT OUTPUT PUSHPULL SPEED_LOW LOW GPIO(72) - -# This defines the pins for the 2nd CAN interface, OEM Only. -PB13 CAN2_TX CAN2 -PB12 CAN2_RX CAN2 - -PF14 GPIO_CAN2_SILENT OUTPUT PUSHPULL SPEED_LOW LOW GPIO(73) - -# Now we start defining some PWM pins. We also map these pins to GPIO -# values, so users can set BRD_PWM_COUNT to choose how many of the PWM -# outputs on the primary MCU are setup as PWM and how many as -# GPIOs. To match HAL_PX4 we number the GPIOs for the PWM outputs -# starting at 50. PE14 TIM1_CH4 TIM1 PWM(1) GPIO(50) BIDIR -PE13 TIM1_CH3 TIM1 PWM(2) GPIO(51) -PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) PE9 TIM1_CH1 TIM1 PWM(4) GPIO(53) BIDIR -PD13 TIM4_CH2 TIM4 PWM(5) GPIO(54) -PD14 TIM4_CH3 TIM4 PWM(6) GPIO(55) -PI5 TIM8_CH1 TIM8 PWM(7) GPIO(56) -PI6 TIM8_CH2 TIM8 PWM(8) GPIO(57) DMA_PRIORITY TIM1_UP TIM1_CH4 TIM1_CH1 DMA_NOSHARE SPI1* SPI5* TIM1_UP - -define BOARD_PWM_COUNT_DEFAULT 8 - -# This is the invensense data-ready pin. We don't use it in the -# default driver. -PD15 MPU_DRDY INPUT - -# This is the pin to enable the sensors rail. It can be used to power -# cycle sensors to recover them in case there are problems with power on -# timing affecting sensor stability. We pull it high by default. -PE3 VDD_3V3_SENSORS_EN OUTPUT HIGH - -# 1.8V Sensor Level Shifter Output Enable. We pull it high by default. -PI3 VDD_1V8_SENSORS_EN OUTPUT HIGH - -# Pin for PWM Voltage Selection, 0 means 3.3v, 1 means 5v -PG6 PWM_VOLT_SEL OUTPUT LOW GPIO(74) -define HAL_GPIO_PWM_VOLT_PIN 74 -define HAL_GPIO_PWM_VOLT_3v3 0 - -# Power flag pins: these tell the MCU the status of the various power -# supplies that are available. The pin names need to exactly match the -# names used in AnalogIn.cpp. -PB5 VDD_BRICK_VALID INPUT PULLUP - -SPIDEV icm20948 SPI1 DEVID1 ICM_20948_CS MODE3 2*MHZ 4*MHZ -SPIDEV icm20608 SPI1 DEVID2 ICM_20602_CS MODE3 2*MHZ 8*MHZ -SPIDEV dps310 SPI2 DEVID3 BARO_CS MODE3 5*MHZ 5*MHZ -SPIDEV ramtron SPI2 DEVID10 FRAM_CS MODE3 8*MHZ 8*MHZ -SPIDEV bmi088_g SPI5 DEVID1 BMI088_GYRO_CS MODE3 10*MHZ 10*MHZ -SPIDEV bmi088_a SPI5 DEVID2 BMI088_ACCEL_CS MODE3 10*MHZ 10*MHZ - -# Now some defines for logging and terrain data files. -define HAL_BOARD_LOG_DIRECTORY "/APM/LOGS" -define HAL_BOARD_TERRAIN_DIRECTORY "/APM/TERRAIN" - -# Enable FAT filesystem support (needs a microSD defined via SDMMC). -define HAL_OS_FATFS_IO 1 - -# Now setup the default battery pins driver analog pins and default -# scaling for the power brick. -define HAL_BATT_VOLT_PIN 14 -define HAL_BATT_CURR_PIN 15 -define HAL_BATT_VOLT_SCALE 10.1 -define HAL_BATT_CURR_SCALE 17.0 - -# No hardware safety pin, CAN safety switch only -# define HAL_HAVE_SAFETY_SWITCH 0 - -# Pixracer Pro has a TriColor LED, Red, Green, Blue -define HAL_HAVE_PIXRACER_LED - -define HAL_GPIO_LED_ON 0 -define HAL_GPIO_LED_OFF 1 - -# LED setup for PixracerLED driver -PB11 LED_R OUTPUT HIGH GPIO(0) -PB1 LED_G OUTPUT HIGH GPIO(1) -PB3 LED_B OUTPUT HIGH GPIO(2) - -define HAL_GPIO_A_LED_PIN 0 -define HAL_GPIO_B_LED_PIN 1 -define HAL_GPIO_C_LED_PIN 2 - -# 3 IMUs -IMU BMI088 SPI:bmi088_a SPI:bmi088_g ROTATION_NONE -IMU Invensense SPI:icm20608 ROTATION_ROLL_180_YAW_90 -IMU Invensensev2 SPI:icm20948 ROTATION_ROLL_180_YAW_90 - -define HAL_DEFAULT_INS_FAST_SAMPLE 7 - -# 1 baro -BARO DPS280 SPI:dps310 - -# 1 compass -COMPASS AK09916:probe_ICM20948 0 ROTATION_ROLL_180 -define HAL_PROBE_EXTERNAL_I2C_COMPASSES diff --git a/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4pro-bdshot/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4pro-bdshot/hwdef-bl.dat new file mode 100644 index 0000000000000..18562c825498c --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4pro-bdshot/hwdef-bl.dat @@ -0,0 +1 @@ +include ../omnibusf4pro/hwdef-bl.dat diff --git a/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4pro-bdshot/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4pro-bdshot/hwdef.dat index dbaf75fa42075..d4b4d1a6d2911 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4pro-bdshot/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4pro-bdshot/hwdef.dat @@ -1,163 +1,10 @@ -# hw definition file for processing by chibios_pins.py -# Omnibus F4 PRO with on-board current sensor -# with F405 mcu, mpu6000 imu, bmp280 barometer, 7456 series osd and sdcard +# Bi-directional dshot version of omnibusf4pro +# Buzzer timer is required so becomes single tone -MCU STM32F4xx STM32F405xx +include ../omnibusf4pro/hwdef.dat -HAL_CHIBIOS_ARCH_F405 1 +undef PB0 PB1 PA3 PB4 -# board ID for firmware load -APJ_BOARD_ID 131 - -# crystal frequency -OSCILLATOR_HZ 8000000 - -STM32_ST_USE_TIMER 5 - -# flash size -FLASH_SIZE_KB 1024 -FLASH_RESERVE_START_KB 64 - -# order of I2C buses -I2C_ORDER I2C2 - -# order of UARTs -SERIAL_ORDER OTG1 USART1 USART3 USART6 UART4 - -#adc -PC1 BAT_CURR_SENS ADC1 SCALE(1) -PC2 BAT_VOLT_SENS ADC1 SCALE(1) - -#analog rssi pin (also could be used as analog airspeed input) -PA0 RSSI_IN ADC1 -define BOARD_RSSI_ANA_PIN 0 - -#pwm output. 1 - 4 on main header, 5 & 6 on separated header w/o 5V supply, 7 & 8 on CH5 and CH6 pads PB0 TIM3_CH3 TIM3 PWM(1) GPIO(50) PB1 TIM3_CH4 TIM3 PWM(2) GPIO(51) BIDIR PA3 TIM2_CH4 TIM2 PWM(3) GPIO(52) BIDIR -PA2 TIM2_CH3 TIM2 PWM(4) GPIO(53) -PA1 TIM2_CH2 TIM2 PWM(5) GPIO(54) -PA8 TIM1_CH1 TIM1 PWM(6) GPIO(55) -PC8 TIM8_CH3 TIM8 PWM(7) GPIO(56) -PC9 TIM8_CH4 TIM8 PWM(8) GPIO(59) - -PA4 MPU6000_CS CS -PA5 SPI1_SCK SPI1 -PA6 SPI1_MISO SPI1 -PA7 SPI1_MOSI SPI1 - -# note that this board needs PULLUP on I2C pins -PB10 I2C2_SCL I2C2 PULLUP -PB11 I2C2_SDA I2C2 PULLUP - -# use I2C pins as USART3 (SERIAL2) in BRD_ALT_CONFIG=1 & 4 -PB10 USART3_TX USART3 ALT(1) -PB11 USART3_RX USART3 ALT(1) -PB10 USART3_TX USART3 ALT(4) -PB11 USART3_RX USART3 ALT(4) - -PB15 SPI2_MOSI SPI2 -PB14 SPI2_MISO SPI2 -PB13 SPI2_SCK SPI2 -PB12 SDCARD_CS CS - -PA10 USART1_RX USART1 -PA9 USART1_TX USART1 - -PC6 USART6_TX USART6 -PC7 USART6_RX USART6 - -# UART4 TX available as an alternative config on PA0 (RSSI pad) with BRD_ALT_CONFIG=2 -PA0 UART4_TX UART4 ALT(2) - -# full UART4 also available as alt config on PA0 (RSSI pad) and PA1 (PWM output chan 5) with BRD_ALT_CONFIG=3 & 4 -PA0 UART4_TX UART4 ALT(3) -PA1 UART4_RX UART4 ALT(3) -PA0 UART4_TX UART4 ALT(4) -PA1 UART4_RX UART4 ALT(4) - -PA13 JTMS-SWDIO SWD -PA14 JTCK-SWCLK SWD - -PA15 OSD_CS CS -PB3 BMP280_CS CS -PC12 SPI3_MOSI SPI3 -PC11 SPI3_MISO SPI3 -PC10 SPI3_SCK SPI3 - -PB5 LED_BLUE OUTPUT LOW GPIO(1) -define HAL_GPIO_A_LED_PIN 1 - -#dummy assignment required to allow AP_NOTIFY to use board led -define HAL_GPIO_B_LED_PIN 2 - -# TIM3 is needed for bi-directional dshot -#PB4 TIM3_CH1 TIM3 GPIO(58) ALARM LOW - -#use LED-STRIP output as general purpose GPIO -PB6 GP_GPIO OUTPUT LOW GPIO(70) - -PA11 OTG_FS_DM OTG1 -PA12 OTG_FS_DP OTG1 -PC5 VBUS INPUT OPENDRAIN - -# "PPM" solder pad/resistor should be soldered and "S-BUS" resistor/solder pad removed -# Overwise UART1 or UART6 or RCIN will not work -PB8 TIM4_CH3 TIM4 RCININT PULLDOWN LOW - - -# SPI Device table -SPIDEV mpu6000 SPI1 DEVID1 MPU6000_CS MODE3 1*MHZ 8*MHZ -SPIDEV sdcard SPI2 DEVID2 SDCARD_CS MODE0 400*KHZ 25*MHZ -SPIDEV bmp280 SPI3 DEVID3 BMP280_CS MODE3 1*MHZ 8*MHZ -SPIDEV osd SPI3 DEVID4 OSD_CS MODE0 10*MHZ 10*MHZ - -# one IMU -IMU Invensense SPI:mpu6000 ROTATION_YAW_180 - -# one baro -BARO BMP280 SPI:bmp280 - -# no built-in compass, but probe the i2c bus for all possible -# external compass types -define ALLOW_ARM_NO_COMPASS -define HAL_COMPASS_DEFAULT HAL_COMPASS_NONE -define HAL_PROBE_EXTERNAL_I2C_COMPASSES -define HAL_I2C_INTERNAL_MASK 0 -define HAL_COMPASS_AUTO_ROT_DEFAULT 2 - -define STORAGE_FLASH_PAGE 1 -define HAL_STORAGE_SIZE 15360 - -define HAL_OS_FATFS_IO 1 -define HAL_BOARD_LOG_DIRECTORY "/APM/LOGS" -define HAL_BOARD_TERRAIN_DIRECTORY "/APM/TERRAIN" - -# define default battery setup -define HAL_BATT_VOLT_PIN 12 -define HAL_BATT_CURR_PIN 11 -define HAL_BATT_VOLT_SCALE 11 -define HAL_BATT_CURR_SCALE 18.2 - -define OSD_ENABLED 1 -define HAL_OSD_TYPE_DEFAULT 1 - -#To complementary channels work we define this -define STM32_PWM_USE_ADVANCED TRUE - -define BOARD_PWM_COUNT_DEFAULT 8 - -#font for the osd -ROMFS_WILDCARD libraries/AP_OSD/fonts/font*.bin - -# disable SMBUS and fuel battery monitors to save flash -define HAL_BATTMON_SMBUS_ENABLE 0 -define HAL_BATTMON_FUEL_ENABLE 0 - -# disable parachute and sprayer to save flash -define HAL_PARACHUTE_ENABLED 0 -define HAL_SPRAYER_ENABLED 0 - -# reduce max size of embedded params for apj_tool.py -define AP_PARAM_MAX_EMBEDDED_PARAM 1024 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py b/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py index afbe8f370ca43..c09c7e04787f7 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py +++ b/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py @@ -2053,27 +2053,30 @@ def process_line(line): elif a[0] == 'ROMFS_WILDCARD': romfs_wildcard(a[1]) elif a[0] == 'undef': - print("Removing %s" % a[1]) - config.pop(a[1], '') - bytype.pop(a[1], '') - bylabel.pop(a[1], '') - # also remove all occurences of defines in previous lines if any - for line in alllines[:]: - if line.startswith('define') and a[1] == line.split()[1]: - alllines.remove(line) - newpins = [] - for pin in allpins: - if pin.type == a[1] or pin.label == a[1] or pin.portpin == a[1]: - portmap[pin.port][pin.pin] = generic_pin(pin.port, pin.pin, None, 'INPUT', []) - continue - newpins.append(pin) - allpins = newpins - if a[1] == 'IMU': - imu_list = [] - if a[1] == 'COMPASS': - compass_list = [] - if a[1] == 'BARO': - baro_list = [] + for u in a[1:]: + print("Removing %s" % u) + config.pop(u, '') + bytype.pop(u, '') + bylabel.pop(u, '') + # also remove all occurences of defines in previous lines if any + for line in alllines[:]: + if line.startswith('define') and u == line.split()[1]: + alllines.remove(line) + newpins = [] + for pin in allpins: + if pin.type == u or pin.label == u or pin.portpin == u: + if pin.label is not None: + bylabel.pop(pin.label, '') + portmap[pin.port][pin.pin] = generic_pin(pin.port, pin.pin, None, 'INPUT', []) + continue + newpins.append(pin) + allpins = newpins + if u == 'IMU': + imu_list = [] + if u == 'COMPASS': + compass_list = [] + if u == 'BARO': + baro_list = [] elif a[0] == 'env': print("Adding environment %s" % ' '.join(a[1:])) if len(a[1:]) < 2: