px4中uavcan协议介绍与实操.pdf
### CAN总线简介 控制器局域网总线(CAN,Controller Area Network)是一种广泛应用于实时系统的串行通讯协议总线,它主要利用两根线进行差分信号传输。CAN总线由德国的Robert Bosch公司开发,最初用于汽车中不同元件之间的通信,取代了笨重且昂贵的配电线束。其主要特点包括实时性强、传输距离较远(在1Mbit/s的速率下可达到40米)、在高噪声干扰环境中也能稳定工作、具有较强的抗电磁干扰能力,成本低廉(只需两根导线加一个收发器)。 ### CAN总线特点详解 - **实时性强**:保证数据传输的及时性。 - **传输距离较远**:在较高速率下依旧能保证较远的传输距离。 - **高噪声环境适应性**:在电磁干扰较强的环境中仍可稳定工作。 - **抗电磁干扰能力**:差分信号的传输方式具有天然的抗干扰特性。 - **成本低**:仅需两根导线和收发器,成本远低于传统线束。 - **物理接口电平具有优先权和仲裁功能**:保证总线的稳定性和数据不丢失。 - **发送信息损坏后的自动重发**:提高了数据传输的可靠性。 - **CRC检验**:确保传输数据的准确性。 - **Payload部分最长8个字节**:限定了一次传输的数据量。 - **位填充编码**:使用位填充防止连续5个相同位值的情况,避免错误。 ### CAN总线分类与电平概念 CAN总线分为高速CAN和低速CAN,其中高速CAN适用于动力系统,速率通常在500kbit/s到1Mbit/s,但也可能低于500kbit/s;低速CAN则用于舒适系统的通讯,速率通常为100kbit/s。 在CAN总线上,显性电平代表逻辑0(CANH-CANL差分电压为正),隐形电平代表逻辑1(CANH-CANL差分电压为0),显性电平在总线上的优先级高于隐性电平。 ### CAN总线数据格式 CAN总线通信帧共分为数据帧、远程帧、错误帧、过载帧和帧间隔五种类型。数据帧结构上由7个段组成,可分为标准帧(CAN2.0A)和扩展帧(CAN2.0B),扩展帧(CAN2.0B)的ID长度为29位,是嵌入式开发中常用的一种格式。 ### UAVCAN概念 UAVCAN是基于CAN总线的一种通讯协议,它轻量级、占用内存小(约40K),非常适合实时嵌入式系统如无人机控制器和机器人控制器。其协议栈支持毫秒级网络同步,并遵循MIT许可协议。UAVCAN框架的应用通过订阅回调的方式进行数据传输,用户可以添加自定义的ID和数据项,并制定组包规则。UAVCAN协议中的DSDL(数据结构描述语言)用于描述CAN协议帧的数据结构,用户可以通过.py脚本自动生成解包规则。不同平台的CAN总线驱动负责获取CAN的ID和payload等数据,之后传给transport layer。 ### 实践操作 文档中提到的实践操作部分由于内容不全,无法提供详细的操作指南。但基于介绍的内容,实际操作可能包括以下几个方面: - 对UAVCAN和PX4环境的搭建。 - 对CAN总线的配置。 - 在UAVCAN框架下开发或使用现有的.cpp文件处理接收到的CAN数据帧。 - 利用DSDL进行数据结构的定义和规则制定。 - 根据CAN帧的格式处理和解析接收到的数据。 - 在UAVCAN协议栈中自动生成解包规则并进行数据传输。 结合上述介绍,UAVCAN与PX4在无人机等实时嵌入式系统中的应用非常广泛,由于UAVCAN的协议栈设计使得开发者能够快速地进行通信协议的搭建和数据处理,这大大降低了开发难度,提高了开发效率,尤其是在资源受限的嵌入式系统中。
剩余10页未读,继续阅读
- zwb_5782091602022-07-11比较详细和适用,对于我这种菜鸟和指导意义。
- 粉丝: 14
- 资源: 39
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助