4、位定时基本概念:位时间、时间量子(Tq)、采样点、传播延迟
好,咱们进入第四章。这一章讲的是CAN FD位定时,说白了就是信号在总线上怎么“卡点”的。很多刚接触CAN FD的朋友,上来就急着配波特率,结果通信死活不稳定。我当年也犯过这个错——以为只要把500kbps写进去就行,结果总线在高温下一塌糊涂。
位定时这玩意儿,表面上就是几个参数:位时间、时间量子、采样点、传播延迟。但坑就坑在,你得理解它们怎么配合的。下面我一个个拆开讲,你跟着我的思路走一遍。
4.1 位时间(Bit Time)
一个CAN FD数据位在总线上停留的时间,就叫位时间。它的倒数就是咱们常说的波特率。比如说,位时间是2微秒,波特率就是500kbps。
位时间不是一个简单的“开关”周期。CAN FD把位时间切成四段:
- 同步段(Sync_Seg) —— 总线电平跳变的“瞄准镜”。固定1个Tq,用来对齐所有节点的时序。
- 传播段(Prop_Seg) —— 补偿物理延迟。信号在总线上飞来飞去,这段就是给信号留的缓冲。
- 相位缓冲段1(Phase_Seg1) —— 负责采样点前的微调,也包含一部分跳变补偿。
- 相位缓冲段2(Phase_Seg2) —— 负责采样点后的调整,主要是做再同步。
你想想看,这四个段加起来,就是整个位时间。咱们做配置时,就是通过调节它们来保证采样点位置正确。
位时间公式:
位时间 = (Sync_Seg + Prop_Seg + Phase_Seg1 + Phase_Seg2) × Tq
波特率 = 1 / 位时间
4.2 时间量子(Tq, Time Quantum)
时间量子是CAN FD的最小时间单位。你可以把Tq想象成一把“时间尺子”的最小刻度。一根位时间由若干个Tq组成,常见的是8到25个Tq。
Tq怎么来的?它由系统时钟分频得到。比如你的控制器主频是40MHz,分频系数是4,那Tq就是100纳秒。我个人习惯先在数据手册里找到分频范围,再反推Tq。
这里有个细节:同一个CAN FD系统中,所有节点(包括仲裁段和数据段)的Tq必须保持一致。否则位同步会出问题。我在项目里遇到过,一个节点用40MHz晶振,另一个用20MHz,结果通信失败——其实就是Tq没对齐。
经验之谈: Tq数量不是越多越好。Tq多,采样点精度高,但位时间变长,波特率上不去。通常8~16个Tq是比较折中的选择。
4.3 采样点(Sample Point)
采样点,顾名思义,是接收节点在某个时刻“拍板定论”这个位是0还是1。采样点一般落在Prop_Seg和Phase_Seg1之间。
为什么采样点这么重要?因为总线上的所有节点,采样点位置必须尽量一致。哪怕偏差5%,在高速CAN FD下(比如5Mbps)都会导致位错误。
采样点的计算公式:
采样点位置(%) = (Sync_Seg + Prop_Seg + Phase_Seg1) / 总位时间 × 100%
举个例子:假设总位时间是10个Tq,Sync_Seg = 1,Prop_Seg = 2,Phase_Seg1 = 4,Phase_Seg2 = 3,那采样点位置就是 (1+2+4)/10 = 70%。
什么时候用70%?什么时候用80%?我个人的经验是:低速CAN(125kbps以下)可以放70%~75%;高速CAN FD(1Mbps以上)建议放80%以上。为什么?因为高速时物理延迟对采样点的影响更敏感,采样点靠后一些可以留出更多容错空间。
注意: 采样点不能太靠前(比如60%以下),否则信号还在抖动就采样了;也不能太靠后(比如90%以上),否则相位缓冲段2不够做再同步。
4.4 传播延迟(Propagation Delay)
传播延迟,就是信号从发送节点到接收节点的总延迟时间。它包括三部分:
- 收发器延迟(TX->RX的环回延迟)
- 总线电缆延迟(每米大约5~7纳秒)
- 线路上的寄生效应
在CAN FD里,传播延迟直接影响Prop_Seg的长度设置。如果Prop_Seg设得太短,信号还没到对边呢,采样点就到了,那接收到的数据就是错的。
我以前做过一个项目,总线长度是40米,用的1Mbps速率。按我的经验,Prop_Seg至少要能覆盖两倍的传播延迟(往返)。算一下:电缆40米,延迟约200ns;收发器延迟约150ns;总往返延迟大约700ns。那我Prop_Seg时间至少得设700ns以上。
经典估算: 传播延迟(单向) ≈ 电缆长度(m) × 5.5 ns/m + 收发器延迟(ns)。Prop_Seg建议设为 2 × 传播延迟(单向)。
下面这张图,我把这四个概念串在一起,你一看就明白整个位定时结构是怎么运作的。
这张图把四个段、采样点和Tq之间的关系画得一目了然。注意看采样点箭头——它就在Phase_Seg1和Phase_Seg2之间。实际配置时,我们会根据波特率、总线长度、收发器参数来反向算各段长度。
4.5 四个参数的关系,一句话总结
说了这么多,咱们把四个参数串起来:
- Tq 是最小刻度,由时钟分频得来。
- 位时间 是若干个Tq的叠加,决定波特率。
- 采样点 是“拍照”的时刻,位置靠Prop_Seg和Phase_Seg1来调。
- 传播延迟 是物理限制,Prop_Seg必须能包住它。
你配置CAN FD时,脑子里要有这张图。先算Tq,再定采样点,再算Prop_Seg,最后补Phase_Seg2。嗯,照着这个顺序来,基本不会出大问题。
配置口诀(我自己编的,挺管用):
时钟分频算Tq,采样点放80%左右,Prop_Seg覆盖两倍物理延迟,Phase_Seg2留够再同步余量。