3、数据链路层关键参数:仲裁段与数据段波特率配置、采样点设置(典型值87.5%)、位时间(Tq)计算、同步段(SS)与传播段(PTS)设计

好,咱们进入数据链路层最核心的部分。说白了,CAN FD能不能跑得稳、跑得快,全看这几个参数调得对不对。我见过太多项目,硬件设计没问题,软件逻辑也没错,结果一上总线就丢帧——十有八九是波特率和采样点没配好。

3.1 仲裁段与数据段:为什么需要两套波特率?

传统CAN整个报文都是一个速率,比如500kbps。但CAN FD不一样,它把一帧报文拆成了两段:仲裁段数据段

  • 仲裁段:从SOF到BRS位(含),速率通常较低,比如500kbps。为什么?因为仲裁需要所有节点同步,速率太高容易出问题。
  • 数据段:从BRS位之后到CRC段,速率可以飙上去,比如2Mbps甚至5Mbps。数据段不需要仲裁,只管传数据,所以能跑快。

我个人习惯,仲裁段用500kbps,数据段用2Mbps。这个组合在大多数车载场景下都很稳。但要注意,不是所有收发器都支持5Mbps——嗯,选型时一定要看数据手册的“CAN FD data phase”支持速率。

关键点:仲裁段速率决定了总线能挂多少节点,数据段速率决定了吞吐量。两者要平衡,别光顾着快。

3.2 采样点设置:为什么典型值是87.5%?

采样点,就是接收器在每一位时间内,什么时候去读总线电平。这个位置太靠前,容易采到信号抖动;太靠后,又可能错过有效边沿。

CAN FD标准推荐数据段采样点设在87.5%左右。为什么是这个数?我简单解释一下:

  • 位时间的前半段,信号可能还在振荡(尤其是高速率下)。
  • 87.5%的位置,信号已经稳定,而且离下一位的边沿还有一段距离,容错性好。

我在项目中遇到过,有人把采样点设到80%,结果2Mbps下偶尔丢帧。后来改成87.5%,问题立刻消失。说白了,这个值是经过大量实践验证的“甜点”。

小技巧:如果你用NXP的收发器,可以查一下它们推荐的采样点范围。不同厂家芯片的物理特性略有差异,但87.5%基本通吃。

3.3 位时间(Tq)计算:把时间切成小片

位时间,就是一个bit占用的总时长。CAN FD把位时间切成了若干份,每份叫一个Tq(Time Quantum)。

公式很简单:

位时间 = 1 / 波特率
Tq = 位时间 / (SS + PTS + PBS1 + PBS2)

举个例子:数据段2Mbps,位时间就是500ns。如果我把位时间分成20个Tq,每个Tq就是25ns。这25ns怎么来的?由MCU的时钟分频得到。

我个人习惯,数据段至少分16个Tq以上。分太少,采样点精度不够;分太多,时钟抖动影响变大。16~20个Tq是比较舒服的范围。

注意:仲裁段和数据段的Tq数可以不同。仲裁段通常分8~16个Tq,数据段分16~20个Tq。别混为一谈。

3.4 同步段(SS)与传播段(PTS)设计

位时间由四段组成:

段名 缩写 作用 典型长度
同步段 SS 用于边沿同步,所有节点在此对齐 1 Tq
传播段 PTS 补偿总线传播延迟和收发器延迟 1~8 Tq
相位缓冲段1 PBS1 采样点前调整,吸收时钟偏差 1~8 Tq
相位缓冲段2 PBS2 采样点后调整,吸收时钟偏差 1~8 Tq

同步段(SS)固定为1个Tq。为什么?因为所有节点需要在一个固定的时间窗口内检测到总线边沿,这个窗口不能变。

传播段(PTS)就灵活多了。它要补偿:

  • 总线电缆的传播延迟(约5ns/m)
  • 收发器的环路延迟(通常100~200ns)
  • 隔离器或共模扼流圈的额外延迟

我曾经在一个项目中,总线长度只有3米,但PTS设了4个Tq。结果发现收发器延迟太大,PTS不够用,导致同步失败。后来我把PTS加到6个Tq,问题解决。你想想看,有时候问题不在线长,而在器件本身。

设计原则:PTS ≥ 2 × (总线传播延迟 + 收发器延迟) / Tq。算出来不够就加Tq数,或者降低波特率。

3.5 避坑指南:我踩过的几个坑

  • 坑1:仲裁段和数据段用同一套采样点。我曾经犯过这个错,结果数据段跑2Mbps时采样点偏到80%以下,丢帧率飙升。记住,两段要独立配置。
  • 坑2:Tq数太少。有次为了省资源,我把数据段Tq数压到8个。结果采样点只能设在87.5%附近,但PTS和PBS1/PBS2的调整空间太小,稍微有点时钟偏差就崩了。后来老老实实加到16个Tq。
  • 坑3:忽略收发器延迟。很多工程师只算总线长度,忘了收发器本身有延迟。尤其是带隔离的收发器,延迟可能翻倍。一定要看数据手册的“Loop Delay”参数。

我的建议:第一次调参数时,先用CAN分析仪抓一下实际波形,看看采样点位置对不对。别光靠算,实测最靠谱。

3.6 小结

数据链路层这几个参数,说白了就是“切时间”的艺术。仲裁段慢一点求稳,数据段快一点求效率。采样点87.5%是黄金位置,Tq数16~20个是安全区。PTS要算上所有延迟,别只盯着总线长度。

嗯,下一章咱们聊聊物理层——那些电容、电阻、终端匹配的细节。到时候你会发现,很多数据链路层的问题,根源其实在物理层。