跳转至

附录A:四个平台协议入口

本附录列出Betaflight、INAV、ArduPilot Copter和PX4固定版本中的协议核验入口。它用于找到权威实现,不替代具体板卡手册、消息定义和测试证据。

固定身份

平台与协议依赖的唯一基准表位于专题README的固定版本基线。本附录不复制常量,避免两处维护产生漂移。执行时除平台提交外,还要保存目标板、构建选项、子模块和本地差异。

通用核验顺序

  1. 阅读固定版本发布说明;
  2. 找到端口配置入口;
  3. 找到协议帧和解析器;
  4. 找到消息或命令定义;
  5. 找到状态门禁和调用方;
  6. 找到错误计数、日志和测试;
  7. 对照实际板级引脚和电气路径;
  8. 在隔离环境捕获并复算。

只找到宏定义不能证明运行时启用;只找到界面选项不能证明目标板具备所需资源。

Betaflight 2026.6.2

串行与接收机

  • 源码标签
  • src/main/io/serial.c:串行端口资源和功能选择
  • src/main/rx/crsf.ccrsf_protocol.h:CRSF
  • src/main/rx/sbus.csbus_channels.c:SBUS
  • src/main/rx/fport.c:Classic F.Port
  • src/main/rx/:其他接收机协议

MSP

  • src/main/msp/msp_serial.c:v1、native v2和v2-over-v1状态机
  • src/main/msp/msp_serial.h:帧头结构
  • src/main/msp/msp_protocol.h:API版本和命令
  • src/main/msp/msp.c:命令分派和响应
  • MSP API文档

DShot

  • src/main/drivers/dshot.cdshot.h:组帧、校验和遥测类型
  • src/main/drivers/dshot_bitbang_decode.c:双向返回解码
  • src/main/drivers/dshot_bitbang.c及平台定时器实现:波形和资源
  • DShot开发文档

图传控制

  • src/main/io/vtx_smartaudio.c
  • src/main/io/vtx_tramp.c
  • src/main/io/displayport_msp.c
  • src/main/io/displayport_msp.h
  • VTX文档
  • DisplayPort文档

验证重点

  • App版本与固件API是否匹配;
  • CLI导出的端口、接收机、DShot和VTX配置;
  • 目标板定时器、DMA和反相资源;
  • 当前实现的缓冲区上限;
  • 未知MSP命令和错误帧行为;
  • 接收机丢帧、失联和恢复。

INAV 9.1.0

入口

  • 源码标签
  • 官方文档
  • src/main/io/serial.c及相关目标定义:串行资源
  • src/main/rx/:接收机协议
  • src/main/msp/:MSP
  • src/main/drivers/:DShot和底层外设
  • src/main/io/:图传与显示接口

验证重点

  • INAV与Betaflight具有历史关联,但API版本、命令、默认值和状态机不可直接互换;
  • Configurator版本必须与INAV固件匹配;
  • 导航、遥测和接收机可能竞争串口与调度资源;
  • 导航动作和失联行为应按INAV状态机验证,不从协议帧直接推断;
  • 目标板可能裁剪某些协议或改变端口映射。

ArduPilot Copter 4.7.1

串行

  • 串行端口配置
  • SERIALx_PROTOCOL:逻辑端口功能
  • SERIALx_BAUD和协议相关参数:速率
  • 具体x到实体连接器的映射:板卡手册

DroneCAN

  • libraries/AP_DroneCAN/
  • modules/DroneCAN/DSDL固定为04e0e818b06c180eb1720fcdf16484d0f12895ee
  • modules/DroneCAN/libcanard固定为601ed35467e0ac38819df17cd7c918de19f62d58
  • DroneCAN设置

验证重点

  • Copter-4.7.1标签、子模块和板级构建;
  • MAVLink方言、消息率、路由和签名策略;
  • 系统ID/组件ID只用于寻址;
  • 参数、任务和命令微服务的状态门禁;
  • CAN节点ID、总线速率、终端和数据类型;
  • 地面站版本与参数元数据。

PX4 v1.17.0

  • 源码标签
  • src/modules/mavlink/:MAVLink实例、流、接收和命令
  • src/modules/mavlink/mavlink子模块固定为33af200d25ec6f0925b49b1ba82bbf1294ea5f72
  • MAVLink模块

串行和端口

  • 串口配置
  • ROMFS/px4fmu_common/init.d/:启动和实例配置
  • boards/:板级端口和构建
  • src/drivers/:外设协议

DShot与DroneCAN

  • DShot
  • DroneCAN
  • src/drivers/dshot/
  • src/drivers/uavcan/及固定版本依赖

验证重点

  • 参数元数据默认值与启动脚本实际覆盖分开;
  • 每个MAVLink实例的模式、速率和转发;
  • uORB消息与MAVLink消息不是同一数据结构;
  • QGroundControl显示不能替代飞控内部状态;
  • DroneCAN、Cyphal和厂商CAN设备的协议边界;
  • 目标板输出资源和DShot能力。

协议入口矩阵

协议或功能 Betaflight INAV ArduPilot PX4
CRSF/SBUS 接收机驱动 接收机驱动 RC输入驱动 RC输入驱动
MSP 主要配置API 配置API 非主要配置路径 非主要配置路径
MAVLink 有限或特定用途,按源码 按固定版本核对 主要地面协议 主要地面协议
DShot 驱动与电机输出 驱动与电机输出 输出后端 输出驱动
DroneCAN 按固定版本能力 按固定版本能力 AP_DroneCAN UAVCAN驱动
SmartAudio/Tramp VTX驱动 VTX驱动 按外设支持核对 按外设支持核对
DisplayPort MSP OSD MSP OSD 按适配核对 按适配核对

“非主要路径”不表示绝对不支持;它表示不能沿用另一平台的配置和行为假设。

固定源码链接

使用限制

  • 滚动文档用于发现入口,最终结论回到固定版本;
  • 源码存在功能不代表目标板编译启用;
  • 参数存在不代表当前端口、电气和外设支持;
  • 模拟器通过不代表实体电气链路通过;
  • 无桨台架通过不代表装桨、额定载荷或飞行通过;
  • 专题核验不授予任何飞行、射频或产品合规许可。