1采样点的定义
采样点是CAN控制器读取总线电平,并解释各个比特的逻辑值的时间点。
首先我们需要了解Tq的概念,Tq是CAN控制器的最小时间周期称作时间份额(Time quantum,简称Tq),它是通过芯片晶振周期分频而来。传输的个Bit位由若干个Tq组成,根据功能传输一个Bit位需要分成四个阶段:同步段、传输段、相位缓冲段1和相位缓冲段2。
Bit位的组成概况如图1所示。
图 1 标称bit位的组成
这4个阶段的功能如下:
1.同步段(Sync_Seg):用于实现时序调整,总线上各个节点的跳变沿产生在同步段内,通常为1个Tq;
2.传播段(Prop_Seg):用于补偿网络上的物理延迟时间。这些延迟时间包含信号在总线上的传输延迟和CAN节点内部的处理延迟。传播段保证了2倍的信号在总线上的延迟时间;
3.相位缓冲段1(Phase_Seg1)和相位缓冲段2(Phase_Seg2):用于补偿跳变沿的相位误差,其长度会在重同步的实现过程中延长或缩短。
采样点位于相位缓冲段1的结尾。由于相位缓冲段1和相位缓冲段2能够延长或缩短,采样点也能够随之变化。采样点的计算方法就是:前面3个段的和占总百分比多少,即(同步段+传播时间段+相位缓冲段1) /(同步段+传播时间段+相位缓冲段1+相位缓冲段2)。举个例子:如果一个位是80个Tq,相位缓冲段2是20个Tq,那么Sample Point就是60/80=75%。
2 晶振周期与位时间
晶振时钟周期:是由单片机振荡器的晶振频率决定的,指的是振荡器每震荡一次所消耗的时间长度,也是整个系统中最小的时间单位。晶振周期与CAN位时间的工作机理如图2所示。
图 2 晶振周期与CAN位时间的关系图
3 CAN采样点的计算
采样点的计算如下所示。
Sample =(1+Controller Prop Seg+Controller Seg1)/(1+Controller Prop Seg+Controller Seg1+Controller Seg2)
图3 控制器Nominal Baud波特率配置信息
图3所示为控制器的CANFD中低波特率配置信息。根据图中所示信息可以计算相关信息。
Sample(Nominal Baud)=(1+23+8)/(1+23+8+8)=80%
图4所示为的CANFD中高波特率配置信息,那么CANFD高波特率相关信息计算如下。
Sample(Data Baud)=(1+1+5)/(1+1+5+3)=70%
图 4 控制器中Data Baud波特率配置
根据ISO11898-2015的描述,CANFD中低波特率域和高波特率域的位宽采样机理如图5所示。
图 5 CANFD中低速区和高速区的位宽计算原理
Tq的计算原理如下所示。
Tq=1/(2×107)(s)=50(ns)
仲裁场计算采样点:
对于仲裁场波特率500kbps,传输一个bit位的时间1/500000s=2us,所以一共分配2us/50ns=40个Tq,如果采样点设置为80%,则实际分配的Tq数目为Sync_Seg+Prop_Seg+Phase_Seg1=40×80%=32Tq。
数据场计算采样点:
对于数据场波特率2Mkbps,传输一个bit位的时间为1/2000000s=500ns,因此分配500ns/50ns=10个Tq,采样点设置为70%,则Sync_Seg+Prop_Seg+Phase_Seg1=10×70%=7Tq。
4 可变波特率CANFD的位计算
CANFD的帧信息如图5所示。其中可变波特率CANFD的波特率由BRS位与CRC DEL两个位来实现波特率的改变。其中,BRS(Bit Rate Switch)为低波特率域(Nominal Baud field)向高波特率域(Data Baud field)变化的Bit位和CRC DEL(CRC Delimiter)为高波特率向低波特率变化的Bit位。
图 6可变速率 CANFD帧信息架构图
实际ISO-11898-2015法规中给出了可变CANFD的BRS位和CRC DEL位信息,如图7所示。其中示例中所示的信息里低波特率的Prescaler(N)为3,Prop_Seg(N)为5,Phase_Seg1(N)为4,Phase_Seg2(N)为4,高波特率的Prescaler(D)为1,Prop_Seg(D)为1,Phase_Seg1(D)为6,Phase_Seg2(D)为6。
图 7 可变波特率CANFD中的位宽计算
BRS Bit位的低波特率部分长度为12个tq(N)(Prescaler(N),Prop_Seg(N),Phase_Seg1(N)之和的数目),高波特率部分长度为6个tq(D)(Phase_Seg2(D)的数目)。根据前文的采样点计算,可以得出BRS和CRC DEL的位宽计算公式。
BRS位宽= Nominal Baud·Sample(N)+Data Baud·(1-Sample(D))
CRC DEL位宽 = Nominal Baud·(1-Sample(D))+Data Baud·Sample(N)
根据之前查询的信息,若控制器中CANFD高波特率的采样点为70%,低波特率的采样点为80%。所以BRS的位宽理论长度值为2000ns×80%+500ns×(1-70%)=1750ns。
同理,CRC DEL的位宽理论值长度为500ns×70%+2000×(1-80%)=750ns。
参考文献:
- ISO 11898-1:2003 Road vehicles — Controller area network (CAN) — Part 1: Data link layer and physical signalling
- ISO 11898-1:2015 Road vehicles — Controller area network (CAN) —Part 1:Data link layer and physical signalling