ArduPilot ChibiOS 平台 GEPRC TAKER H743 BT 飞控硬件定义与串口配置详解
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
导读:本文基于 ArduPilot 仓库中libraries/AP_HAL_ChibiOS/hwdef/GEPRC_TAKER_H743/目录的硬件定义(hwdef)文档与配套文件,系统讲解 GEPRC TAKER H743 BT 飞控在 ArduPilot 中的默认硬件映射——包括 7 路 UART 与 USB 的串口分配、双向 DShot 的 PWM 分组约束、电池监测默认参数、双 IMU/气压计/OSD 的 SPI 与 I2C 分配,以及 DFU 初始刷机的完整流程。读完后你可以直接把这块板子接入 ArduCopter 并正确配置 RC 输入、FrSky 遥测与外置罗盘。
1. 板卡概况与默认硬件特性
TAKER H743 BT 是 GEPRC 出品的竞速/穿越风格飞控,其硬件定义由 hwdef.dat 描述(pin 信息致谢来自 Betaflight 社区资料)。README 列出的核心特性与源码中的对应关系如下:
| README 特性 | hwdef.dat 中的实现证据 |
|---|---|
| STM32H743 主控 | MCU STM32H7xx STM32H743xx,MCU_CLOCKRATE_MHZ 480,8 MHz 外部晶振 |
| MPU6000 + ICM42688 双 IMU | SPI1 挂 MPU6000,SPI2 挂 ICM42688,IMU段声明两者及各自旋转补偿 |
| SPL06-001 气压计 | BARO SPL06 I2C:0:0x76,挂在 I2C1(PB8/PB9) |
| microSD 512MB 闪存日志 | SPI3 挂 SDCARD,HAL_OS_FATFS_IO 1走 FatFS,HAL_LOGGER_MIN_MB_FREE 25要求 SD 卡至少 25 MB 剩余空间 |
| AT7456E OSD | SPI4 挂SPIDEV osd,OSD_ENABLED 1且HAL_OSD_TYPE_DEFAULT 1(对应 AT7456 系列) |
| 7 路 UART | SERIAL_ORDER OTG1 USART1 USART2 USART3 UART4 EMPTY USART6 UART7 UART8 |
| 8 路 PWM 输出 | PB0/PB1/PB5/PB4/PD12/PD13/PC8/PC9,分属 TIM3/TIM4/TIM8 三个定时器 |
从源码结构看,SERIAL_ORDER中的EMPTY占位符解释了为什么板子上没有 SERIAL5——ChibiOS HAL 要求序号与物理 UART 一一对应,此处跳过了 USART5。
2. UART 映射:每路串口默认干什么
板卡丝印上以 Rn/Tn 标注各 UART(Rn 为 UARTn 的接收脚,Tn 为发送脚)。README 给出的映射与 hwdef.dat 中define DEFAULT_SERIALn_PROTOCOL完全一致:
- SERIAL0 -> USB:OTG1,同时是 IO debug console(PA10 复用)。
- SERIAL1 -> USART1(DisplayPort,DMA 可用):默认
SerialProtocol_MSP_DisplayPort,即出厂即支持 HD 眼镜 DisplayPort OSD,并启用了AP_MSP_VIDEOTX_ENABLED 1。 - SERIAL2 -> USART2(RCIN,DMA 可用):默认 RC 输入通道。
- SERIAL3 -> USART3:连接板载蓝牙模块,
DEFAULT_SERIAL3_PROTOCOL SerialProtocol_None,当前 ArduPilot 无法使用(DMA 被NODMA关闭)。 - SERIAL4 -> UART4(GPS)。
- SERIAL6 -> USART6(用户串口),默认无协议。
- SERIAL7 -> UART7(用户串口),默认无协议,
NODMA。 - SERIAL8 -> UART8(ESC 遥测):默认
SerialProtocol_ESCTelemetry,NODMA。
这里值得注意一个设计细节:hwdef 中对 USART3、UART7、UART8 都标注了NODMA,注释说明这是为了配合双向 DShot 而牺牲部分设备的 DMA 能力("In order to accommodate bi-directional dshot certain devices cannot be DMA enabled")。DMA_PRIORITY TIM3* TIM4* USART2*与DMA_NOSHARE SPI1* SPI2*则进一步约束了 DMA 通道的优先级与独占关系,保证电机定时器与 RC 输入优先获得 DMA 资源。
3. RC 输入:单向协议直连,FPort/CRSF 需半双工配置
默认 RC 输入走 USART2 的 RX(PA3),支持所有单向RC 协议(SBUS、IBUS 等),但不支持 PPM。
若接收机是FPort 或全双工协议(如 CRSF/ELRS),由于共用一根线,README 要求:
- 接收机同时接到 USART2 的 TX 与 RX(即 TX2 也要用);
- 设置
SERIAL2_OPTIONS = 7(invert TX/RX, half duplex,TX/RX 翻转半双工); - 设置
RSSI_TYPE = 3(从 CRSF 帧中解析 RSSI)。
这与 hwdef 中 USART2 保留 DMA 且未加NODMA的安排相呼应——半双工 CRSF 需要较可靠的 DMA 收发。
4. FrSky 遥测配置
FrSky 遥测可以使用除 SERIAL3(蓝牙占用)外任意 UART 的 TX 脚输出。以 SERIAL6 为例,启用 FrSky S.PORT 需设置:
SERIAL6_PROTOCOL 10 # 10 = FrSky S.PORT SERIAL6_OPTIONS 7 # 半双工/翻转,单向用 TX 发送5. OSD 与 VTX
- 双 OSD 并行:板载 AT7456E(SPI4)走模拟 OSD,同时 HD VTX 连接器上的 HD 眼镜可走 DisplayPort OSD,二者可同时工作。defaults.parm 中还预设了
OSD_TYPE2 5,配合第二路 OSD 显示类型。 - VTX 连接器注意:SH1.0-6P 连接器支持标准 DJI HD VTX 连接;引脚 1 为 12V(可通过焊盘选择切到 VBAT),切勿接入期望 5V 供电的设备。
6. PWM / DShot 输出:4 个分组,组内必须统一协议
TAKER H743 BT 最多支持 9 路 PWM/DShot:
- M1–M4 在 ESC 接插件上(PB0/PB1/PB5/PB4,TIM3 的 CH3/CH4/CH2/CH1);
- M5–M8 为焊盘(PD12/PD13 走 TIM4,PC8/PC9 走 TIM8);
- M9(PA8,TIM1_CH1)默认分配给串口 LED 灯带,也可改作普通 PWM 输出。
defaults.parm 中SERVO9_FUNCTION 120(LED)正是这一默认分配的参数化体现。
PWM 按定时器分为 4 组:
| 组 | 通道 | 定时器 |
|---|---|---|
| group1 | PWM 1-4 | TIM3 |
| group2 | PWM 5-6 | TIM4 |
| group3 | PWM 7-8 | TIM8 |
| group4 | PWM 9 | TIM1 |
约束与能力:
- 同一组内必须使用相同输出速率;
- 组内任一通道使用 DShot,则全组必须用 DShot;
- 通道 1-8 支持双向 DShot——hwdef 中 M1、M4、M5、M7 等关键脚标注了
BIDIR标志(如PB0 TIM3_CH3 TIM3 PWM(1) GPIO(50) BIDIR),这正是第 2 节中部分串口放弃 DMA 的原因; - 双向 DShot 通道可回读 ESC 状态,配合 SERIAL8 的 ESC Telemetry 协议使用。
7. 电池监测:内置压降检测 + 外部电流口
板载电压传感器经 ADC1 读取:PC3 BATT_VOLTAGE_SENS、PC2 BATT_CURRENT_SENS(ESC 接插件上有外置电流传感器输入)。电压传感器支持最高 6S LiPo。
hwdef.dat 通过define HAL_BATT_*_DEFAULT写入了默认电池参数:
BATT_MONITOR 4 # 使用 ADC 引脚直接监测 BATT_VOLT_PIN 13 # 对应 PC3 的 ADC 引脚号 BATT_VOLT_SCALE 11.13 # 电压分压比(README 写作 11.1,hwdef 精确值为 11.13) BATT_CURR_PIN 12 # 对应 PC2 的 ADC 引脚号 BATT_AMP_PERVLT 28.5 # 每伏特对应 28.5 安培由于这些默认值由硬件定义文件直接注入,刷机后无需手动配置即可出数。
8. 罗盘:无内置,走 I2C 探测
板子没有内置磁计,但可以在 SDA/SCL 焊盘(I2C1,PB9/PB8)外接罗盘。hwdef 中:
AP_COMPASS_PROBING_ENABLED 1:启动时对 I2C 总线进行全类型罗盘探测;HAL_COMPASS_AUTO_ROT_DEFAULT 2:外置罗盘的默认自动旋转补偿。
双 IMU 的旋转补偿也在此文件中定义(ROTATION_ROLL_180给 ICM42688、ROTATION_YAW_90给 MPU6000),安装方向已由硬件定义固化。
9. 固件加载:DFU 首刷 + GCS 日常更新
首次刷写:按住 bootloader 按钮的同时插入 USB,进入 DFU 模式;此时应烧录with_bl.hex(带 bootloader 的固件镜像)任意 DFU 工具完成初始加载。
日常更新:首次刷入后,即可用任意 ArduPilot 地面站软件更新,使用.apj固件文件。
这一流程在仓库中有明确支撑:hwdef-bl.dat(bootloader 的硬件定义)中FLASH_RESERVE_START_KB 0+FLASH_BOOTLOADER_LOAD_KB 384表示 bootloader 从 flash 0 偏移处运行、把固件放在 384 KB 处;而主固件 hwdef.dat 的FLASH_RESERVE_START_KB 384与之一一对应。板级 ID 为APJ_BOARD_ID AP_HW_GEPRC_TAKER_H743,对应 board_types.txt 中的编号1502。
构建该板固件时(以 ArduCopter 为例):
./waf copter:geprc_taker_h743产物位于build/ArduCopter/下,其中*with_bl.hex用于 DFU 首刷,.apj用于地面站更新。
10. 小结:该板在 ArduPilot 中的定位
从本目录的三组文件(README、hwdef.dat、defaults.parm)可以看出,TAKER H743 BT 被定位为"出厂即可用"的竞速板:DisplayPort OSD、ESC 遥测、电池监测、SD 卡日志、LED 灯带默认功能全部在硬件定义层预置,用户真正需要手动配置的主要是三件事——FPort/CRSF 接收机时的SERIAL2_OPTIONS=7+RSSI_TYPE=3、FrSky 遥测串口协议、以及外接罗盘后的安装校准。所有参数与引脚的事实依据均可在 GEPRC_TAKER_H743 目录 中逐行核对。
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考