Flight Controller H7A3-WING
STM32H7A3RIT6 280MHz, ICM42688P, SPL06-001, OSD, 6x UARTs, 1x I2C, 1xCAN, 11x PWM outputs, BEC5V, BEC9V,
Gallery
Specifications
Specifications
- MCU: STM32H7A3RIT6, 280MHz Cortex-M7, 1.4MB RAM, 2MB Flash
- IMU: ICM42688P
- Baro: SPL06-001
- OSD: AT7456E
- Blackbox: MicroSD socket
- I2C digital power monitor
- 6x Uarts (1,2,3,4, 5, 6) with built-in inversion.
- 11x PWM outputs
- 1x I2C
- 1x CAN
- 4x ADC (VBAT, Current, VB2, Cur2)
- 3x LEDs for FC STATUS (Blue, Red) and 3.3V indicator(Red)
- USB/Beep Extender with Type-C(USB2.0)
- 2x JST-GH1.25_4pin connector for CAN and I2C
- 9V/12V output ON/OFF switchable
- Digital video OSD is supported by any spare UART
Regulators
- Vbat Input: 9~30V (3~6S LiPo)
- BEC 5V/4v5: 2.5A cont. /3A peak
- BEC 9V/12V: 2A cont. /3A peak
- BEC Vx: 8A cont. /12A Peak, output 5V Default, 6V or 7.2V option.
- LDO 3.3V: Max.200mA
I2C digital power monitor
- No calibration required.
- Current sensing resistor: 0.00025 ohm
- Load current on current sensing resistor: 100A(Continuous), 164A(Burst)
- Voltage accuracy: ± 0.1%
- Current accuracy: ± 2%
- INA2xx I2C address: 0x45 (69)
- Parameters
- BATT_MONITOR ->21 (INA2xx)
- BATT_SHUNT -> 0.00025
- BATT_MAX_AMPS -> 164
- BATT_I2C_BUS -> 0 default
- BATT_I2C_ADDR -> 0 default (or 69)
FC Firmware
- ArduPilot: MATEKH7A3 (4.6 or newer)
- ArduPlane https://firmware.ardupilot.org/Plane/beta/MatekH7A3/
- ArduCopter https://firmware.ardupilot.org/Copter/beta/MatekH7A3/
- Flashing with STM32CubeProgrammer
Physical
- Mounting: 30.5 x 30.5mm, Φ4mm with Grommets Φ3mm
- Dimensions: 54 x 36 x 13 mm
- Weight: 30g with USB extender
Including
- 1x H7A3-WING
- 1x USB(Type-C)/Beep (Passive buzzer) Extender with 6pin cable
- 1x 20cm JST-SH-6P to JST-SH-6P cable for USB extender.
- 2x 20cm JST-GH-4P to JST-GH-4P cable for CAN & I2C port
- 1x Rubycon ZLH 35V 470uF capacitor
- Dupont 2.54 pins (Board is shipped unsoldered)
Layout
ArduPilot mapping
ArduPilot | ||||||
PWM | S1 | PWM1 GPIO50 | 5 V tolerant I/O | TIM1_CH2 | DMA/Bi-DShot | Group1 |
S2 | PWM2 GPIO51 | 5 V tolerant I/O | TIM1_CH3 | DMA/Bi-DShot | ||
S3 | PWM3 GPIO52 | 5 V tolerant I/O | TIM2_CH1 | DMA/Bi-DShot | Group2 | |
S4 | PWM4 GPIO53 | 5 V tolerant I/O | TIM2_CH2 | DMA/Bi-DShot | ||
S5 | PWM5 GPIO54 | 5 V tolerant I/O | TIM3_CH3 | DMA/Bi-DShot | Group3 | |
S6 | PWM6 GPIO55 | 5 V tolerant I/O | TIM3_CH4 | DMA/Bi-DShot | ||
S7 | PWM7 GPIO56 | 5 V tolerant I/O | TIM3_CH1 | DMA/Bi-DShot | ||
S8 | PWM8 GPIO57 | 5 V tolerant I/O | TIM3_CH2 | DMA/Bi-DShot | ||
S9 | PWM9 GPIO58 | 5 V tolerant I/O | TIM4_CH1 | DMA/DShot | Group4 | |
S10 | PWM10 GPIO59 | 5 V tolerant I/O | TIM4_CH2 | DMA/DShot | ||
S11 | PWM11 GPIO60 | 5 V tolerant I/O | TIM16_CH1 | DMA/DShot | Group5 | |
PWM1~PWM11 are Dshot and PWM capable. However, mixing Dshot and normal PWM operation for outputs is restricted into groups, ie. enabling Dshot for an output in a group requires that ALL outputs in that group be configured and used as Dshot, rather than PWM outputs. If servo and motor are mixed in same group, make sure this group run lowest PWM frequency according to the servo specification. That is to say. If Servo support Max. 50Hz, ESC must run at 50Hz in this group. |
||||||
PINIO | 9V switch | GPIO81 | RELAY1_PIN | 81 | ||
ADC | Vbat pad | BATT_VOLTAGE_SENS | 0~36V | BATT_VOLT_PIN BATT_VOLT_MULT |
10 21.0 |
|
Curr pad | BATT_CURRENT_SENS | 0~3.3V | BATT_CURR_PIN BATT_AMP_PERVLT |
11 X |
||
VB2 Pad | BATT2_VOLTAGE_SENS | 0~69V | BATT2_VOLT_PIN BATT2_VOLT_MULT |
18 21.0 |
||
CU2 Pad | BATT2_CURRENT_SENS | 0~3.3V | BATT2_CURR_PIN BATT2_AMP_PERVLT |
8 X |
||
I2C | SCL/SDA | I2C3 | 5V tolerant I/O | on board Baro SPL06-001 | I2C Address | 0x76 |
on board Baro INA2XX | I2C Address | 0x45 | ||||
Digital Airspeed I2C MS4525 DLVR-L10D |
ARSPD_BUS ARSPD_TYPE ARSPD_TYPE |
0 1 9 |
||||
Magnetometer | COMPASS_AUTODEC | 1 | ||||
CAN | C-H/C-L | CAN2 | 5V tolerant I/O | CAN | CAN_D1_PROTOCOL CAN_P1_DRIVER |
1 1 |
CAN GPS CAN Compass CAN Airspeed sensor |
GPS_TYPE COMPASS_TYPEMASK ARSPD_TYPE |
9 0 8 |
||||
UART | USB | USB | console | SERIAL0_PROTOCOL | 2 | |
TX1 RX1 | USART1 w/DMA | 5 V tolerant I/O | Telemetry | SERIAL1_PROTOCOL | 2 | |
TX2 RX2 | USART2 w/DMA | 5 V tolerant I/O | RC input/Receiver | SERIAL2_PROTOCOL | 23 | |
TX3 RX3 | USART3 w/DMA | 5 V tolerant I/O | GPS | SERIAL3_PROTOCOL | 5 | |
TX4 RX4 | UART4 w/o DMA | 5 V tolerant I/O | Spare | SERIAL4_PROTOCOL | -1 | |
TX5 RX5 | UART5 w/o DMA | 5 V tolerant I/O | Spare | SERIAL5_PROTOCOL | -1 | |
TX6 RX6 | USART6 w/o DMA | 5 V tolerant I/O | Spare | SERIAL6_PROTOCOL | -1 |
RC INPUT
RC input is configured on the USART2(SERIAL2). It supports all serial RC protocols. SERIAL2_PROTOCOL=23 by default.
- PPM is not supported.
- CRSF requires Tx2 & Rx2 connection, and set SERIAL2_OPTIONS to “0” (default).
- SBUS/DSM/SRXL connects to the Rx2 pin, but SBUS requires that the SERIAL2_OPTIONS be set to “3”.
- FPort requires connection to Tx2, and set SERIAL2_OPTIONS to “7”. If Telemetry doesn’t work, try set SERIAL7_OPTIONS = 135.
- SRXL2 requires a connection to Tx2, and automatically provides telemetry. Set SERIAL2_OPTIONS to “4”.
- Any UART can be used for RC system connections in ArduPilot also, and is compatible with all protocols except PPM. See Radio Control Systems for details.
ArduPilot Relay(PINIO)
- 9V/12V output ON by default
- RELAY1_FUNCTION 1
- RELAY1_PIN 81 // PINIO1 GPIO
- RC7_OPTION 28 //Relay1 On/Off, Use CH7 of Transmitter to set 9V/12V ON/OFF
The configured feature will be triggered when the auxiliary switch’s pwm value becomes higher than 1800. It will be deactivated when the value falls below 1200.
Check the pwm value sent from the transmitter when the switch is high and low using the Mission Planner’s Initial Setup >> Mandatory Hardware >> Radio Calibration screen. If it does not climb higher than 1800 or lower than 1200, it is best to adjust the servo end points in the transmitter.
Tips & Notes
- set LOG_BACKEND_TYPE = 1 (File) for SD card logging.
- set BATT_MONITOR = 21 , BATT_SHUNT = 0.00025, BATT_MAX_AMPS = 164 for using the built-in I2C digital power monitor.