CAN总线学习总结1——位定时与同步
一:位编码/解码
总线管理功能管理功能执行在位时间范围内,如CAN节点同步行为、网络传输延时补偿、采样点定位等,应由CAN协议集成电路的可编程位定时逻辑给出。
1.1正常位速率(BR)
在没有重同步的情况下,一个理想的发送器每秒发送的位数。
1.2正常位时间(tB)
tB = 1/BR
正常位时间可分为几个互不重叠的时间段:同步段(SYSNC_SEG)、传播段(PROP_SEG)、相位缓冲段1(PHASE_SEG1)、相位缓冲段2(PHASE_SEG2)。

1.2.1同步段(SYSNC_SEG)
用于同步总线上的各个节点,在此段内需要一个跳边沿。
1.2.2传播段(PROP_SEG)
用于补偿网络内的传输物理延时时间。这个延时时间由信号在总线上的传播时间和CAN节点内部延时时间组成。
1.2.3相位缓冲段1(PHASE_SEG1)、相位缓冲段2(PHASE_SEG2)
用于补偿沿的相位误差,通过重同步,这两个时间段可被延长或者缩短。
1.2.4采样点
是读取总线电平,并将它解析为数值的时间点。位于相位缓冲段1(PHASE_SEG1)的终点。
1.2.5信息处理时间
由采样点开始,保留用计算位电平的时间。
1.2.6重同步调转宽度
由于重同步的结果,相位缓冲段1(PHASE_SEG1)可被延长或者相位缓冲段2(PHASE_SEG2)可被缩短。这两个相位缓冲段的延长和缩短的总和上限由重同步跳转宽度给定。
1.2.7内部延时时间
CAN内部延时时间是发送和接收路径上的异步延时时间总和(通俗的理解是CAN收发器将逻辑电平转换成总线电平的时间toutput和将总线电平转为成逻辑电平的时间tinput的总和)。
tnode = toutput + tinput
为了仲裁的有效执行:
tPROP_SEG ≥ tnodeA + tnodeB + 2tbusline
tbusline:CAN总线的传输时间
1.3位时间编程
1.3.1时间份额(tq)
由振荡器周期派生出的一个固定的时间单元(1-32)。
如假设8M的振荡器频率,预分频系数为1,则最小时间份额tq = 1 / 8MHz = 0.125us。总线波特率要求为500kbps,位时间为2us,则需16tq 。
1.3.2正常时间段长度
同步段(SYSNC_SEG):1tq
信息处理时间:小于或等于2tq
传播段(PROP_SEG):用于补偿实际网络的传输延时时间,长度可编程为1-8tq
相位缓冲段1(PHASE_SEG1):可编程为1-8tq
相位缓冲段2(PHASE_SEG2):长度为相位缓冲段1(PHASE_SEG1)和信息处理时间的最大值
在CAN实现中,传播段(PROP_SEG)和相位缓冲段1(PHASE_SEG1)被统一编程,可称为Time segment 1,长度可编程为4-16tq。Time segment 1代表相位缓冲段2(PHASE_SEG2),长度可编程为2-8tq。在位时间中,时间份额的总数必须为8-25tq。

1.3.3采样点位置
tsp = (SYNC_SEG + Time segment 1) / (SYNC_SEG + Time segment 1 + Time segment 2)
如果位定时设置将采样点设置在位时间的末端,则传播段就会越长,能实现更远的网络。反之,则可提高重同步能力,对时钟误差的容忍能力越大。采样点的设置应使所有节点能够达到传播延迟和时钟误差的最佳折衷点。建议采样点设置应当靠近但是不超过0.875,这使传播延迟和时钟误差容忍达到最优。
二:同步
CAN总线的位同步只有在节点检测到“隐性位”(逻辑1)到“显性位”(逻辑0)的跳变时才会产生,当跳变沿不位于位周期的同步段之内时将会产生相位误差e。该相位误差就是跳变沿与同步段结束位置之间的距离。如果跳变沿发生在同步段之后采样点之前为正的相位误差;如果跳变沿位于同步段之前采样点之后为负的相位误差。相位误差源于节点的振荡器漂移、噪声干扰等。
硬同步和重同步是同步的两种形式,他们遵从下列规则:
- 在一个位时间内仅允许一种同步,要么硬同步要么重同步
- 任何一个从“隐性”到“显性”的下降沿都可以用于同步
- 硬同步只发生在帧起始‘SOF’位
- 重同步发生在一个报文‘SOF’位之外的其它位
- 发送节点不执行重同步,只有接收节点执行重同步
(注:在理解同步机制时,由于两个节点之间的传播延时时间相对于每一个位时间都是一致的,所以在理解同步机制时,可以将传播延时时间忽略)
2.1硬同步
硬同步只在总线空闲时通过一个下降沿(只发生在帧起始)来完成,此时不管有没有相位误差,所有节点的位时间从SYNC_SEG重新开始。强迫引起硬同步的跳变沿位于重新开始的位时间的同步段之内。
硬同步调整宽度不受限制。
如下图所示:硬同步的结果使接收节点B的下降沿重新处于位时间的SYNC_SEG内。

2.2重同步
- 若跳变沿发生在接收节点的SYNC_SEG内,则相位误差e = 0,不需要进行重同步。

- 若跳边沿发生在接收节点的SYNC_SEG之前,则相位误差e < 0,需要缩短相位缓冲段2(PHASE_SEG2)
如下图所示:执行重同步操作后,缩短了相位缓冲段2(PHASE_SEG2),使得接收节点B下一个位时间的采样点实现了与发送节点A之间的同步

- 若跳变沿发生在接收节点的SYNC_SEG之后,则相位误差e > 0,需要延长相位缓冲段1(PHASE_SEG1)
如下图所示:执行重同步操作后,延长了相位缓冲段1(PHASE_SEG1),使得接收节点B本次位时间的采样点实现了与发送节点A之间的同步

5656

被折叠的 条评论
为什么被折叠?



