CAN通信协议小结

内容为观看了B战江协科技后个人小结,江协科技的内容很好,大家可以去看看:江协科技CAN总线入门教程

CAN(Controller Area Network)

为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。简洁易用,易扩散,可靠性高。

一、CAN硬件电路

只有两根总线:CAN_H,CAN_L

CAN控制器引出的TX和RX与CAN收发器相连,CAN收发器引出的CAN_H和CAN_L分别与总线的CAN_H和CAN_L相连

高速(ISO 11898),125kbps~1Mbps,最长40m,采用闭环网络,两端添加120Ω终端电阻

低速(ISO 11519-2),125kbps以下,最长1km,采用开环网络,两根线一端添加2.2kΩ终端电阻

总线样式

高速CAN两端添加的120Ω电阻作用是:

1、防止回波反射,波形会在线路终端反射,进而干扰原始信号

2、没有设备操作时,将两根差分线的电压收紧,使其电压一致

二、CAN电平标准

CAN总线采用差分信号,即两线电压差(VCAN_H-VCAN_L)传输数据位

0表示显性,1表示隐形,根据线与的特性,0(显性)具有更高优先级

高速CAN规定:

​ 电压差为0V时表示逻辑1(隐性电平)

​ 电压差为2V时表示逻辑0(显性电平)

低速CAN规定:

​ 电压差为-1.5V时表示逻辑1(隐性电平)

​ 电压差为3V时表示逻辑0(显性电平)
电平样式

三、CAN总线帧格式

帧类型用途概要
数据帧发送设备主动发送数据(广播式)最常用的,分为标准和扩展
遥控帧接收设备主动请求数据(请求式)无数据段,RTR为1
错误帧某个设备检测出错误时向其他设备通知错误连续6位显性或隐形
过载帧接收设备通知其尚未做好接收准备请求延迟发送数据
帧间隔用于将数据帧及遥控帧与前面的帧分离开空出11个隐形电平

数据帧格式

  • SOF(Start of Frame):帧起始,表示后面一段波形为传输的数据位
  • ID(Identify):标识符,区分功能,同时决定优先级,标准数据帧ID位位11位,最大值位0x7FF
  • RTR(Remote Transmission Request ):远程请求位,区分数据帧和遥控帧
  • IDE(Identifier Extension):扩展标志位,区分标准格式和扩展格式
  • SRR(Substitute Remote Request):替代RTR,协议升级时留下的无意义位
  • r0/r1(Reserve):保留位,为后续协议升级留下空间
  • DLC(Data Length Code):数据长度,指示数据段有几个字节
  • Data:数据段的1~8个字节有效数据
  • CRC(Cyclic Redundancy Check):循环冗余校验,校验数据是否正确
  • ACK(Acknowledgement):应答位,判断数据有没有被接收方接收
  • CRC/ACK界定符:为应答位前后发送方和接收方释放总线留下时间
  • EOF(End of Frame ):帧结束,表示数据位已经传输完毕

对于ACK应答位,虽然发出的为1,但是往往看到的都是0,因为接收方会立刻发输出0,所以我么们看到的就是,发送方发出的0

位填充

当发送方连续出现5个相同的电平时,自动追加一个相反电平的填充位,接收方接收到填充位时,会自动移除填充位恢复原始数据。

例如:

​ 即将发送: 100000110 10000011110 0111111111110

​ 实际发送: 1000001110 1000001111100 011111011111010

​ 实际接收: 1000001110 1000001111100 011111011111010

​ 移除填充后: 100000110 10000011110 0111111111110

如果填充位与后边的四个相同,则需要再次进行填充

位填充的作用:

  • 增加波形的定时信息,利于接收方执行“再同步”,防止波形长时间无变化,导致接收方不能精确掌握数据采样时机
  • 将正常数据流与“错误帧”和“过载帧”区分开,标志“错误帧”和“过载帧”的特异性(正常情况下不会连续六个相同的电平)
  • 保持CAN总线在发送正常数据流时的活跃状态,防止被误认为总线空闲(连续11个隐形则认为总线空闲)

四、接收方数据采样

CAN总线没有时钟线,总线上所有设备通过约定波特率的方式确定每一个数据位的时长

可能会遇到的问题:

​ 采样点没有在数据中心附近,而在电平变化的地方 由硬同步解决

​ 时钟有误差,误差积累导致偏离

位时序

为了灵活调整每个采样点的位置,使采样点对齐数据位中心附近,CAN总线对每一个数据位的时长进行了更细的划分,分为同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2),每个段又由若干个最小时间单位(Tq)构成

位时序

在SS段发送数据,数据跳变沿正好出现在SS段

PTS用于吸收物理延迟

采样点位于PBS1和PBS2之间,用于确定采样点的位置

硬同步

已知,发送数据的时候,发送方的跳变沿处于SS段,但是接收方或许有误差,所以不在SS段,二为了更好的同步,所以当接收方接收到SOF的下降沿的时候,会将自己的位时序周期拨到SS段的位置,与发送方的位时序及计时周期保持同步

硬同步旨在真的第一个下降沿(SOF下降沿)有效

经过硬同步的调整之后,数据的采样点必然会对齐数据位中心附近

硬同步

再同步

用于调整时钟误差

当发送方与接收方有时钟误差的时候,随着积累,数据位边沿逐渐偏离SS段

这时候接收方会根据再同步补偿宽度值(SJW),通过加长PBS1段或缩短PBS2段,以调整同步

再同步在发生第一个下降沿以后每个数据位的跳变沿

再同步

当跳变沿出现在PTS和PBS1之间的时候会加长PBS1段,以达到同步

当跳变沿出现在PBS2之中的时候,会缩短PBS2段,以达到同步

SJW为人为设定,为1~4Tq,太长或太短都不好,且SJW设定的值为最大值,当调整的时候可以调整更小的值

波特率计算

波特率 = 1 / 一个数据位的时长 = 1 / (TSS + TPTS + TPBS1 + TPBS2)

单位为bps,比特每秒

五、多设备同时发送

1、先占先得:若已经有设备在操作总线,则其他设备只能等待设备操作完成,只有等到总线出现11个隐形电平,即认为总线空闲,才能进行发送(错误帧和过载帧可以发送,用于破坏当前数据)

2、非破坏性仲裁:若多个设备的发送需求同时到来或因等待二同时到来,则CAN总线会根据仲裁段(ID号+RTR)来进行非破坏性仲裁,冲裁段小(优先级高)的获得控制权

  • 线与特性:总线上任何一个设备发送显性电平0时,总线会呈现显性电平0状态(0 & X & X = 0)。ID号小的显性电平0会先出现,经过线与后结果为0,所以具有更高优先级

  • 回读机制:每个设备发出一个数据位后,都会回读总线当前电平状态,以确保自己的电平背真实的发出去了,当自己发出了1,但是回读了0,说明有比自己优先级更高的设备正在发送,因此会停止发送。

当ID号相同时,数据帧(RTR为0)比遥控帧(RTR为1)拥有更高优先级,标准格式(RTR为0)比扩展格式(SRR为1)拥有更高优先级,遥控帧(IDE为0)比扩展格式(IDE为1)拥有更高优先级

六、错误类型

错误类型

错误状态

主动错误状态的设备正常参与通信并在检测到错误时发出主动错误帧

被动错误状态的设备正常参与通信但检测到错误时只能发出被动错误帧(被动错误帧对于总线没有影响)

总线关闭状态的设备不能参与通信(过一段时间之后会重启,让弄后继续通信)

每个设备内部管理一个TEC和REC,根据TEC和REC的值确定自己的状态

错误状态

错误计数器

错误状态变换条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值