hwdef: SkySakura H743 fc Support

SkySakura H743 fc Support
This commit is contained in:
SakuraRC_Yang 2024-09-13 16:06:36 +08:00 committed by Andrew Tridgell
parent e63740d35d
commit 7d4c75bb78
8 changed files with 15502 additions and 0 deletions

BIN
Tools/bootloaders/SkySakuraH743_bl.bin generated Normal file

Binary file not shown.

View File

@ -0,0 +1,115 @@
# SkySakura H743 Flight Controller
The SkySakura H743 is a flight controller produced by [SkySakuraRC]
## Features
- MCU: STM32H743VIT6, 480MHz
- Gyro1: ICM42688
- Gyro2: IIM42652
- SD Card support
- BEC output: 5V 5A & 12V 5A (MAX 60W total) (switchable 12V)
- Barometer1: DPS310
- Barometer2: ICP20100
- Magnometer: IST8310
- CAN bus support
- 7 UARTS: (USART1, USART2, USART3, UART4, USART6, UART7 with flow control, UART8)
- 2 I2C, I2C1 is used internally.
- 13 PWM outputs (12 motor outputs, 1 led)
- 4-12s wide voltage support
## Pinout
![SkySakura H743 Board](SkySakuraH743.png "SkySakura H743")
## 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.
|Name|Pin|Function|
|:-|:-|:-|
|SERIAL0|COMPUTER|USB|
|SERIAL1|RX7/TX7|UART7 (MAVLink2, flow-control-capable)|
|SERIAL2|TX1/RX1|UART1 (MAVLink2, DMA-enabled)|
|SERIAL3|TX2/RX2|UART2 (USER)|
|SERIAL4|TX3/RX3|UART3 (GPS1, DMA-enabled)|
|SERIAL5|TX4/RX4|UART4 (RCIN, DMA-enabled)|
|SERIAL6|TX6/RX6|UART6 (DisplayPort, DMA-enabled)|
|SERIAL7|TX8/RX8|UART8 (ESC-Telemetry, RX8 on ESC connectors, TX8 can be used if protocol is change from ESC telem)|
|SERIAL8|COMPUTER|USB|
## Safety Button
SkySakura H743 supports safety button, with connection to sh1.0 6 pin connector, with buzzer and safety led on the same connector.
Safety button is defaulted to be disabled but can be enabled by setting the following parameter:
- BRD_SAFETY_DEFLT 1
## RC Input
RC input is configured on UART4 with an sh1.0 connector. It supports all RC protocols except PPM. The SBUS pin on the HD VTX connector is tied directly the UART4 RX. If ELRS is used on UART4, then the SBUS lead from a DJI VTX must not be connected to the SBUS to prevent ELRS lock up on boot.
## OSD Support
SkySakura H743 supports HD OSD through UART6 by default.
## VTX Power Control
The 12VSW output voltage on the HD VTX connector is controlled by GPIO 85, via RELAY1 by default. Low activates the voltage.
## PWM Output
The SkySakura H743 has 13 PWM outputs. M1-M8 are linked to sh1.0 8 pin connectors. The first 8 outputs support bi-directional DShot and DShot. Output 9-13 only support non-DShot protocols and 13 is configured as NEOPIXEL LED by default.
The PWM are in in two groups:
- PWM 1-2 in group1
- PWM 3-4 in group2
- PWM 5-6 in group3
- PWM 7-8 in group4
- PWM 9-12 in group5
- PWM 13 in group6
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.
## Battery Monitoring
The board has a builtin voltage sensor and external current monitor inputs. The voltage sensor can handle up to 12S LiPo batteries. The current sensor scale's default range is 120A, but will need to be adjusted according to which sensor is used. These inputs are present on the first ESC connector.
A second battery monitor can be also used. Its voltage sensor is capable of reading up to 6.6V maximum and is available on the A3 solder pad. Its current monitor input is on the A4 solder pad.
The default battery setting parameters are:
- BATT_MONITOR 4
- BATT_VOLT_PIN 10
- BATT_VOLT_MULT 34
- BATT_CURR_PIN 11
- set BATT2_MONITOR 4
- BATT2_VOLT_PIN 12
- BATT2_CURR_PIN 13
- BATT2_VOLT_MULT 10
- set BATT2_AMP_PERVLT to appropriate value for second current sensor
## Compass
The SkySakura H743 have a builtin IST8310 compass. Due to motor interference, users often disable this compass and use an external compass attached via the external SDA/SCL pins.
## NeoPixel LED
PWM13 provides external NeoPixel LED support.
## Firmware
Firmware can bee found on the `firmware server < https://firmware.ardupilot.org`__ in the "SkySakuraH743" folders
## 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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 KiB

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
SERVO13_FUNCTION 120
NTF_LED_TYPES 257

