diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/README.md b/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/README.md new file mode 100644 index 0000000000000..32f6e49f4128b --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/README.md @@ -0,0 +1,105 @@ +# 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) + - 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, and 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 (SPARE, DMA-enabled)| +|SERIAL4|TX3/RX3|UART3 (GPS1, DMA-enabled)| +|SERIAL5|TX4/RX4|UART4 (RCIN, DMA-enabled)| +|SERIAL6|TX6/RX6|UART6 (VTX, DMA-enabled)| +|SERIAL7|TX8/RX8|UART8 (ESC-Telemetry)| + +## 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 default to be disabled and can be enabled by setting the following parameter: + - BRD_SAFETY_DEFLT 1 + +## RC Input + +RC input is configured on the on UART4 with sh1.0 connector. It supports all serial RC protocols. DJI sbus needs solder connection for the solder pad and are connected to UART4, inversion for UART4 needs to be configured. + +## OSD Support + +SkySakura H743 only supports HD OSD through uart connection. However, external spi is provided and an external AT7456E can be connected to enable analog OSD. + +## PWM Output + +The SkySakura H743 has 13 PWM outputs. M1-M8 are linked to sh1.0 8 pin connectors. All 8 outputs support bi-directional DShot and DShot. Output 9-13 support normal Dshot and 13 is configured as LED. + +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. The voltage sensor can handle up to 12S LiPo batteries. Current sensor and BATT2 moniter is present. +BATT2 voltage input is 6.6V capable, voltage divider resistor is 10k/10k so maximum input on batt2 pad is 13.2V. +ADC3 pad is BATT2 current input, ADC4 pad is BATT2 voltage input. + +The correct battery setting parameters are: + + - BATT_MONITOR 4 + - BATT_VOLT_PIN 10 + - BATT_VOLT_MULT 34 + - BATT_CURR_PIN 11 + - BATT2_MONITOR 4 + - BATT2_VOLT_PIN 12 + - BATT2_CURR_PIN 13 + - BATT2_VOLT_MULT 10 + +These are set by default in the firmware and shouldn't need to be adjusted + +## Compass + +The SkySakura H743 have a builtin IST8310 compass. + +## NeoPixel LED + +PWM13 provides external NeoPixel LED support. + +## 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/SkySakuraH743/SkySakuraH743.png b/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/SkySakuraH743.png new file mode 100644 index 0000000000000..96bc4932d2f87 Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/SkySakuraH743.png differ diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/Wiring diagram.pdf b/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/Wiring diagram.pdf new file mode 100644 index 0000000000000..bd51238230466 Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/Wiring diagram.pdf differ diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/defaults.parm new file mode 100644 index 0000000000000..acb9701c258e2 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/defaults.parm @@ -0,0 +1,23 @@ +# SERIAL1 is MAVLink2 by default +SERIAL1_PROTOCOL 2 +SERIAL1_BAUD 57 +# SERIAL2 is MAVLink2 by default +SERIAL2_PROTOCOL 2 +SERIAL2_BAUD 57 +# SERIAL4 is GPS by default +SERIAL4_PROTOCOL 5 +SERIAL4_BAUD 230 +# SERIAL5 is ESC-telemetry by default +SERIAL5_PROTOCOL 23 +SERIAL5_BAUD 115 +# SERIAL6 is VTX-DisplayPort by default +SERIAL6_PROTOCOL 42 +SERIAL6_BAUD 115 +# SERIAL7 is ESC-telemetry by default +SERIAL7_PROTOCOL 16 +SERIAL7_BAUD 115 +# Disable safety button by default +BRD_SAFETY_DEFLT 0 +# Default FRAME +FRAME_CLASS 1 +FRAME_TYPE 12 \ No newline at end of file diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/hwdef-bl.dat new file mode 100644 index 0000000000000..e0b9f1bb8b42a --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/hwdef-bl.dat @@ -0,0 +1,51 @@ +# 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 + +# 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 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/hwdef.dat new file mode 100644 index 0000000000000..a79941b8df6d6 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/SkySakuraH743/hwdef.dat @@ -0,0 +1,216 @@ +# 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 + +# 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 10 +define HAL_BATT_CURR_PIN 11 +define HAL_BATT2_VOLT_PIN 12 +define HAL_BATT2_CURR_PIN 13 +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 (SPARE) +PA10 USART1_RX USART1 +PA9 USART1_TX USART1 + +# USART2 (SPARE) +PD5 USART2_TX USART2 NODMA +PD6 USART2_RX USART2 NODMA + +# USART3 (GPS1) +PD9 USART3_RX USART3 +PD8 USART3_TX USART3 + +# UART4 (RCIN) +PB9 UART4_TX UART4 +PB8 UART4_RX UART4 + +# USART6 (VTX) +PC7 USART6_RX USART6 +PC6 USART6_TX USART6 + +# 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 + +# 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) +PB0 TIM3_CH3 TIM3 PWM(3) GPIO(52) BIDIR +PB1 TIM3_CH4 TIM3 PWM(4) GPIO(53) +PA0 TIM2_CH1 TIM2 PWM(5) GPIO(54) BIDIR +PA1 TIM2_CH2 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 PINIO1 OUTPUT GPIO(85) LOW + + +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_PITCH_180 +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 I2C1 bus, BMP280 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 \ No newline at end of file