写在前面
本篇文章主要讲解在汽车电子中CAN总线采样率的相关知识点,内容涉及CAN波特率、采样点、时间份额、同步跳转宽度以及采样率的计算。
若有相关问题,欢迎评论沟通,共同进步。(*^▽^*)
1、CAN波特率
CAN波特率常规分为250kbps和500kbps,本文章主要以这两个波特率为例进行说明。
2、CAN的标称位时间
CAN的标称位时间(Nominal bit timing)可以分为四个段:同步段、传播时间段、相位缓冲段1和相位缓冲段2。
标称位=同步段+传播时间段+相位缓冲段1+相位缓冲段2
下面将分别进行说明:
同步段(SYNCHRONIZATION SEGMENT,SYNC_SEG—SS):用于实现时序调整,总线上各个节点的跳变沿产生在同步段内,通常为1个Tq(固定值);
传播时间段(PROPAGATION TIME SEGMENT,PROP_SEG—PTS):用于补偿网络上的物理延迟时间。这些延迟时间包含信号在总线上的传输延迟和CAN节点内部的处理延迟。传播段保证了2倍的信号在总线上的延迟时间;
相位缓冲段1(PHASE BUFFER SEGMENT1,PHASE_SEG1—PBS1)和相位缓冲段2(PHASE BUFFER SEGMENT2,PHASE_SEG2—PBS2):用于补偿跳变沿的相位误差,其长度会在重同步的实现过程中延长或缩短。
其中:
BS1=PTS+PBS1
BS2=PBS2
BS1>BS2≥SJW
通常情况下,采样点位于相位缓冲段1的结尾。由于相位缓冲段1和相位缓冲段2可以根据实际情况进行延长或缩短,所以采样点也会随之变化。
3、采样点(SAMPLE POINT)
采样点是读取总线电平,并将读到的电平作为相应位值的点。
根据CAN协议用户采样模式可以设置为1个采样点或3个采样点。
在1个采样点采样模式下,采样点在PHASE_SEG1的末尾。
在3个采样点采样模式下,再多取另外两个的采样点,间隔为一个Tq,最后一个采样点也在PHASE_SEG1的末尾。如下图所示:
1个采样点:
3个采样点:
4、时间份额(Time quantum,Tq)
CAN控制器的最小时间周期称作时间份额(Time quantum,简称Tq),它是通过MCU芯片的晶振周期分频得到。传输一个bit位由若干个Tq组成。
Tq = 1 / f(CAN)
也就是一个tq等于CAN的时钟的倒数。
5、同步跳转宽度(SJW)
同步跳转宽度SJW(Synchronization Jump Width)并不是标称位时间的一部分,主要是用来限定延长PHASE_SEG1或者缩短PHASE_SEG2的最大宽度。其中:
BS1=PTS+PBS1
BS2=PBS2
BS1>BS2≥SJW
6、采样率计算
采样点的理论值计算公式:
sample=(1+BS1)/(1+BS1+BS2)*100%
但是在实际应用过程中,GD32A103xxxx的理论值和实测值有1个Tq的误差,所以实测值计算公式:
sample=(1+BS1-1)/(1+BS1+BS2)*100%= BS1 /(1+BS1+BS2)*100%