问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

CAN总线的位定时与同步机制

创作时间:
作者:
@小白创作中心

CAN总线的位定时与同步机制

引用
CSDN
1.
https://blog.csdn.net/m0_56208280/article/details/140646722

CAN时钟

CAN时钟是由系统时钟分频而来的一个长度值

CAN 的最小时间单位 Tq

Tq 为CAN时钟的一个周期,即 Tq = 1 / fcan

CAN的位时间

位时间 表示一个二进制位在总线上传输所需要的时间

  • 一个位可分为4个时间段
  • 同步段
  • 传播段
  • 相位缓冲段1
  • 相位缓冲段2
  • 每个段又由若干个Tg构成,这称为 位时序
  • 波特率=1/位时间

1、位时序-同步段(Synchronization Segment)

功能:用于同步总线上的各个节点,多个连接在总线上的单元通过此段实现时序调整,同步进行接收和发送的工作
固定长度,1个时间份额。

2、位时序-传播段(Propagation Time Segment)

功能:用于补偿网络上的物理延迟的段
长度可编程(1…8个 Tq),应能保证为各延迟时间的和的两倍

  • 延时时间的确认 –要求传播段时间为总线延时的两倍

3、位时序-相位缓冲段(Phase Buffer Segment)

相位缓冲段分为 相位缓冲段1 和 相位缓冲段2,两个相位缓冲段PBS1 和 PBS2 用于补偿总线上的边沿相位误差
长度可编程,不同的控制器,相位缓冲段 1 和相位缓冲段 2 的取值范围可能不完全一致。一般PBS1为1-8Tq,PBS2为2-8Tq。无特殊要求外,相位缓冲段1 和 相位缓冲段2 的 Tq 数相同;并且 PBS1 ≤ PBS2
通过重同步可以延长PBS1或缩短PBS2,加长或缩短的最大长度为 同步跳转宽度SJW

4、同步跳转宽度 SJW

因CAN总线没有时钟线而出现时钟频率偏差、传送延迟等,各单元有同步误差。
允许通过重同步对相位缓冲段1加长和相位缓冲段2缩短补偿此误差
SJW为补偿此误差的最大值,长度可以通过编程从1…4取值
因为 SJW的值 ≤ Min{PBS1,PBS2}
又因为 PBS1<PBS2
所以 SJW的取值范围是1…Min(PhaseSeg1,4)

5、采样点

为方便编程,很多CAN 模块将 传播段与相位缓冲段1 合并为一个时间段
采样点就是指在相位缓冲段1的末端进行总线状态的采样
采样点是CAN控制器读取总线电平,并解释各个比特的逻辑值的时间点
合适的采样点位置是CAN控制器正常通信的的保证

6、简单示例

CAN时钟10MHz,波特率1Mbps,总线驱动器的延迟为50ns,接收电路的延迟为30ns,总线线路(40m)的延迟为220ns。

CANFD 的位时间、发送延迟补偿和二次采样点

1、CANFD的位时间

CANFD 和 CAN相同,分为4个时间段,作用也相同
-同步段
-传播段
-相位缓冲段1
-相位缓冲段2
CANFD的仲裁域波特率通常为 500 Kbps,数据域波特率为 2 Mbps,以CAN时钟频率为 20M(即 Tq为 50ns) 为例:
仲裁场计算采样点
对于仲裁场500k,传输一个bit位的时间1/500000s=2us,所以
2us/50ns=40个tq(即传输 1 bit 经历 40 Tq)
如果采样点设置为80%,则phase_seg2 = 40 - (sync_seg+prop_seg+phase_seg1)=40 - (40 * 80%)=40 - 32 = 8Tq
sync_seg 固定为 1Tq
phase_seg1 = phase_seg2 = 8Tq(未特殊说明,值一样)
prop_seg = 40 - sync_seg- phase_seg1 - phase_seg2 = 23Tq
在ET tresos中可以这样配置
数据场采样点计算:
对于数据场2Mkbs,传输一个bit位的时间1/2000000s=500ns,所以
500ns/50ns=10个tq(即传输 1 bit 经历 10 Tq)
如果采样点设置为80%,则phase_seg2 = 10 - (sync_seg+prop_seg+phase_seg1)=10 - (10 * 80%)=10 - 8 = 2Tq
sync_seg 固定为 1Tq
phase_seg1 = phase_seg2 = 2Tq(未特殊说明,值一样)
prop_seg = 40 - sync_seg- phase_seg1 - phase_seg2 = 5Tq
则对应在EB TRESOS中配置如下

