CAN总线电气、帧格式、同步解读

CAN总线电气、帧格式、同步解读

1. 电气特性:显性、隐性

图1 CAN电气特性 a) 接收发送端,0表示显性,总线差分电平为2V; b) 接收发送端,1表示隐性,总线差分电平为0V。 显性和隐性主要用于总线仲裁,显性优先,即仲裁位为低的帧先发送。发送端实时回采发送数据,判读接收数据是否发送数据相同,如果相同继续发送,不同(发送高时,总线回读是低,说明有优先级更高的帧需要发送)则退出发送。

2. 帧格式

图2 CAN帧格式(借用网图)

3. 帧同步

硬同步:接收端通过SOF下降沿同步输入信号。 重同步:接收端在非SOF段,发现数据下降沿不在接收状态的同步段时进行重同步。 同步规则 a) 一个位时间内只允许一种同步方式,要么硬同步要么重同步; b) 任何一个从“隐性”到“显性”的下降沿 都可以用于同步; c) 硬同步发生在报文的SOF位,所有接收节点调整各自当前位的同步段,使其位于发送的SOF位内; d) 重同步发生在一个报文SOF位之外的其它段,当下降沿落在了同步段之外时发生重同步; e) 在SOF到仲裁场发送的时间段内,如果有多个节点同时发送报文,那么这些发送节点对跳变沿不进行重同步。

如何重同步: 位时间,即CAN总线每1位划分为四个时间段。

图3 CAN位时间分段

即同步段、传播段、相位缓存段1和相位缓冲段2,这些段按CAN内部时钟进行计量,1个CAN内部时钟称为一个时间量子:Tq。 Ts同步段:固定1Tq; Tp传播段:传播延时x2,包括节点内部延时和总线传播延时。 Tph1、Tph2缓存段:可配置,用于设置CAN总线数据的采样点。 SJW同步跳转宽度(SynchroJumpWidth):用于重同步调整Tph1或Tph2的范围,SJW = min{Tph1,Tph2,4};即不大于Tph1和Tph2,且不大于4。 CAN波特率 = CAN时钟/(Ts + Tp + Tph1 + Tph2)= CAN时钟/(1+TS1+TS2)

重同步过程:由于CAN主从设备非同源时钟,因此必然存在从设备(RX端)时钟比主设备(TX端)快或者慢的情况,CAN总线在SOF进行硬同步后,每位的数据采样点则根据自己的时钟进行递推计算,随着时间的漂移,发送端下降沿可能滞后(RX时钟快)或超前(RX时钟慢)接收端的同步段,如下图所示;当接收端判断下降沿不在同步段内,如在TS1段,则判断为RX时钟快,这时将TS1增加,即增加分频,对应接收端波特率调小,达到与发送端同步的目的,同理RX时钟慢时,将TS2减小,增大接收端波特率,达到与发送端同步的目的,调整窗口大小即SJW。 图4 CAN重同步过程

通过上述方法CAN控制器硬件即可自动调整接收端的波特率,使之与发送端匹配,消除位的累计误差,实现重同步。

经验分享 程序员 微信小程序 职场和发展