CAN 位同步

前言

CAN总线是串行、异步、半双工的通信方式。

CAN没有同步时钟,如果各个节点只用事先约定好的波特率进行通信,加上硬件部分的干扰(传输线上的延迟和节点上收发的延迟)或其他影响,会造成数据错误。

CAN使用位同步的方式来保证信号收发同步,CAN控制器通过硬同步、重同步或位填充的方法来调整时序,实现对总线电平信号进行正确的采样。

CAN的位时序

CAN协议把每一个数据位(1bit)的时序分解成4个段:

  • SS:同步段(Synchronization Segment)

  • PTS:传播时间段(propagation time segment)

  • PBS1:相位缓冲段1(phase buffer segments1)

  • PBS2:相位缓冲段2(phase buffer segments2)

每个段由不同个数的Tq构成,这4个段的长度加起来为一个CAN数据位的长度,一个完整的数据位由8-25个Tq组成

同步段

不管发送节点发送一位还是接收节点接收一位,都是同步段开始,若总线跳变沿在位时序SS段内,表示各个节点和总线的时序同步。固定为1Tq

传播时间段

用于补偿信号在网络和节点传播的物理延时时间。1-8Tq,长度可编程

相位缓冲段1

主要用于补偿总线跳变沿在位时序中的误差,其时间长度在重新同步是可以增长,总线边沿在SS段之后。1-8Tq,长度可编程

相位缓冲段2

主要用于补偿总线跳变沿在位时序中的误差,其时间长度在重新同步是可以缩短,总线边沿在SS段之前。2-8Tq,长度可编程

名词

Tq(Time Quantum):CAN控制器工作的最小时间单位,通过时钟分频得到

总线跳变沿:隐性-->显性的跳变

采样点:总线电平采样在PBS1段的末端

SJW:重同步跳转宽度(synchronisation jump width),是有上限的

CAN的位同步

发送节点在发送的同时,监听总线电平,接收节点处于只监听状态,所以总线的电平由隐性跳变到显性,各个节点都可以知道的

不管节点是在发送还是接收,只要总线的跳变沿不在该节点位时序SS段内,位时间就需要重新同步

硬同步

总线电平在第一次下降沿(帧起始),所有节点都要调整各自的同步段,位时间重新开始

重同步

隐性-->显性跳变,判断跳变沿是否落在SS段,如果跳变沿不在SS段内,会引起重同步,各个节点的位时间进行重新同步

  • 跳变沿在SS段之后,PBS1增长

  • 跳变沿在SS段之前,PBS2缩短

接收单元在PBS1的末端采样电平信号,获得的logic值就是总线电平

在当前位周期内通过变化PBS段的值实现位重同步,如果下个位周期 CAN数据位同步(跳变沿在SS段),各个段恢复预设值

位填充

相位差大于SJW

posted @ 2022-08-17 23:14  伯宁君  阅读(968)  评论(0编辑  收藏  举报