1. 课程导入

当你拆开一架现代多旋翼或固定翼无人机,会看到飞控、电调、GPS、磁罗盘、气压计、云台、电池管理、空速管等大量部件。它们并不是各干各的,而是通过一根或几根总线彼此交换数据:飞控要知道每个电机的转速指令是否被执行,电池要上报电压与温度,GPS要持续输出经纬度与定位质量。总线通信就是无人机的“神经系统”,决定了整机能否实时、可靠、可扩展地协同工作。

一、为什么无人机需要总线,而不是简单点对点连线

早期航模常用PWM信号:每个舵机或电调一根信号线,飞控输出脉宽控制。这种方式简单直接,但存在明显瓶颈。第一,线束数量随通道数线性增长,八轴飞行器仅电机就需八根信号线,加上传感器、云台,线束复杂且重量可观。第二,PWM只能单向传递一个控制量,无法回传电调温度、电流、转速等状态。第三,缺乏统一的错误检测与仲裁机制,某个节点故障可能直接导致失控。

总线通信把“多根线”变成“一对差分线或一组共享介质”,多个节点挂载在同一物理层上,通过协议约定谁在什么时候发送、发送什么格式、出错如何重传。这样带来的核心收益是:线束简化、双向通信、状态可观测、节点可扩展、错误可管理。对于无人机而言,重量、可靠性和实时性三者都极其敏感,总线方案因此成为必然选择。

总线通信的三个关键指标:
1. 实时性:控制指令从飞控到电调的延迟必须稳定且足够小,通常要求毫秒级。
2. 可靠性:差分信号抗干扰、CRC校验、重传与冗余路径,保证在电磁复杂环境中不丢关键帧。
3. 可扩展性:新增一个传感器或执行器时,不需要重新设计整机线束,只需挂载到总线上并分配标识。

二、无人机常用总线对比:UART、I2C、SPI、CAN

在进入DroneCAN与Cyphal之前,先建立总线全景。无人机内部常见的通信方式包括UART、I2C、SPI和CAN。它们各有适用场景,不能简单说谁替代谁。

总线 典型速率 拓扑 典型用途 主要局限
UART 115200~921600 bps 点对点 GPS、数传、调试串口 只能两节点,无仲裁,距离短
I2C 100~400 kHz 多主多从 磁罗盘、气压计、小传感器 速率低,总线电容敏感,易锁死
SPI 数MHz~数十MHz 一主多从 IMU、Flash、高速ADC 片选线多,距离极短,无差分
CAN 125 kbps~1 Mbps 多主总线 电调、电池、舵机、节点网络 带宽有限,需协议层定义语义

可以看到,CAN在拓扑上天然适合“多节点共享总线”,并且具备差分抗干扰、非破坏性仲裁、CRC校验和错误帧机制。但CAN只定义了物理层和数据链路层,它规定了“怎么把一帧数据可靠地发出去”,却没有规定“这帧数据代表什么”。例如,帧ID为0x100的数据,到底是电机转速还是电池电压?这需要上层协议来约定。DroneCAN与Cyphal正是建立在CAN之上的两种应用层协议。

三、DroneCAN与Cyphal的定位

DroneCAN的前身是UAVCAN v0,由Pavel Kirienko等人发起,后来在无人机社区中广泛落地,成为ArduPilot、PX4等飞控生态中电调、GPS、电池、空速管等设备的重要通信标准。它的核心特点是:基于CAN、采用DSDL描述数据结构、支持即插即用、节点动态分配ID、消息优先级明确、适合资源受限的MCU。

Cyphal则是UAVCAN v1的演进与标准化成果,定位更通用。它不再局限于CAN,可运行在CAN FD、以太网、串口等多种传输层之上;采用更严格的类型系统和接口描述语言;强调确定性、安全性和大规模网络能力。可以这样理解:DroneCAN是无人机领域经过大量实战验证的CAN应用层协议,Cyphal是面向更广泛实时控制网络的下一代协议体系。

无人机总线通信层次与协议定位 应用层:DroneCAN / Cyphal 定义消息语义、节点ID、服务、即插即用、健康状态、固件升级 数据链路层:CAN / CAN FD / 以太网 / 串口 帧格式、仲裁、CRC、错误检测、重传 物理层:差分双绞线 / 收发器 / 终端电阻 CAN_H、CAN_L、120Ω终端、共模抗干扰 DroneCAN CAN为主 · 无人机生态成熟 · 电调/电池/GPS Cyphal 多传输层 · 强类型 · 面向通用实时网络

四、学习目标与整体框架

本课程的目标不是让你背协议条文,而是让你具备“从物理层到应用层”的完整开发能力。学完之后,你应当能够:

  • 理解CAN物理层与数据链路层的关键参数,能独立排查总线不通信、误码率高、终端电阻缺失等问题。
  • 掌握DroneCAN的节点ID分配、消息优先级、DSDL数据结构、动态节点分配与固件升级流程。
  • 理解Cyphal的传输层抽象、类型系统、发布/订阅与服务调用模型,并能与DroneCAN进行对比选型。
  • 能够在ArduPilot/PX4或裸机MCU上配置、调试、抓包分析DroneCAN/Cyphal通信。
  • 能够设计一个多节点无人机总线网络,包括电调、电池、GPS、云台等设备的接入与参数配置。

整体框架按照“基础—协议—实战—排障”四段推进。基础部分讲清CAN帧、位定时、仲裁与错误处理;协议部分分别深入DroneCAN与Cyphal;实战部分覆盖飞控配置、设备接入、固件升级与日志分析;排障部分则围绕典型故障现象建立判断路径。

学习建议:每学一个协议概念,都在真实总线上抓一次包。用CAN分析仪看到帧ID、数据字节和时序,比只看文档理解快得多。课程中出现的参数、命令和配置,建议在实验台上逐条验证。

五、常见误区与复盘

初学者最容易陷入三个误区。第一个误区是“CAN就是DroneCAN”。实际上CAN只到数据链路层,DroneCAN是应用层协议,两者不在同一层。第二个误区是“速率越高越好”。CAN总线速率越高,对线缆长度、终端匹配和收发器要求越苛刻,1 Mbps在长线束上可能反而不如500 kbps稳定。第三个误区是“节点随便接就行”。CAN总线两端必须各有一个120Ω终端电阻,中间节点不能随意加终端,否则阻抗不匹配会导致反射和误码。

典型CAN总线检查清单:
1. 总线两端是否各有一个120Ω终端电阻?
2. CAN_H与CAN_L是否使用双绞线,且未与动力线长距离并行?
3. 所有节点波特率是否一致(如500 kbps)?
4. 节点ID是否冲突?DroneCAN动态分配是否正常?
5. 用示波器观察差分波形,是否存在明显反射或幅度不足?
6. 抓包工具是否能收到心跳帧与节点状态?