View File

@ -0,0 +1,77 @@
# hw definition file for processing by chibios_pins.py
# for SakuraH743 bootloader
# MCU class and specific type
MCU STM32H7xx STM32H743xx
# board ID for firmware load
APJ_BOARD_ID 2714
# USB setup
USB_STRING_MANUFACTURER "SkySakura"
# crystal frequency, setup to use external oscillator
OSCILLATOR_HZ 8000000
FLASH_SIZE_KB 2048
# bootloader starts at zero offset
FLASH_RESERVE_START_KB 0
# the location where the bootloader will put the firmware
# the H743 has 128k sectors
FLASH_BOOTLOADER_LOAD_KB 128
# order of UARTs (and USB). Allow bootloading on USB and telem1
SERIAL_ORDER OTG1 UART7
# UART7 (telem1)
PE7 UART7_RX UART7
PE8 UART7_TX UART7
PE10 UART7_CTS UART7
PE9 UART7_RTS UART7
# PA10 IO-debug-console
PA11 OTG_FS_DM OTG1
PA12 OTG_FS_DP OTG1
PA13 JTMS-SWDIO SWD
PA14 JTCK-SWCLK SWD
# make sure Vsw is on during bootloader
PE15 PINIO1 OUTPUT HIGH
PB5 LED_BOOTLOADER OUTPUT LOW
define HAL_LED_ON 0
# Add CS pins to ensure they are high in bootloader
PA4 IMU1_CS CS
PE11 IMU2_CS CS
PC5 BARO2_CS CS
PB12 EXT_CS CS
# enable DFU by default
ENABLE_DFU_BOOT 1
# enable flashing from SD card:
PC8 SDMMC1_D0 SDMMC1
PC9 SDMMC1_D1 SDMMC1
PC10 SDMMC1_D2 SDMMC1
PC11 SDMMC1_D3 SDMMC1
PC12 SDMMC1_CK SDMMC1
PD2 SDMMC1_CMD SDMMC1
# enable FAT filesystem support (needs a microSD defined via SDMMC)
define HAL_OS_FATFS_IO 1
define AP_BOOTLOADER_FLASH_FROM_SD_ENABLED 1
# FATFS support:
define CH_CFG_USE_MEMCORE 1
define CH_CFG_USE_HEAP 1
define CH_CFG_USE_SEMAPHORES 0
define CH_CFG_USE_MUTEXES 1
define CH_CFG_USE_DYNAMIC 1
define CH_CFG_USE_WAITEXIT 1
define CH_CFG_USE_REGISTRY 1

View File

