CAN总线通过Propagation Segment和位时序机制对Tx到Rx延时进行了补偿,这种设计使得仲裁和通信在合理范围内的延迟下依然稳定工作。
在总线上发送 dominant(逻辑“0”)比发送 recessive(逻辑“1”)优先级高。
发送节点需要在发送每一位时,实时监测总线上实际的电平状态,以确认是否发生冲突。
CAN协议中,为了确保仲裁的正确性,采用以下机制来补偿或规避这些延时问题。
CAN总线使用严格定义的位时序(bit timing)来同步通信。
每个位被分为多个时间段:同步段(Sync Segment)、传播段(Propagation Segment)、相位段1(Phase Segment 1)和相位段2(Phase Segment 2)。
Propagation Segment专门用于补偿信号的传播延时(包括 Tx 到 Rx 的延时)。
通过调整Propagation Segment的长度,可以在一定程度上吸收这些延时的影响。
采样点通常在每个位的70-90%处,允许一定的延时补偿空间。
如果发送方的监听信号由于传播延时未及时返回到控制器,但仍在采样点之前完成,仲裁可以继续正常进行。
CAN协议规定了传播时间限制。根据 ISO 11898 标准,总线的物理特性和波特率决定了允许的最大延迟。
例如,在 1 Mbps 的波特率下,总线的单向传播延迟通常需要小于260纳秒。
延迟的实际影响通过网络设计(短总线长度、高质量电缆)和物理层优化(高速收发器)来减小。
对于高波特率(如1 Mbps及以上)的网络,延时的影响变得更加显著。这时通常会: