第3章节有彩蛋,手把手教您如何配置Bit time比特率/波特率的时间参数:Sync_Seg,Prop_Seg,Phase_Seg1, Phase_Seg2。
目录
1.1 nominal bit rate与data bit rate的切换
2 Tq(time quantum)与Bit Time位时间的关系
2.2 Sync_Seg:synchronization segment
2.3 Prop_Seg:propagation time segment
2.4 Phase_Seg1,Phase_Seg2:phase buffer segment 1/2
2.5 SJW:Synchronization jump width
2.7 IPT :Information processing time信息处理时间
Bit Rate表示的一个CAN总线网络的带宽,以500 kbps比特率为例,表示一秒内最大传输500000个Bit,而一个Bit传输时间为(1 / 500000)秒 = 2000纳秒。
Bit Rate和Bit Time之间的关系是:
注:
启用FD的实现应支持两个bit rate,即nominal bit rate和data bit rate。未启用FD的实现仅限于Classical CAN所指定的nominal bit rate。第二个bit rate的定义,即data bit rate和data bit time,需要单独的配置register set。data bit time应小于等于nominal bit time。
data bit time只能在FD帧的data phase内使用。如果检测到该BRS位是隐性的,则data phase应从BRS Bit的sample point开始。当到达CRC Delimiter的第一个sample point时,或者当CAN实现看到导致EF启动的错误条件时,此data phase应结束。data phase之外的段应为arbitration phase。所有Classical Frame,EF,OF,idle time以及具有显性BRS Bit的FD帧的所有部分均应属于arbitration phase。nominal bit time应在arbitration phase内使用。
在隐性BRS bit的sample point,bit rate应从nominal bit rate切换为data bit rate。在CRC Delimiter的第一个sample point或检测到错误条件时,应将bit rate从data bit rate切换到nominal bit rate。当由于检测到错误条件而切换bit rate时,切换时间应在sample point之后偏移小于或等于两个Tq。BRS在Classical Frame经典帧中不存在。
注意:由于在BRS bit和CRC Delimiter bit的sample point切换了bit rate,因此这两个bit的长度是中间的。这两位的长度之和等于nominal bit time的一位和data bit time的一位之和,参见图1-1。
图1-1 nominal bit time段和data bit time段
arbitration phase仲裁段:使用nominal bit time标称位时间的段。
data phase数据段:使用data bit time数据位时间的段。
nominal bit rate标准比特率:在arbitration phase仲裁段,每个time的Bit数量,与Bit encoding/decoding无关。
data bit rate数据比特率:在data phase数据段,每个time的Bit数量,与Bit encoding/decoding无关。
nominal bit time标准位时间:arbitration phase一个Bit的持续时间。
data bit time数据位时间:data phase一个Bit的持续时间。
图2-1是一个Classical CAN Standard Frame的波形(CAN_H和CAN_L共用一个探头):
图2-1
将图2-1进行分解得到图2-2,在该图中您可以清楚的看到,一个Bit Time的配置应使用以下time segment:Sync_Seg,Prop_Seg,Phase_Seg1,Phase_Seg2。每个time segment由若干个Tq(time quantum时间片)组成,而Tq是由是时钟源(crystal oscillator晶体振荡器的Oscillator Clock或Peripheral Clock)经过Prescaler预分频器分频得到的一个时间长度,见图2-3。
图2-2
图2-3
Tq(time quantum)应是从node clock period得出的固定时间单位。应至少存在一个可编程的prescaler预分频器,其整数值的范围至少为1到32。Tq的长度应为
应该有两个实现选项,或者
两个单独的prescaler使Tq(N)和Tq(D)具有不同的长度。使用共享的prescaler,Tq(N)与Tq(D)具有相同的长度。bit time的长度取决于Tq的长度以及bit中Tq的数量。如果不同的参数组合达到相同的bit time长度,则应使用Tq较短的组合。
未启用FD的实现方式仅限于基于Tq(N)的nominal bit time。
使CAN实现的操作与CAN总线上的信号同步应以一个Tq的time step运行。在每个Tq,都应分析总线状态是隐性还是显性。在某个Bit的sample point处检测到的总线状态应视为该Bit的值。两个连续Tq之间的总线状态差异是一个边沿。
Bit Time的这一部分,即synchronization segment同步段(其长度为固定的1 Tq),将用于同步总线上的各个CAN节点。预计将在此段内检测到边沿。在Sync_Seg之外检测到的边沿可能导致CAN节点将其操作同步到该边沿。
Bit Time的这一部分,即propagation time segment传播时间段,应用于补偿网络内的物理延迟时间。这些延迟时间包括总线上的信号传播时间和CAN节点的Internal delay time内部延迟时间,见图2-4。
Bit Time的这一部分,既phase buffer segment相位缓冲段,用于补偿边沿相位误差。这些段可以通过resynchronization重新同步来延长或缩短。Resynchronization重新同步将导致bit time的缩短或延长,
当相位误差的大小大于SJW的编程值时,
—如果相位误差e为正,则Phase_Seg1应延长等于SJW的量;
—如果相位误差e为负,则Phase_Seg2应缩短等于SJW的量。
如果将Phase_Seg2缩短到小于information processing time的值,则可以在Phase_Seg2结束之后完成后续bit level的计算。
作为resynchronization重新同步的结果,可能延长Phase_Seg1或者可能缩短Phase_Seg2。Phase_Seg的延长和缩短的量由SJW给出上限。
SJW不大于Phase_Seg 1/2中较小的一个,并且Prop_Seg限制了可用于Phase_Seg的那部分bit time。
sample point应为读取总线电平并将其解释为相应位的值的时间点。它的位置应在Phase_Seg1的末尾。
公式:(Sync_Seg + Prop_Seg + Phase_Seg1)/(Sync_Seg + Prop_Seg + Phase_Seg1 + Phase_Seg2)
单位:%。
SP:Sample Point
SSP:Secondary Sample Point
Information processing time为计算后续bit level所需的tq数量。该计算从sample point开始,并且必须小于或等于Phase_Seg2。
CAN节点的Internal delay time,tnode,应该是沿发送和接收路径发生的所有异步延迟的总和,相对于 CAN 实现的bit timing logic unit。有关更多详细信息,见图2-4。
结合图2-4,
图2-4 - 在arbitration phase,CAN节点A和B的delay time与bit time phase之间的时间关系
Bit Time的配置应使用以下time segment执行:Sync_Seg,Prop_Seg,Phase_Seg1,Phase_Seg2和SJW,它们均表示基于最小Tq和prescaler m的整数个Tq。对于启用FD的实现,有两组配置值。
对于启用了FD的实现和未启用FD的实现,bit time segment的长度的配置范围应不同。
表- time segment的最小配置范围
参数 | 未启用FD | 启用FD | ||
单独的prescaler | 共享prescaler | 分开或共享prescaler | ||
Nominal bit time | Nominal bit time | Nominal bit time | Data bit time | |
Prescaler m | 1 to 32 | 1 to 32 | 1 to 32 | |
Sync_Seg | 1 Tq(N) | 1 Tq(N) | 1 Tq(N) | 1 Tq(D) |
Prop_Seg | 1 to 8 Tq(N) | 1 to 48 Tq(N) | 1 to 96 Tq(N) | 0 to 8 Tq(D) |
Phase_Seg1 | 1 to 8 Tq(N) | 1 to 16 Tq(N) | 1 to 32 Tq(N) | 1 to 8 Tq(D) |
Phase_Seg2 | 2 to 8 Tq(N) | 2 to 16 Tq(N) | 2 to 32 Tq(N) | 2 to 8 Tq(D) |
SJW | 1 to 4 Tq(N) | 1 to 16 Tq(N) | 1 to 32 Tq(N) | 1 to 8 Tq(D) |
bit time segment的配置应满足以下限制。
在synchronization同步的情况下,Phase_Seg1可能会更长,而Phase_Seg2可能会短于其编程值。在两个bit timing配置中,sample point的位置可能有所不同。在data bit rate的配置中,Prop_Seg的长度可以为零。
在CAN实施中,Prop_Seg和Phase_Seg1不需要单独编程。对Prop_Seg和Phase_Seg1之和进行编程就足够了。对于未启用FD的实现,nominal bit time内的Tq总数应至少可设置为8至25。对于启用FD的实现,data bit time中的Tq总数应至少可编程为5至25,nominal bit time中至少为8至80。
如果在nominal bit time和data bit time中使用相同的Tq长度,并且在网络的所有CAN节点中nominal bit time中sample point的位置都相同,则可以实现网络的最佳时钟容限使用FD帧。
必须对不同CAN节点中的node clock oscillator的频率进行协调,以便为nominal bit time提供全网范围的指定Tq,对于启用FD的实现,则为data bit time提供全网范围的指定Tq。
参考图2-3,假设CAN_CTRL1寄存器的CLKSRC选择Oscillator Clock(8MHz)。以Classical CAN为例,下表中列出了常用的Bit Rate比特率/波特率(250kbps,500kbps,1Mbps,采样点都是75%)时间参数的选取。
注意:
适用的内容中,Sync_Seg,Prop_Seg,Phase_Seg1,Phase_Seg2存在多种组合,这里仅列出了其中一种组合。
Bit Rate | Bit time | prescaler | Tq | Bit time的Tq数量 | Sync_Seg | Prop_Seg | Phase_Seg1 | Phase_Seg2 |
250kbps | 4000纳秒 | 1 | 125纳秒 | 32 | 不适用 | |||
2 | 250纳秒 | 16 | 1 | 9 | 2 | 4 | ||
3 | 475纳秒 | 不适用 | ||||||
4 | 500纳秒 | 8 | 1 | 3 | 2 | 2 | ||
5 | 625纳秒 | 不适用 | ||||||
… | … | |||||||
500kbps | 2000纳秒 | 1 | 125纳秒 | 16 | 1 | 9 | 2 | 4 |
2 | 250纳秒 | 8 | 1 | 3 | 2 | 2 | ||
3 | 475纳秒 | 不适用 | ||||||
… | … | |||||||
1Mbps | 1000纳秒 | 1 | 125纳秒 | 8 | 1 | 3 | 2 | 2 |
2 | 250纳秒 | 不适用 | ||||||
… | … |
获取更多“汽车电子资讯”和“工具链使用”,
请关注“汽车电子助手”,做您的好助手。