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 仲裁 / 2 Mbps 数据):
标称速率: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的容错窗口比经典CAN更窄,参数偏差可能在轻负载时不暴露,一旦总线负载升高或线束变长就会集中爆发。建议在台架阶段完成两套速率的采样点扫描与眼图验证。
CAN FD 帧结构与关键位示意 仲裁段 标称速率 控制段 BRS / ESI / DLC 数据段 数据速率(最高 64 字节) CRC 段 17/21 位 + 填充计数 ACK / 帧结束 标称速率 BRS 触发速率切换区间 BRS 位 1 = 数据段提速 0 = 整帧标称速率 切换点必须精确采样 ESI 位 0 = 错误主动 1 = 错误被动 反映发送节点健康度 CRC 增强 ≤16 字节:17 位 CRC >16 字节:21 位 CRC 填充位计数纳入校验 错误状态迁移与故障界定 错误主动 错误被动 总线关闭 TEC/REC > 127 TEC > 255

总结来看,CAN FD的深入理解不能停留在“速率更高、数据更长”的层面。BRS决定速率切换点,ESI暴露节点健康度,CRC增强与填充位计数提升检错能力,错误帧类型和状态机则构成故障界定的依据。只有把这些位级机制与位定时参数、线束条件、节点兼容性放在一起考虑,商用车CAN FD网络升级才能真正做到可配置、可验证、可定位。