ArduPilot F4BY_H743 开发板完全指南:硬件规格、hwdef.dat 引脚映射与串口/PWM 配置实战
2026/9/14 11:15:59 网站建设 项目流程

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 STM32H743xxMCU_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 DMATX DMA
0USBMAVLink2
1USART2RC
2UART1MAVLink2
3USART3GPS
4UART4None
5UART5None

端口号(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

OutPortGPIO 编号BDShot
1PA050
2PA151
3PA252
4PA353

Group #2

OutPortGPIO 编号BDShot
5PE954
6PE1155
7PE1356
8PE1457

Group #3

OutPortGPIO 编号BDShot
9PD1358
10PD1259
11PD1560
12PD1461

Group #4

OutPortGPIO 编号BDShot
13PC762
14PC663
15PC864
16PC965

注意:同一组内的所有输出必须为同一类型(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 = 4
  • BATT_VOLT_PIN = 13
  • BATT_CURR_PIN = 12
  • BATT_VOLT_MULT = 16.04981
  • BATT_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通用输出1PC14
D2通用输出2PC13
D3通用输出3PE4
D4Cam Feedback4PE6
D5Cam Trigger5PC15

这些引脚(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 各版本目录下均有对应文件夹)。

刷写方式

  1. 板上出厂预装了 ArduPilot 兼容 Bootloader,之后可用任何 ArduPilot 兼容地面站直接加载.apj固件文件。
  2. 首次刷写需进入 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询