CAN协议笔记

说在前面

CAN协议和CAN-FD协议笔记。

参考文档

CAN协议详解-还是羊脂球
CAN总线报文浅析-男人花
CANFD和CAN的区别简介-还没想好~

背景

CAN是控制器域网 (Controller Area Network, CAN) 的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO11898)。

其模型结构只有3 层,即只取OSI 底层的物理层数据链路层传输层,保证了节点间无差错的数据传输。 CAN 总线上用“显性”(Dominant)和“隐性” (Recessive)两个互补的逻辑值表示“0”和“1”
CAN协议总线
如图所示,VCAN-H和VCAN-L为CAN总线收发器与总线之间的两接口引脚,信号是以两线之间的“差 分”电压形式出现。在隐性状态,VCNA-H和VCAN-L被固定在平均电压电平附近,Vdiff近似于0。显性位以大于最小阀值的差分电压表示。CAN 总线的通信距离最远可达10km(位速率为5 kbps) ,通信速率最快可达 1Mbps(此时最长通信距离为40m)。

所以CAN盒子不能直接与RX,TX相连

架构

CAN由CAN控制器和CAN收发器还要CAN总线组成,CAN控制器完成CAN协议组包解包,处理数据等等功能,CAN收发器将逻辑电平转换为差分信号。CAN盒自带CAN控制器和CAN收发器。CPU与CAN控制器直接的interface可变,我在FPGA里用的是APB。CAN盒走的是USB。
CAN整体架构

CAN收发器如下图
CAN收发器

协议

CAN以帧的形式进行通信,被称为CAN帧。
CAN的通信帧分成五种,分别为:

  1. 数据帧
  2. 远程帧
  3. 错误帧
  4. 过载帧
  5. 帧间隔

一个标准的CAN帧分为7段:

  1. 帧起始
  2. 仲裁段
  3. 控制端
  4. 数据段
  5. CRC段
  6. ACK段
  7. 帧结束
    帧结构
  • 帧起始

由一个显性位(低电平)组成,发送节点发送帧起始,其他节点同步于帧起始;

  • 帧结束

由7个隐形位(高电平)组成。
帧起始很帧结束

  • 仲裁段

帧ID越小,优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。
仲裁段

只要总线空闲,总线上任何节点都可以发送报文,如果有两个或两个以上的节点开始传送报文,那么就会存在总线访问冲突的可能。但是CAN使用了标识符的逐位仲裁方法可以解决这个问题。

CAN总线控制器在发送数据的同时监控总线电平,如果电平不同,则停止发送并做其他处理。如果该位位于仲裁段,则退出总线竞争;如果位于其他段,则产生错误事件。
仲裁

  • 数据段

一个数据帧传输的数据量为0~8个字节,这种短帧结构使得CAN-bus实时性很高。数据量小,发送和接收时间短,实时性高,被干扰的概率小,抗干扰能力强。

数据段

  • 控制段

共6位,标准帧的控制段由扩展帧标志位IDE、保留位r0和数据长度代码DLC组成;扩展帧控制段则由IDE、r1、r0和DLC组成如图下所示。
控制端

  • CRC段

CAN-bus使用CRC校验进行数据检错,CRC校验值存放于CRC段。 CRC校验段由15位CRC值和1位CRC界定符构成如图28所示
CRC段

  • ACK段

当一个接收节点接收的帧起始到CRC段之间的内容没发生错误时,它将在ACK段发送一个显性电平如图29所示。ACK段

CAN-FD

CAN FD具有四个主要优点:

  • 增加数据长度

CAN FD 每个数据帧最多支持64个数据字节,而Classic CAN 支持8个数据字节。这减少了协议开销,并提高了协议效率。

  • 速度提升

CAN FD支持双比特率:经典CAN中给定的标称(仲裁)比特率限制为1 Mbit / s,而数据比特率则取决于网络拓扑和收发器。实际上,可以实现高达5 Mbit / s的数据比特率。

  • 改进的可靠性

CAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。例如,这对于车辆和工业自动化等对安全至关重要的应用至关重要。

  • 平滑过渡

在某些条件下,可以混合使用CAN FD和经典CAN ECU。这样就可以逐步引入CAN FD节点,从而大大降低了OEM的成本和复杂性。

实际上,与经典CAN 相比,CAN FD可以将网络带宽提高3到8 倍,从而为数据增长提供了一种简单的解决方案。

CAN FD总线与CAN总线的区别主要在以下两个方面:
  1. 可变速率:CAN FD采用了两种位速率。从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,其余部分为原CAN总线用的速率。两种速率各有一套位时间定义寄存器,它们除了采用不同的位时间单位TQ外,位时间各段的分配比例也可不同;
  2. 新的数据场长度:CAN FD对数据场的长度作了很大的扩充,DLC最大支持64个字节,在DLC小于等于8时与原CAN总线是一样的,大于8时有一个非线性的增长,所以最大的数据场长度可达64字节。
CAN-FD

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
根据引用和引用的内容,航模遥控器的SBUS协议可以被转换成CAN总线信号。具体来说,可以使用STM32F407开发板和HOTRC HT-6A航模遥控器接收机飞控套装来实现。需要先了解SBUS协议和STM32F7解析SBUS信号的原理,然后使用相应的硬件和软件环境进行开发。可以使用ST-link下载器作为下载模块,串口转换器作为串口模块。代码可以使用Keil mdk v5进行编译,主控采用STM32F103ZET6。具体的实现方法可以参考引用中的代码和引用提供的目录。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [#【软件stm32cubeIDE下配置STM32F407uart1调试SBUS模块-学习笔记-基础样例-遥控小车与四轴模板】](https://blog.csdn.net/qq_22146161/article/details/125524106)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [遥控器S.BUS信号解析转发到CAN源码](https://download.csdn.net/download/jayloveemma/10587581)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [STM32实现四驱小车(二)通信任务——遥控器SBUS通信](https://blog.csdn.net/qq_30267617/article/details/113444864)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bigbeea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值