From 182326a76fa9dd07497bb674622bbd176006eb06 Mon Sep 17 00:00:00 2001 From: Henry Wurzburg Date: Sun, 18 Dec 2022 06:48:51 -0600 Subject: [PATCH] AP_HAL_ChibiOS: rename to ReaperF745 --- .../AP_HAL_ChibiOS/hwdef/ReaperF745/README.md | 88 ++++++++++ .../hwdef/ReaperF745/ReaperF745v2_Board.jpg | Bin 0 -> 66198 bytes .../hwdef/ReaperF745/defaults.parm | 10 ++ .../hwdef/ReaperF745/hwdef-bl.dat | 41 +++++ .../AP_HAL_ChibiOS/hwdef/ReaperF745/hwdef.dat | 153 ++++++++++++++++++ 5 files changed, 292 insertions(+) create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/README.md create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/ReaperF745v2_Board.jpg create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/defaults.parm create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/hwdef-bl.dat create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/hwdef.dat diff --git a/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/README.md b/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/README.md new file mode 100644 index 0000000000..e355b67ef6 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/README.md @@ -0,0 +1,88 @@ +# Foxeer ReaperF745v2 Flight Controller + +The ReaperF745v2 is a flight controller produced by [Foxeer](https://www.foxeer.com/). + +## Features + + - MCU - STM32F745 32-bit processor + - IMU - BMI270 + - OSD - AT7456E + - Onboard Flash: 128MBit + - 5x UARTs + - 5x PWM Outputs (4 Motor Output, 1 LED) + - Battery input voltage: 2S-6S + - Integrated 45A BlueJay ESCs + +## Pinout + +![ReaperF745v2 Board](ReaperF745v2_Board.jpg "ReaperF745v2") + +## UART Mapping + +The UARTs are marked Rn and Tn in the above pinouts. The Rn pin is the +receive pin for UARTn. The Tn pin is the transmit pin for UARTn. + + - SERIAL0 -> USB + - SERIAL1 -> UART1 (DJI RCIN,but needs protocol changes to SERIAL1 and SERIAL 2) + - SERIAL2 -> UART2 (RX Protocol by default, DMA-enabled) + - SERIAL3 -> UART3 Telem/User + - SERIAL4 -> UART4 Telem/User + - SERIAL7 -> UART7 (GPS, DMA-enabled) + +## RC Input + +RC input is configured on the R2 (UART2_RX) pin by default. It supports all serial RC +protocols. For FPort you should setup the TX PIN as an RC input serial port, +with half-duplex and inversion enabled. + +## OSD Support + +The ReaperF745v2 supports OSD using OSD_TYPE 1 (MAX7456 driver). + +## PWM Output + +The ReaperF745v2 supports up to 5 PWM outputs. There are no pads for motor output +M1 to M4 as these are connected directly to the onboard ESCs. M5 is on a separate pad for LED strip or another PWM output. + +The PWM is in 2 groups: + + - PWM 1-4 in group1 + - PWM 5 in group2 + +Channels within the same group need to use the same output rate. If +any channel in a group uses DShot then all channels in the group need +to use DShot. Channels 1-4 support bi-directional dshot and this is configured by +default to take advantage of the BlueJay ESC firmware that is installed by default. + +## Battery Monitoring + +The board has a builtin voltage and current sensor. The current +sensor can read up to 130 Amps. The voltage sensor can handle up to 6S +LiPo batteries. + +The correct battery setting parameters are: + + - BATT_MONITOR 4 + - BATT_VOLT_PIN 13 + - BATT_CURR_PIN 12 + - BATT_VOLT_MULT 10.9 + - BATT_AMP_PERVLT 100 + +## Compass + +The ReaperF745v2 does not have a builtin compass, but you can attach an external compass using I2C on the SDA and SCL pads. + +## Barometer + +The ReaperF745v2 does not have a builtin barometer, but you can attach an external barometer using I2C on the SDA and SCL pads or use GPS as the EKF3 Z source. The board will boot without either, but only non altitude information requiring modes can be used. + +## Loading Firmware + +Initial firmware load can be done with DFU by plugging in USB with the +bootloader button pressed. Then you should load the "with_bl.hex" +firmware, using your favourite DFU loading tool. + +Once the initial firmware is loaded you can update the firmware using +any ArduPilot ground station software. Updates should be done with the +*.apj firmware files. + diff --git a/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/ReaperF745v2_Board.jpg b/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/ReaperF745v2_Board.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a34183563e031f38bb8cd06e29212efbf0262c4a GIT binary patch literal 66198 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

9fiPl15dvJzv-nMLQ8zo50GrJV)c$-MW7U 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 MKmOmoi=W4T0jvY9(f|Me literal 0 HcmV?d00001 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/defaults.parm new file mode 100644 index 0000000000..8b835f60eb --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/defaults.parm @@ -0,0 +1,10 @@ + +# setup SERIAL7 for GPS +SERIAL7_PROTOCOL 5 +SERIAL3_PROTOCOL 2 +SERIAL4_PROTOCOL 2 +# Board has BlueJay by default +SERVO_BLH_BDMASK 15 +SERVO_BLH_AUTO 1 +SERVO_BLH_TRATE 0 +MOT_PWM_TYPE 6 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/hwdef-bl.dat new file mode 100644 index 0000000000..c8e18b0d9a --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/hwdef-bl.dat @@ -0,0 +1,41 @@ +# hw definition file for processing by chibios_pins.py +# for Foxeer Reaper AIO V2 F745 + +# MCU class and specific type +MCU STM32F7xx STM32F745xx + +# board ID for firmware load +APJ_BOARD_ID 1074 + +# crystal frequency, setup to use external oscillator +OSCILLATOR_HZ 8000000 + +FLASH_SIZE_KB 1024 + +# bootloader starts at zero offset +FLASH_RESERVE_START_KB 0 + +# the location where the bootloader will put the firmware +FLASH_BOOTLOADER_LOAD_KB 96 + +# order of UARTs (and USB). Allow bootloading on USB and telem1 +SERIAL_ORDER OTG1 USART1 + +# USART1 +PA10 USART1_RX USART1 +PA9 USART1_TX USART1 + +# USB +PA11 OTG_FS_DM OTG1 +PA12 OTG_FS_DP OTG1 + +PA13 JTMS-SWDIO SWD +PA14 JTCK-SWCLK SWD + +PC13 LED_BOOTLOADER OUTPUT LOW +define HAL_LED_ON 0 + +# Add CS pins to ensure they are high in bootloader +PA4 AT7456E_CS CS +PA15 BMI270_CS CS +PE4 FLASH_CS CS diff --git a/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/hwdef.dat new file mode 100644 index 0000000000..ee5c7de649 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/ReaperF745/hwdef.dat @@ -0,0 +1,153 @@ +# hw definition file for processing by chibios_pins.py +# for Foxeer Reaper AIO V2 F745 + +# thanks to betaflight for pin information + +# MCU class and specific type +MCU STM32F7xx STM32F745xx + +# board ID for firmware load +APJ_BOARD_ID 1074 + +# crystal frequency, setup to use external oscillator +OSCILLATOR_HZ 8000000 + +FLASH_SIZE_KB 1024 + +# bootloader takes first sector +FLASH_RESERVE_START_KB 96 + +# only one I2C bus +I2C_ORDER I2C1 + +# order of UARTs (and USB) +SERIAL_ORDER OTG1 USART1 USART2 USART3 UART4 EMPTY EMPTY UART7 + +# Buzzer - DMA timer channel use by LEDs +PD2 BUZZER OUTPUT GPIO(80) LOW +define HAL_BUZZER_PIN 80 +define HAL_BUZZER_ON 1 +define HAL_BUZZER_OFF 0 + +# USB +PA11 OTG_FS_DM OTG1 +PA12 OTG_FS_DP OTG1 + +# Debug +PA13 JTMS-SWDIO SWD +PA14 JTCK-SWCLK SWD + +# SPI1 for OSD +PA4 AT7456E_CS CS +PA5 SPI1_SCK SPI1 +PA6 SPI1_MISO SPI1 +PA7 SPI1_MOSI SPI1 + +# SPI2 +#PA15 FLASH_CS CS +#PB13 SPI2_SCK SPI2 +#PB14 SPI2_MISO SPI2 +#PB15 SPI2_MOSI SPI2 + +# SPI3 for Gyro +PA15 GYRO_CS CS +PC10 SPI3_SCK SPI3 +PC11 SPI3_MISO SPI3 +PC12 SPI3_MOSI SPI3 + +# SPI4 for Flash +PE4 FLASH_CS CS +PE2 SPI4_SCK SPI4 +PE5 SPI4_MISO SPI4 +PE6 SPI4_MOSI SPI4 + +# I2C1 for baro +PB8 I2C1_SCL I2C1 PULLUP +PB9 I2C1_SDA I2C1 PULLUP + +PC3 BATT_VOLTAGE_SENS ADC1 SCALE(1) +PC2 BATT_CURRENT_SENS ADC1 SCALE(1) + +# define default battery setup +define HAL_BATT_VOLT_PIN 13 +define HAL_BATT_CURR_PIN 12 +define HAL_BATT_VOLT_SCALE 10.9 +define HAL_BATT_CURR_SCALE 100 +define HAL_BATT_MONITOR_DEFAULT 4 + +PC5 RSSI_ADC ADC1 + +# USART1 (DJI RCIN) +PA10 USART1_RX USART1 NODMA + +# USART2 (RX) +PA2 USART2_TX USART2 +PA3 USART2_RX USART2 +define HAL_SERIAL2_PROTOCOL SerialProtocol_RCIN + +# USART3 +PB10 USART3_TX USART3 NODMA +PB11 USART3_RX USART3 NODMA + +# UART4 (Camera) +PA0 UART4_TX UART4 NODMA +PA1 UART4_RX UART4 NODMA + +# UART7 (GPS) +PE7 UART7_RX UART7 +PE8 UART7_TX UART7 + +# Motor order implies Betaflight/X for standard ESCs +define HAL_FRAME_TYPE_DEFAULT 12 + +# Motors +PB4 TIM3_CH1 TIM3 PWM(1) GPIO(50) BIDIR # 1 +PB5 TIM3_CH2 TIM3 PWM(2) GPIO(51) # 2 +PB1 TIM3_CH4 TIM3 PWM(3) GPIO(52) BIDIR # 3 +PB0 TIM3_CH3 TIM3 PWM(4) GPIO(53) # 4 + +# NeoPixel LED strip +PA8 TIM1_CH1 TIM1 PWM(5) GPIO(54) +PC13 LED0 OUTPUT LOW GPIO(90) # Blue LED + +DMA_PRIORITY USART2* TIM3* TIM1* + +define HAL_STORAGE_SIZE 16384 +STORAGE_FLASH_PAGE 1 + +# enable logging to dataflash +define HAL_LOGGING_DATAFLASH_ENABLED 1 + +# spi devices bmi270(v2) icm42688 (v3) +SPIDEV bmi270 SPI3 DEVID1 GYRO_CS MODE3 1*MHZ 4*MHZ +SPIDEV icm42688 SPI3 DEVID1 GYRO_CS MODE3 2*MHZ 8*MHZ +SPIDEV dataflash SPI4 DEVID1 FLASH_CS MODE3 32*MHZ 32*MHZ +SPIDEV osd SPI1 DEVID1 AT7456E_CS MODE0 10*MHZ 10*MHZ + +# no built-in compass and no external I2C so no compass +define ALLOW_ARM_NO_COMPASS +define HAL_I2C_INTERNAL_MASK 0 + +# one IMU: bmi270 or icm42688 +IMU BMI270 SPI:bmi270 ROTATION_ROLL_180 +IMU Invensensev3 SPI:icm42688 ROTATION_ROLL_180_YAW_90 + +define HAL_DEFAULT_INS_FAST_SAMPLE 1 + +# no BARO +define HAL_BARO_ALLOW_INIT_NO_BARO 1 + +# setup for OSD +define OSD_ENABLED 1 +define HAL_OSD_TYPE_DEFAULT 1 +ROMFS_WILDCARD libraries/AP_OSD/fonts/font0.bin + +define STM32_PWM_USE_ADVANCED TRUE + +# save some flash +include ../include/save_some_flash.inc +define AP_GRIPPER_ENABLED 0 +define HAL_PARACHUTE_ENABLED 0 +define HAL_SPRAYER_ENABLED 0 +define AP_BATTMON_SMBUS_ENABLE 0 +define AP_BATTMON_FUEL_ENABLE 0