ZHDA226 July 2026 AM13E23019
DroneCAN 是一种构建在 CAN 总线之上的轻量级开源通信协议,最初为 UAV 系统开发,现已广泛应用于机器人、工业和航空航天领域。DroneCAN 定义了标准化的消息格式、针对超过 8 字节有效载荷的传输分段、节点 ID 管理以及数据类型签名,以在来自不同供应商的节点之间实现互操作性。Libcanard 是 DroneCAN 协议栈的官方 C 语言实现,专为资源受限的嵌入式系统而设计,所需 RAM 极少,并且除了用户提供的内存池之外,不依赖于动态内存分配器。Libcanard 完全用 C 语言编写,可无缝集成到现有的嵌入式工程和 TI MCU SDK 示例中,无需任何操作系统或中间件层。该协议栈提供了简单的 API,涵盖 DroneCAN 传输编码、发送、接收和解码的整个生命周期。对于已经熟悉基于 CAN 的通信的开发人员而言,这种设计很容易采用。
DroneCAN ID 格式:图 1-1显示了 DroneCAN 广播消息的 29 位 ID 结构。
图 1-1 CAN ID 格式普通的 CAN 帧 ID 通常是 11 位,但 DroneCAN 使用扩展帧 ID (EFF)。在这里,帧具有自描述性,接收工具无需事先了解应用场景即可解码总线上的任何帧,这使得 DroneCAN 的集成变得更加容易。
图 1-2 展示了使用 DroneCAN 进行通信的无人机系统示例。
图 1-2 采用 DroneCAN 的无人机系统在此,DroneCAN 主要用于飞行控制器(大脑)与电子调速器 (ESC) 之间的通信,后者进一步控制电机的速度和旋转。单条 CAN 总线即可处理不同节点之间的所有通信,而不会出现任何重叠问题。CAN 仅需两根导线即可连接总线上的每个节点,并且该总线完全由硬件处理所有故障检测、帧重传以及其他各种错误,无需任何软件介入。