ArduPilot ChibiOS 平台 GEPRC TAKER H743 BT 飞控硬件定义与串口配置详解
2026/9/14 17:25:09 网站建设 项目流程

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 STM32H743xxMCU_CLOCKRATE_MHZ 480,8 MHz 外部晶振
MPU6000 + ICM42688 双 IMUSPI1 挂 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 OSDSPI4 挂SPIDEV osdOSD_ENABLED 1HAL_OSD_TYPE_DEFAULT 1(对应 AT7456 系列)
7 路 UARTSERIAL_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_ESCTelemetryNODMA

这里值得注意一个设计细节: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 要求:

  1. 接收机同时接到 USART2 的 TX 与 RX(即 TX2 也要用);
  2. 设置SERIAL2_OPTIONS = 7(invert TX/RX, half duplex,TX/RX 翻转半双工);
  3. 设置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 组:

通道定时器
group1PWM 1-4TIM3
group2PWM 5-6TIM4
group3PWM 7-8TIM8
group4PWM 9TIM1

约束与能力:

  • 同一组内必须使用相同输出速率
  • 组内任一通道使用 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_SENSPC2 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),仅供参考

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

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

立即咨询