位时序
- SS 段 (SYNC SEG) :同步段,大小为 1 Time Quanta (TQ) 。当总线上出现帧起始信号 (SOF) 时,其它节点上的控制器根据总线上的这个下降沿,对自己的位时序进行调整,把该下降沿包含到 SS 段内,根据起始帧来进行硬同步。
- PTS 段 (PROP SEG) :传播时间段,用于补偿网络的物理延时时间,包括发送单元的输出延迟、总线上信号的传播延迟和接收单元的输入延迟。
- PBS1 段 (PHASE SEG1) :相位缓冲段,主要用来补偿边沿阶段的误差,时间长度在重新同步的时候可以加长。
- PBS2 段 (PHASE SEG2) :相位缓冲段,用来补偿边沿阶段误差,时间长度在重新同步时可以缩短。
- SJW (reSynchronization Jump Width) :重新同步补偿宽度,即在重新同步的时候,PBS1 和 PBS2 段的允许加长或缩短的时间长度,SJW 加大后允许误差加大,但通信速度下降。SJW 为补偿此误差的最大值。
对于 CANFD 控制器,如CANFD 位时序所示:Tseg1 段包含帧信息 SS 段,PTS 段和 PBS1 段,而 Tseg2 段包含帧信息 PBS2 段。时钟 CLK 提供给整个控制器的系统时钟 Fclk,CANFD 位时序示例中,PRESC 为 2, CAN 的 Time Quanta (TQ) 时间量子即一个 TQ 时长为 PRESC / Fclk。
Tseg1 + Tseg2 即为一个位的采样时长,也等于一个波特率时长。
控制器时序的建议设定范围如 CANFD 控制器时序建议设定范围所示:
设置 |
建议设定范围 |
备注 |
---|---|---|
Tseg1 |
[2…65] TQ |
CAN 2.0B 速率 |
[2…65] TQ |
CANFD 普通速率 |
|
[2…17] TQ |
CANFD 高速速率 |
|
Tseg2 |
[1…8] TQ Tseg1 ≥ Tseg2+2 |
CAN 2.0B 速率 |
[1…16] TQ Tseg1 ≥ Tseg2+2 |
CANFD 普通速率 |
|
[1…8] TQ Tseg1 ≥ Tseg2+1 |
CANFD 高速速率 |
|
Tsjw |
[1…16] TQ Tseg2 ≥ Tsjw |
CAN 2.0B 速率 |
[1…16] TQ Tseg2 ≥ Tsjw |
CANFD 普通速率 |
|
[1…8] TQ Tseg2 ≥ Tsjw |
CANFD 高速速率 |
对于普通速率或者高速速率的帧波特率,对应的分频公式如普通速率/高速速率分频因子计算公式所示:
普通速率 |
高速速率 |
---|---|
Tseg1 = (S_Seg_1 + 2)TQ |
Tseg1 = (F_Seg_1 + 2)TQ |
Tseg2 = (S_Seg_2 + 1)TQ |
Tseg2 = (F_Seg_2 + 1)TQ |
Tsjw = (S_SJW + 1)TQ |
Tsjw = (F_SJW + 1)TQ |
PRESC = S_PRESC + 1 |
PRESC = F_PRESC + 1 |
CANFD 控制器还提供了一个可选的 Transmitter delay compensation(发送延迟补偿 TDC)和 Receiver delay compensation(接收延迟补偿 RDC)配置功能。当 TDC 功能使能后,RDC 功能也自动使能。CANFD 有可能因数据通过外部收发器的延迟或者总线产生的延迟而超过了一个位的时长。这种情况就需要补偿。如果没有 TDC,CANFD 帧就有可能检测到一个位错误。
传输延迟给了一个大传输延迟的示例。Txd 发送数据流标识出了位 A 和位 B。每一个位时间包含了 Tseg1 = 5 TQ,以及 Tseg2 = 3 TQ。传输延迟超过了两个位时长。原始的采样点 SP 无法用于采样正确的位值,CANFD 规范定义了一个额外的第二采样点 SSP。如果 TDCEN = 1,那么 TDC 使能,CANFD 控制器自动确认传输延迟。SSP 的位置由传输延迟加上 SSP 偏移的时间(即 SSPOFF)。SSPOFF 建议设置为同样 Tseg1 的值。