4. CAN FD协议深入
CAN FD(Flexible Data-rate)并不是简单地把CAN的波特率调高,而是在保留CAN仲裁机制与事件触发特性的前提下,对帧结构、速率切换、校验强度和错误界定规则做了系统性增强。对商用车网络升级而言,理解这些位级机制,是判断“能否混跑、如何配置、故障如何定位”的基础。本节围绕五个关键点展开:可变数据场速率、BRS位、ESI位、CRC增强,以及错误处理与故障界定。
一、可变数据场速率:同一帧内两种速率
经典CAN整帧使用同一比特率,而CAN FD允许在一帧内使用两种速率:仲裁段仍使用较低的标称速率(Nominal Bit Rate),保证多节点竞争时的位定时兼容性;数据段则切换到更高的数据速率(Data Bit Rate),用于传输最多64字节的有效载荷。这样既保留了CAN的仲裁确定性,又显著提升了有效吞吐量。
速率切换不是随意的,它由帧内的BRS位触发,并在CRC界定符前切回标称速率。因此,一帧CAN FD的位时间参数需要同时配置两套:标称段的同步跳转宽度、传播段、相位段,以及数据段的对应参数。若两套参数中任意一套采样点偏移过大,都会在对应区段产生位错误。
标称速率:500 kbps,采样点 80%
数据速率:2 Mbps,采样点 75%
数据段长度:最多 64 字节
速率切换点:BRS 位采样后进入数据段,CRC 界定符前返回标称速率
二、BRS位:速率切换的“开关”
BRS(Bit Rate Switch)位于控制段,是CAN FD帧中决定“数据段是否提速”的关键位。其规则非常明确:
- BRS = 1(隐性):从该位之后进入数据段,使用数据速率发送;
- BRS = 0(显性):整帧保持标称速率,不进行速率切换。
需要注意的是,BRS位本身仍在标称速率下发送,它只是“预告”后续数据段将提速。因此,BRS位的采样必须准确,否则接收节点可能误判速率切换点,导致后续数据段全部错位。在工程配置中,BRS通常由控制器根据帧类型自动置位,但工具链和网关需要正确识别,否则会出现“发送成功、接收丢帧”的隐蔽问题。
三、ESI位:错误状态指示
ESI(Error State Indicator)用于指示发送节点的错误状态:
- ESI = 0(显性):发送节点处于错误主动(Error Active)状态;
- ESI = 1(隐性):发送节点处于错误被动(Error Passive)状态。
ESI位让接收方在不额外查询的情况下,直接感知发送节点的健康度。对商用车网络而言,这一位非常有价值:当某个ECU反复进入错误被动,ESI会持续置1,诊断仪或网关可据此提前发现“亚健康节点”,而不是等到总线彻底瘫痪才介入。需要强调的是,ESI只反映发送节点自身的错误计数器状态,并不代表整条总线一定存在故障,但它是故障界定中的重要线索。
四、CRC增强:更长校验与位填充计数
CAN FD的CRC从经典CAN的15位扩展到17位或21位,具体取决于数据场长度:数据场不超过16字节时使用17位CRC,超过16字节时使用21位CRC。更长的CRC多项式显著降低了漏检概率,适应更高速率和更长数据场带来的风险。
此外,CAN FD在CRC段引入了填充位计数器(Stuff Bit Count)机制。由于CAN FD在数据段使用固定位填充规则,发送端会统计填充位数量并将其纳入CRC计算,接收端据此校验。这一机制有效防止了因填充位错位导致的CRC误判,是CAN FD错误检测能力提升的重要细节。
| 特性 | 经典CAN | CAN FD |
|---|---|---|
| 数据场长度 | 最多 8 字节 | 最多 64 字节 |
| 速率切换 | 不支持 | BRS 位控制 |
| 错误状态指示 | 无 | ESI 位 |
| CRC 长度 | 15 位 | 17 位 / 21 位 |
| 填充位计数 | 无 | 有,纳入 CRC |
| 错误帧 | 固定格式 | FD 错误帧格式 |
五、错误处理与故障界定
CAN FD沿用了CAN的错误计数与状态机机制,但在错误帧格式和故障界定上有所调整。节点仍通过发送错误计数器(TEC)和接收错误计数器(REC)在错误主动、错误被动、总线关闭三态之间迁移。当TEC超过255时,节点进入总线关闭,停止参与总线通信。
CAN FD的错误帧分为两类:FD错误帧和经典错误帧。在FD帧中检测到错误时,节点发送FD错误帧;在仲裁段或标称速率区段检测到错误时,可能发送经典错误帧。这一区分对故障定位非常关键,因为错误帧类型往往能反推出错误发生的区段。
六、案例与复盘:混跑网络中的典型问题
某商用车项目在升级CAN FD时,出现“部分节点能收不能发”的现象。排查发现,网关节点配置了2 Mbps数据速率,但部分老节点仅支持500 kbps标称速率且未正确识别BRS位,导致数据段采样错位。进一步检查发现,这些节点的数据段采样点设置为60%,而发送端为75%,两者偏差过大。调整采样点并统一BRS识别逻辑后,问题消失。
另一个常见误区是只关注数据速率,忽略标称速率的一致性。CAN FD允许数据段提速,但仲裁段仍必须全网一致。若标称速率存在偏差,仲裁阶段就会产生位错误,表现为“低速时正常、高速时丢帧”。因此,升级工程中必须同时校验两套位定时参数,并用示波器或CAN分析仪确认实际采样点。
总结来看,CAN FD的深入理解不能停留在“速率更高、数据更长”的层面。BRS决定速率切换点,ESI暴露节点健康度,CRC增强与填充位计数提升检错能力,错误帧类型和状态机则构成故障界定的依据。只有把这些位级机制与位定时参数、线束条件、节点兼容性放在一起考虑,商用车CAN FD网络升级才能真正做到可配置、可验证、可定位。