ArduPilot F4BY_H743 开发板完全指南:硬件规格、hwdef.dat 引脚映射与串口/PWM 配置实战
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
本文以 ArduPilot 仓库中 F4BY_H743 硬件定义文档 为主体,系统讲解这块 STM32H743 480MHz 飞控板的完整硬件规格、5 路串口与 16 路 PWM/DShot 输出的引脚映射、模拟量传感器参数配置以及固件刷写流程。读完后,你可以直接对照仓库中的 hwdef.dat 验证每一根引脚的归属,并完成模拟空速、RSSI、电池监测等参数设置。
F4BY_H743 飞控板由 F4BY Team 生产,在 ArduPilot 中以板级 IDAP_HW_F4BY_H743注册,该 ID 数值为 1531,定义于 board_types.txt。
1. 核心规格与板上硬件
1.1 处理器与传感器配置
F4BY_H743 的核心规格如下:
- 处理器:STM32H743 32 位处理器,主频 480MHz,2MB Flash,1MB RAM
- 传感器(不同板载硬件版本搭载不同 IMU):
- ICM-42688-P IMU(F4BY_H743 v3.0.3)
- IIM-42652 IMU(F4BY_H743 v3.0.2)
- MPU6000 IMU(F4BY_H743 v3.0.1)
- MS5611 气压计
- QMC5883P 罗盘
- 供电:由外部电源模块供电,输入范围 +5.0 ~ +6.0V;提供电流与电压模拟输入(量程 0 ~ +6.6V)
- 接口:
- 16 路 PWM 输出,支持 DShot(其中含 4 路 BDShot)
- 1 路 RC 输入
- 5 路 UART/串口(用于 GPS、双向 RC 及其他外设)
- 1 路 I2C(外接罗盘、空速等)
- 1 路 CAN 总线
- 蜂鸣器输出
- microSD 卡(用于日志记录、Lua 脚本等)
- USB Type-C 口
- USB GHS 型对外扩展接口
- DFU Bootloader 按键
这些规格在 hwdef.dat 中都有对应声明:文件头部MCU STM32H7xx STM32H743xx与MCU_CLOCKRATE_MHZ 480(第 5–6 行)声明了处理器型号和主频,FLASH_SIZE_KB 2048声明 2MB Flash,FLASH_RESERVE_START_KB 128则为 128KB 的 Bootloader 预留了 Flash 起始区域(第 12–13 行)。
1.2 尺寸
- 板尺寸:50 × 50 mm
- 安装孔距:45 × 45 mm(M3)
- 重量:15.5 g
2. 串口(UART)映射
这是本文档最核心的内容。板上串口以 Rn/Tn 丝印标识,Rn 为 UARTn 的接收脚,Tn 为发送脚。README 给出的端口映射表如下:
| 端口 | UART | 协议 | RX DMA | TX DMA |
|---|---|---|---|---|
| 0 | USB | MAVLink2 | ✘ | ✘ |
| 1 | USART2 | RC | ✔ | ✔ |
| 2 | UART1 | MAVLink2 | ✔ | ✔ |
| 3 | USART3 | GPS | ✘ | ✔ |
| 4 | UART4 | None | ✘ | ✔ |
| 5 | UART5 | None | ✘ | ✔ |
端口号(0~5)由 hwdef.dat 中的SERIAL_ORDER行决定,顺序为OTG1 USART2 USART1 USART3 UART4 UART5,与上表一一对应:端口 0 是 USB(OTG1,PA11/PA12 接 OTG_FS),端口 1 是 USART2(默认 RC),端口 2 是 USART1(默认 MAVLink2),端口 3 是 USART3(默认 GPS),端口 4/5 分别为 UART4、UART5,预留未分配协议。
各串口的具体引脚在 hwdef.dat 第 45–62 行中逐一定义:
- USART1:PB6(TX) / PB7(RX)
- USART2:PD5(TX) / PD6(RX)
- USART3:PD8(TX) / PD9(RX)
- UART4:PC10(TX) / PC11(RX)
- UART5:PC12(TX) / PD2(RX)
值得注意的细节:hwdef.dat 中 USART3_TX、UART4_TX、UART5_TX 均带有NODMA标记(第 54、57、61 行),表示这些发送通道在硬件定义层面禁用了 DMA,其 DMA 能力以硬件定义文件实际配置为准。
另外,hwdef.dat 第 37 行后的DMA_PRIORITY S*声明表明所有串口均按默认 DMA 优先级处理。
3. RC 输入
F4BY_H743 提供两种 RC 输入途径,在 hwdef.dat 中均有体现:
(1)经典 RCin 引脚(PB0)
PB0 在硬件定义中标记为TIM3_CH3 TIM3 RCININT PULLDOWN LOW(第 149 行),即中断型 RC 输入。使用 RCin 引脚支持所有单向 RC 协议:PPM、SBUS、iBus、PPM-Sum、DSM、DSM2、DSM-X、SRXL 和 SUMD。
v3.0.3 版本的板子需要在对应焊盘上焊接 RCIN 排针,焊盘位置如下:
(2)USART2 双向 RC(端口 1)
hwdef.dat 第 152 行通过define DEFAULT_SERIAL2_PROTOCOL SerialProtocol_RCIN将端口 1(USART2)默认设为 RC 输入协议,用于 CRSF/ELRS、SRXL2、IRC Ghost、FPort 等双向协议。这意味着该板开箱即用状态下:端口 1 收 RC,端口 2(USART1)跑 MAVLink2,端口 3(USART3)接 GPS,与 README 映射表的协议分配完全一致。
4. PWM / DShot 输出
16 路电机/舵机输出按硬件定时器分为 4 组,README 的分组表如下:
Group #1
| Out | Port | GPIO 编号 | BDShot |
|---|---|---|---|
| 1 | PA0 | 50 | ✔ |
| 2 | PA1 | 51 | ✔ |
| 3 | PA2 | 52 | ✔ |
| 4 | PA3 | 53 | ✔ |
Group #2
| Out | Port | GPIO 编号 | BDShot |
|---|---|---|---|
| 5 | PE9 | 54 | ✔ |
| 6 | PE11 | 55 | ✔ |
| 7 | PE13 | 56 | ✔ |
| 8 | PE14 | 57 | ✔ |
Group #3
| Out | Port | GPIO 编号 | BDShot |
|---|---|---|---|
| 9 | PD13 | 58 | |
| 10 | PD12 | 59 | |
| 11 | PD15 | 60 | |
| 12 | PD14 | 61 |
Group #4
| Out | Port | GPIO 编号 | BDShot |
|---|---|---|---|
| 13 | PC7 | 62 | |
| 14 | PC6 | 63 | |
| 15 | PC8 | 64 | |
| 16 | PC9 | 65 |
注意:同一组内的所有输出必须为同一类型(PWM 或 DShot)。
为什么同组必须同类型?从 hwdef.dat 第 127–146 行的定义可以看出原因:Group #1 四路输出挂在 TIM2(PA0~PA3 即 TIM2_CH1~CH4),Group #2 挂在 TIM1(PE9/PE11/PE13/PE14),Group #3 挂在 TIM4(PD12~PD15),Group #4 挂在 TIM8(PC6~PC9)。DShot 协议在底层是按硬件定时器粒度配置的,同一定时器上的通道无法一半跑 PWM、一半跑 DShot,因此"一组同类型"是硬件层面的硬约束。
表中 GPIO 编号(50~65)是 ChibiOS 的全局引脚编号,用于在SRVx_PIN等参数中指定输出引脚;标记BIDIR的引脚(PA0、PA2、PE9、PE13)在定义中同时保留双向能力。
5. 模拟量引脚与传感器参数
5.1 模拟传感器引脚
板上模拟传感器引脚如下(README 原始描述):
- 模拟空速:PC0(0 ~ +3.3V),引脚号 10
- 模拟 RSSI:PC1(0 ~ +3.3V),引脚号 11
- 电压 sensing:PC3(0 ~ +6.6V),引脚号 13
- 电流 sensing:PC2(0 ~ +6.6V),引脚号 12
- 板载供电 sensing:PC4(0 ~ +6.6V)
- 舵机供电 sensing:PC5(0 ~ +9.9V)
这里"引脚号"的来历可以在源码生成器中验证:chibios_hwdef.py 的write_ADC_config函数中,analog编号默认取该引脚在 ADC1 上的通道号(analog = p.extra_value('ANALOG', type=int, default=chan))。对 STM32H743 而言,PC0~PC5 恰好是 ADC1 的通道 10~15,因此 PC0 对应"引脚 10"、PC1 对应"引脚 11",依此类推。这也解释了为什么 ARSPD_PIN 和 RSSI_ANA_PIN 要用通道号而非物理丝印来填。
hwdef.dat 第 167–172 行给出了完整的 ADC1 通道定义,其中SCALE(n)表示外部电阻分压比:
PC0 PRESSURE_SENS ADC1 SCALE(1) PC1 RSSI_IN ADC1 PC2 BATT_CURRENT_SENS ADC1 SCALE(2) PC3 BATT_VOLTAGE_SENS ADC1 SCALE(2) PC4 VDD_5V_SENS ADC1 SCALE(2) PC5 FMU_SERVORAIL_VCC_SENS ADC1 SCALE(3)电压/电流分压比 2 对应 0~6.6V 量程(3.3V × 2),舵机轨分压比 3 对应 0~9.9V 量程(3.3V × 3),与 README 的量程描述完全吻合。
5.2 模拟空速参数配置
若使用 ARSPD 引脚(PC0)作为模拟空速输入,在参数中设置:
ARSPD_PIN = 10(ADC1 通道 10,即 PC0)ARSPD_TYPE = 1(模拟空速)
5.3 模拟 RSSI 参数配置
若使用 RSSI 引脚(PC1)作为模拟 RSSI 输入,设置:
RSSI_ANA_PIN = 11(ADC1 通道 11,即 PC1)RSSI_TYPE = 1(模拟 RSSI)
5.4 电池监测默认参数
板上外部电流/电压传感器输入量程为 0 ~ +6.6V,README 给出的出厂默认电池参数为:
BATT_MONITOR = 4BATT_VOLT_PIN = 13BATT_CURR_PIN = 12BATT_VOLT_MULT = 16.04981BATT_AMP_PERVLT = 100
这组默认值并非凭空写在文档里,而是由 hwdef.dat 第 181–186 行的HAL_BATT_*宏注入固件的:
define HAL_BATT_MONITOR_DEFAULT 4 define HAL_BATT_VOLT_PIN 13 define HAL_BATT_CURR_PIN 12 define HAL_BATT_VOLT_SCALE 16.04981 define HAL_BATT_CURR_SCALE 100也就是说BATT_MONITOR = 4(模拟引脚模式)、电压/电流引脚、电压倍率与安培/伏换算系数在编译期就已固化为该板的出厂默认值,用户刷完固件无需手动修改即可使用外接电流/电压传感器。
6. 其他板载外设与总线
README 未展开、但 hwdef.dat 明确定义的关键外设如下,可作为接线与故障排查的依据:
I2C 总线与罗盘/气压计:板上 I2C 顺序为I2C_ORDER I2C2 I2C1,因此 I2C:0 实际是 I2C2(PB10 SCL / PB11 SDA)。气压计为BARO MS5611 I2C:0:0x77(hwdef.dat 第 105–106 行)。罗盘探测配置(第 121–125 行)支持 I2C:0 上的 HMC5843(0x1E)、QMC5883L(0x0D)、QMC5883P(0x2C),并分别声明了ROTATION_YAW_270/ROTATION_YAW_180的安装姿态旋转。README 特别提示:由于板上罗盘可能受干扰,实际飞行中通常搭配外接 I2C 罗盘(作为 GPS/罗盘组合的一部分)使用。
SPI 总线:
- SPI1(PA5/PA6/PA7,CS 为 PA4):连接 v3.0.1 的 MPU6000 及 v3.0.3 以上版本的 IMU(注释标明 PA7 用于 3.0.3,3.0.4 及以上改用 PD7 备用脚位)
- SPI2(PB13/PB14/PB15):同时承载 RAMTRON FRAM(CS PB12,用于参数高速存储,
HAL_WITH_RAMTRON 1)和 microSD 卡(CS PE15) - SPI3(PB3/PB4/PB5,CS 为 PA15):连接第二路 IMU
IMU 声明(hwdef.dat 第 94–98 行):IMU Invensense SPI:mpu6000 ROTATION_NONE(v3.0.1)、IMU Invensensev3 SPI:imu2 ROTATION_ROLL_180(v3.0.3 的 ICM-42688),并额外支持外接 Invensensev3 IMU(SPI:imu1)。
CAN 总线:PD0(RX)/ PD1(TX)接 CAN1(第 42–43 行),可接 DroneCAN 电机、ESC 遥测等外设。
扩展 GPIO:
| 引脚丝印 | 功能 | GPIO 编号 | 物理引脚 |
|---|---|---|---|
| D1 | 通用输出 | 1 | PC14 |
| D2 | 通用输出 | 2 | PC13 |
| D3 | 通用输出 | 3 | PE4 |
| D4 | Cam Feedback | 4 | PE6 |
| D5 | Cam Trigger | 5 | PC15 |
这些引脚(hwdef.dat 第 175–179 行)均为 0 ~ +3.3V,可用于继电器控制、云台/相机快门触发与反馈等。蜂鸣器挂在 PE5(TIM15_CH1,ALARM功能),RGB 状态灯为 PE3(红)/PE2(绿)/PE1(蓝)/PE0(黄)。
7. 引脚总图
8. 固件获取与刷写
固件获取:F4BY_H743 的官方固件可从 ArduPilot 官方固件发布站获取,位于标注为 "F4BY_H743" 的子文件夹中(该站的 Copter/Plane/Rover/Sub 各版本目录下均有对应文件夹)。
刷写方式:
- 板上出厂预装了 ArduPilot 兼容 Bootloader,之后可用任何 ArduPilot 兼容地面站直接加载
.apj固件文件。 - 首次刷写需进入 DFU 模式:按住 Bootloader 按键的同时插入 USB,然后使用任意 DFU 工具加载
with_bl.hex固件(该固件包含 Bootloader,烧入后即建立完整的 Bootloader + 应用固件结构)。
Bootloader 的 Flash 布局在 hwdef-bl.dat 中定义:FLASH_RESERVE_START_KB 0表示 Bootloader 从 Flash 0 偏移安装,FLASH_BOOTLOADER_LOAD_KB 128表示 Bootloader 本体占 128KB;而应用固件侧的FLASH_RESERVE_START_KB 128正好与之衔接,保证应用固件从 128KB 处开始加载,两者互不覆盖。
9. 小结
F4BY_H743 在 ArduPilot 仓库中的完整定义由三个文件构成:
- README.md:面向用户的硬件规格、串口/PWM 映射与参数配置指南
- hwdef.dat:面向构建系统的完整引脚定义,是本文所有映射表的权威来源
- hwdef-bl.dat:Bootloader 专用的精简硬件定义
排查接线问题时,建议按"README 映射表 → hwdef.dat 对应行"的路线核对:串口看SERIAL_ORDER与 UART 引脚段,PWM 看 TIM2/TIM1/TIM4/TIM8 四段,模拟量看 ADC1 段,电池参数看HAL_BATT_*宏。板级 ID 1531 可用于在固件选择、日志与 GCS 通信中确认当前刷写对象确为 F4BY_H743。
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考