2、CANFD的发送延迟补偿(TDC)

CAN控制器发送信号时,是经过收发器后发往CAN总线后,再经过收发器反馈总线信号。那么发送过程中,控制器发送位信号到接收位信号就不可避免地存在环路延迟。发送延迟时间的总和如下:

  • CAN控制器内部产生TX信号到Tx引脚的传播延迟;
  • Tx引脚到收发器TxD引脚的传播延迟;
  • 收发器环路延迟TxD到RxD;
  • 收发器RxD引脚到CAN控制器Rx引脚延迟;
  • CAN控制器Rx引脚到控制器内部收到Rx信号的延迟
    CAN协议中规定:发送方发送位时,需检测接收到的位与发送是否一致,若不一致则产生错误帧(位错误)。如果发送延迟过长,则将直接导致发送与接收位不一致而产生错误帧。
    由于传统CAN协议规定最高波特率为1Mbps,即位宽1us,正常情况下,传输延迟不会超过位宽的采样点(当然具体延迟取决于收发器环路延迟、传输距离、传输线缆质量等),因此不会因为发送延迟而产生错误。
    在CANFD中,数据段的波特率是比CAN更高的(BRS位为隐性时),此时波特率越高,位宽越小,在发送报文时发送延迟影响越大,越容易产生位错误。由于发送延迟无法避免,此时就需要一种机制来保证发送与接收的位对应上,以避免产生位错误。这种机制就是发送延迟补偿了。
    TDC实际上就是在发送BRS位为隐性的CANFD报文时(BRS隐性即开启数据域波特率),在发送时延迟一定时间后,在第二采样点采样接收位,以正确采样到发送位对应的接收位。

3、二次采样点和发送延迟测量

当开启TDC后,控制器将自动测量Tx信号线上FDF位到r0位下降沿与Rx信号线上FDF位到r0位边沿的之间的延迟时间,如下图中所示,TDCV即为延迟时间。发送延迟测量的时间单位为CAN控制器时钟(TDC寄存器中一般对TDCV的值有限制,若超过寄存器最大位数,则发送延迟测量失败)。

不同于采样点,第二采样点在CAN FD控制器接收其他节点发送报文的过程中并不会起到任何作用。在达到延迟时间后,控制器此时需要采样接收位,该采样点我们称为第二采样点(SSP=Second Sample Point);第二采样点的作用,是在不改变传输延迟补偿的情况下,实现CAN FD在数据场的位错误检测要求。
Tssp = TDCV + TDCO
TDCV是接收到数据时的发送延迟时间,是当TDC使能的时候会自己自动计算的。
TDCO(TDC Offset)就是设置的正常采样点的时间。
一般TDCO设置与第一采样点一致,此外,ISO11898-1:2015中还对TDC做了一些规定:开启TDC后,数据段波特率的预分频值(DBRP)应设置为1或2;控制器实现TDC机制应能补偿至少两个位时间。
当CANFD数据域波特率大于1Mbps时,应开启TDC;
数据段波特率的预分频值(DBRP)建议设置为1或2;
第二采样点SSP=发送延迟测量值TD + Offset, 其中Offset设置与第一采样点一致或早1Tq。

总线同步

由于CAN上没有时钟线,采用的是异步串行通信,为保证报文接收节点能在正确的采样点采集到准确的电平,CAN总线需要进行同步,包括硬同步和重同步
同步规则:

  • 一个位时间内只允许一种同步方式
  • 任何一个“隐性”到“显性”的跳变都可用于同步

1、硬同步

硬同步发生在SOF(CAN的起始位)位,所有接收节点调整各自当前位的同步,调整宽度不限,使其位于发送的SOF内

2、重同步

重同步是指接收节点检测出除SOF位以外的其他位,通过调整位时序进行的同步调整
重同步会通过加长PBS1段,或缩短PBS2段来调整同步,以保证采样点的准确。

参考

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号