@ -0,0 +1,229 @@
# hw definition file for processing by chibios_pins.py
# for SakuraH743
# MCU class and specific type
MCU STM32H7xx STM32H743xx
# board ID for firmware load
APJ_BOARD_ID 2714
# crystal frequency, setup to use external oscillator
OSCILLATOR_HZ 8000000
FLASH_SIZE_KB 2048
env OPTIMIZE -Os
# USB setup
USB_STRING_MANUFACTURER "SkySakura"
#debug on USART6 -- Uncomment if debugging
#STDOUT_SERIAL SD6
#STDOUT_BAUDRATE 115200
# bootloader takes first sector
FLASH_RESERVE_START_KB 128
# ChibiOS system timer
STM32_ST_USE_TIMER 12
define CH_CFG_ST_RESOLUTION 16
# DRDY pins
PC4 DRDY_IIM42652_SPI1 INPUT
PB2 DRDY_ICM42688_SPI4 INPUT
# USB
PA11 OTG_FS_DM OTG1
PA12 OTG_FS_DP OTG1
# This is the pin that senses USB being connected. It is an input pin
# setup as OPENDRAIN.
PD4 VBUS INPUT OPENDRAIN
PA13 JTMS-SWDIO SWD
PA14 JTCK-SWCLK SWD
# allow to have have a dedicated safety switch pin
define HAL_HAVE_SAFETY_SWITCH 1
PD10 LED_SAFETY OUTPUT LOW
PD11 SAFETY_IN INPUT PULLDOWN
#disable safety button by default
define BOARD_SAFETY_ENABLE_DEFAULT 0
# SPI1 for IMU1 (IIM42652)
PA5 SPI1_SCK SPI1
PA6 SPI1_MISO SPI1
PA7 SPI1_MOSI SPI1
PA4 IMU1_CS CS
# SPI2 - external (USER)
PB13 SPI2_SCK SPI2
PB14 SPI2_MISO SPI2
PB15 SPI2_MOSI SPI2
PB12 EXT_CS CS
#PB12 FLASH_CS CS
# SPI1 for BARO2 (DPS310)
PC5 BARO2_CS CS
# SPI4 for IMU2 (ICM42688)
PE11 IMU2_CS CS
PE12 SPI4_SCK SPI4
PE13 SPI4_MISO SPI4
PE14 SPI4_MOSI SPI4
# two I2C bus
I2C_ORDER I2C1 I2C2
# I2C1
PB6 I2C1_SCL I2C1 PULLUP
PB7 I2C1_SDA I2C1 PULLUP
# I2C2
PB10 I2C2_SCL I2C2
PB11 I2C2_SDA I2C2
# ADC
PC3 BATT_VOLTAGE_SENS ADC1 SCALE(1)
PC2 BATT_CURRENT_SENS ADC1 SCALE(1)
PC0 BATT2_VOLTAGE_SENS ADC2 SCALE(1)
PC1 BATT2_CURRENT_SENS ADC2 SCALE(1)
define HAL_BATT_MONITOR_DEFAULT 4
define HAL_BATT_VOLT_PIN 13
define HAL_BATT_CURR_PIN 12
define HAL_BATT2_VOLT_PIN 10
define HAL_BATT2_CURR_PIN 11
define HAL_BATT_VOLT_SCALE 34.0
define HAL_BATT_CURR_SCALE 40.0
define HAL_BATT2_VOLT_SCALE 10
# LED setup
define AP_NOTIFY_GPIO_LED_RGB_ENABLED 1
PB5 LED_RED OUTPUT GPIO(83)
PB4 LED_GREEN OUTPUT GPIO(82)
PB3 LED_BLUE OUTPUT GPIO(81)
define AP_NOTIFY_GPIO_LED_RGB_RED_PIN 83
define AP_NOTIFY_GPIO_LED_RGB_GREEN_PIN 82
define AP_NOTIFY_GPIO_LED_RGB_BLUE_PIN 81
# order of UARTs (and USB)
SERIAL_ORDER OTG1 UART7 USART1 USART2 USART3 UART4 USART6 UART8 OTG2
# USART1 (TELEM2)
PA10 USART1_RX USART1
PA9 USART1_TX USART1
# USART2 (USER)
PD5 USART2_TX USART2 NODMA
PD6 USART2_RX USART2 NODMA
define DEFAULT_SERIAL3_PROTOCOL SerialProtocol_None
# USART3 (GPS1)
PD9 USART3_RX USART3
PD8 USART3_TX USART3
# UART4 (RCIN)
PB9 UART4_TX UART4
PB8 UART4_RX UART4
define DEFAULT_SERIAL5_PROTOCOL SerialProtocol_RCIN
# USART6 (DisplayPort)
PC7 USART6_RX USART6
PC6 USART6_TX USART6
define DEFAULT_SERIAL6_PROTOCOL SerialProtocol_MSP_DisplayPort
# UART7 (telem1)
PE7 UART7_RX UART7 NODMA
PE8 UART7_TX UART7 NODMA
PE10 UART7_CTS UART7
PE9 UART7_RTS UART7
# UART8 (ESC Telemetry)
PE0 UART8_RX UART8 NODMA
PE1 UART8_TX UART8 NODMA
define DEFAULT_SERIAL7_PROTOCOL SerialProtocol_ESCTelemetry
# CAN bus
PD0 CAN1_RX CAN1
PD1 CAN1_TX CAN1
PD3 GPIO_CAN1_SILENT OUTPUT PUSHPULL SPEED_LOW LOW GPIO(90)
# Motors
PA2 TIM5_CH3 TIM5 PWM(1) GPIO(50) BIDIR
PA3 TIM5_CH4 TIM5 PWM(2) GPIO(51)
PB1 TIM3_CH4 TIM3 PWM(3) GPIO(52) BIDIR
PB0 TIM3_CH3 TIM3 PWM(4) GPIO(53)
PA1 TIM2_CH2 TIM2 PWM(5) GPIO(54) BIDIR
PA0 TIM2_CH1 TIM2 PWM(6) GPIO(55)
PE5 TIM15_CH1 TIM15 PWM(7) GPIO(56) BIDIR
PE6 TIM15_CH2 TIM15 PWM(8) GPIO(57)
PD12 TIM4_CH1 TIM4 PWM(9) GPIO(58) NODMA
PD13 TIM4_CH2 TIM4 PWM(10) GPIO(59) NODMA
PD14 TIM4_CH3 TIM4 PWM(11) GPIO(60) NODMA
PD15 TIM4_CH4 TIM4 PWM(12) GPIO(61) NODMA
#LED
PA8 TIM1_CH1 TIM1 PWM(13) GPIO(62) # for WS2812 LED
# Beeper
PD7 BUZZER OUTPUT GPIO(84) LOW
define HAL_BUZZER_PIN 84
# 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
PE15 VTX_PWR OUTPUT LOW GPIO(85)
define RELAY1_PIN_DEFAULT 85
define HAL_STORAGE_SIZE 32768
# use last 2 pages for flash storage
# H743 has 16 pages of 128k each
STORAGE_FLASH_PAGE 14
# spi devices
SPIDEV icm42688 SPI4 DEVID1 IMU2_CS MODE3 2*MHZ 16*MHZ
SPIDEV iim42652 SPI1 DEVID1 IMU1_CS MODE3 2*MHZ 8*MHZ
SPIDEV dps310 SPI1 DEVID2 BARO2_CS MODE3 5*MHZ 5*MHZ
DMA_PRIORITY SPI1* SPI4*
DMA_NOSHARE SPI1* SPI4* TIM5* TIM3* TIM2* TIM15*
# has an integreted mag, but still probe the i2c bus for all possible
# external compass types
define HAL_PROBE_EXTERNAL_I2C_COMPASSES
COMPASS IST8310 I2C:0:0x0E false ROTATION_YAW_90
define HAL_COMPASS_AUTO_ROT_DEFAULT 2
define ALLOW_ARM_NO_COMPASS
# two IMUs
# H743-V1, ICM42688, IIM42652
IMU Invensensev3 SPI:icm42688 ROTATION_YAW_180
IMU Invensensev3 SPI:iim42652 ROTATION_YAW_180
define HAL_DEFAULT_INS_FAST_SAMPLE 1
# DPS310 integrated on SPI1 bus
BARO ICP201XX I2C:0:0x63
BARO DPS310 SPI:dps310
define HAL_OS_FATFS_IO 1
define HAL_OTG2_PROTOCOL SerialProtocol_SLCAN
define HAL_FRAME_TYPE_DEFAULT 12
# enable DFU reboot for installing bootloader
# note that if firmware is build with --secure-bl then DFU is
# disabled
ENABLE_DFU_BOOT 1