CAN FD 速率与负载关系:仲裁段与数据段的不同节奏
好,咱们进入第4章。前面聊了CAN FD的帧结构和DLC编码,但有个核心问题一直绕不开:速率和负载到底怎么配?
很多人拿到CAN FD的第一反应是:“既然数据段能跑8M,那我全局都用8M不就行了?” 嗯,千万别这么干。我见过不止一个团队,一上来就把整个网络配成8M,结果一挂负载就疯狂丢帧。为什么会这样?咱们得从仲裁段和数据段的“脾气”说起。
仲裁段波特率:为什么不能跑太快?
仲裁段本质上还是经典CAN那一套。所有节点同时向总线发位电平,通过“线与”机制决定谁赢。这就要求每个节点都能在同一个位时间内,听到总线上的电平变化。
说白了,仲裁段波特率的上限,取决于整个网络最远两个节点之间的传播延迟。包括收发器延迟、线缆延迟、耦合器延迟等等。我习惯用下面这个经验公式估算:
举个例子。一条30米长的CAN FD总线,线缆延迟大约 5 ns/m,来回就是 300 ns。加上收发器环路延迟(一般在 200 ns 左右),就已经 500 ns 了。如果再算上采样点容差,1 Mbps 的位时间(1 μs)几乎被吃掉一半。所以很多车载网络,尤其是车身域和底盘域,仲裁段还在老老实实跑 500 kbps。
数据段波特率:快,但要有底线
数据段就不一样了。BRS位为 1 之后,只有发送节点在驱动总线,其他节点只是“听”。没有仲裁冲突,速率自然可以大幅提升。
但数据段的速度也不是无上限的。它主要受两样东西限制:收发器的能力 和 信号质量。我实测下来,常见情况如下:
| 数据段速率 | 典型收发器支持 | 最大可靠线长(双绞线) | 备注 |
|---|---|---|---|
| 2 Mbps | 几乎所有 CAN FD 收发器 | 约 20 m | 安全的起点选择 |
| 5 Mbps | 主流 CAN FD + 信号改善技术 | 约 10 m | 需注意终端匹配 |
| 8 Mbps | 高速 CAN FD(如 TJA1463) | 约 5 m | 对拓扑和线缆质量敏感 |
| > 8 Mbps | 特殊硅基方案或伪差分 | < 3 m | 非标,慎用 |
你看,速率每翻一倍,可靠长度大约减少一半。这不是线缆的物理限制,而是信号反射和振铃问题。数据段速率高,位时间短,信号反射来不及衰减就被采样到了。我个人习惯:如果网络中有超过 6 个节点或者线缆总长超过 10 米,我就不会把数据段配到 8 Mbps 以上。
BRS 切换时机:不是越快越好
BRS 位在控制场里,紧挨着 IDE 位之后。它决定了从哪个时刻开始切换到数据段高速率。但有一个容易被忽视的点:切换点的建立时间。
收发器从标准速率切换到高速率,不是瞬时的。我实测过几个主流收发器,切换稳定时间大约在 100 ns 到 300 ns 之间。如果 BRS 位刚刚发出,紧跟着第一个数据字节就跑高速,很可能采样点落在收发器的切换抖动区内,导致位错误。
我曾经在一个工控项目中碰到奇怪的现象:同一个报文,连续发送偶尔会出错,出错概率大约 1/200。查了两天才发现,是 BRS 切换后第一个位采样不对,时域上正好卡在收发器的切换瞬态上。后来我们把 DLC 里第一个数据字节 padding 了一个字节,问题就没了。
速率匹配策略:让仲裁段和数据段和平共处
好了,现在我们知道仲裁段要慢,数据段要快。但它们在一根总线上,怎么共存?这就是速率匹配的策略问题。
我归纳了三种常见做法:
- 固定速率差策略:仲裁段固定 500 kbps,数据段固定 2 Mbps。好处是简单,所有节点统一配置。坏处是灵活性差,无法针对长报文优化。
- 动态 BRS 策略:根据报文长度动态切换是否使用 BRS。比如 8 字节以下报文仍然跑标准速率,大于 8 字节才启用数据段高速率。这在混合型 CAN/CAN FD 网络中很实用。
- 分段隔离策略:通过 CAN FD 网关把不同速率域隔开,各自内部跑最优速率。比如车身域仲裁段 500k、数据段 2M;动力域仲裁段 1M、数据段 5M。域间用网关转发。
我个人倾向于第二种搭配第三种:在单个子网内用动态 BRS,跨网段用网关隔离。这样既能享受数据段高速红利,又不影响仲裁稳定性。你想想,如果一个 ECU 只需要发 8 字节的传感器值,硬上 5 Mbps 数据段纯属浪费,还增加风险。
实践小结
这一章的内容,总结起来就三句话:
- 仲裁段波特率 = 网络物理距离和节点数的函数,不是你想多快就多快。
- 数据段波特率 = 收发器能力和拓扑质量的总和,8 Mbps 只适用于短距离小网络。
- BRS 切换点是设计的关键细节,留出稳定窗口,别让收发器在过渡期出错。