第2章 CAN FD物理层:从信号到硬件的实战要点

大家好,我是老李。做车载ECU开发十几年,物理层这块我吃过不少亏。今天咱们聊聊CAN FD物理层,说白了就是信号怎么在线上跑、收发器怎么选、位时序怎么配。这些基础打不牢,上层协议栈写得再好也白搭。

2.1 CAN FD差分信号与总线拓扑

CAN FD和传统CAN一样,用的都是差分信号。两根线,CAN_H和CAN_L。信号靠的是两根线的电压差来传递。隐性时,两根线都2.5V左右,差为0。显性时,CAN_H拉到3.5V,CAN_L降到1.5V,差为2V。

我刚开始做项目时,有次发现总线莫名其妙丢帧。查了半天,原来是CAN_H和CAN_L接反了。嗯,这种低级错误,犯过一次就记住了。

关键点:CAN FD的差分信号幅值比传统CAN略小,但速率更高。数据段速率可达5Mbps甚至8Mbps。信号质量对线束布局更敏感。

总线拓扑方面,CAN FD依然是多主总线。节点挂在两根线上,两端各一个120欧姆终端电阻。我建议你记住这个原则:

  • 总线长度:速率越高,总线越短。5Mbps时,建议不超过40米
  • 节点数量:理论上最多110个,实际建议不超过30个
  • 分支长度:每个节点的分支线(stub)尽量短,最好小于0.3米

为什么分支要短?因为高速信号在分支处会产生反射。我遇到过一台车,某个节点在副驾座椅底下,线束绕了一大圈,结果CAN FD通信时好时坏。后来把分支剪短到20厘米,问题解决了。

2.2 位时序与采样点配置

位时序这块,很多工程师觉得难。其实没那么复杂。CAN FD的一个位时间,分成四段:

段名称英文作用
同步段Sync_Seg同步所有节点时钟,固定1个TQ
传播段Prop_Seg补偿信号在总线上的传播延迟
相位缓冲段1Phase_Seg1采样点前调整,补偿相位误差
相位缓冲段2Phase_Seg2采样点后调整,补偿相位误差

采样点位置,就是(同步段+传播段+相位缓冲段1) / 总TQ数。我个人习惯把采样点设在80%-87%之间。为什么是这个范围?

你想想看,采样点太靠前,信号还没稳定;太靠后,留给相位缓冲段2的时间不够,同步容限就小了。我做过一个项目,客户要求采样点设在75%,结果总线抖动一大就丢帧。后来改到85%,稳得很。

实战建议:对于500kbps仲裁段 + 2Mbps数据段的CAN FD配置,我常用的TQ分配是:Sync=1, Prop=2, Phase1=7, Phase2=2,总TQ=12,采样点=83.3%。

位时序配置时,要注意仲裁段和数据段的采样点可以不同。仲裁段速率低,采样点可以靠后一点。数据段速率高,采样点要稍微靠前。我一般仲裁段设87%,数据段设80%。

2.3 CAN FD收发器选型要点

收发器选型,说白了就是选芯片。但这里面的坑不少。我总结几个要点:

  1. 速率支持:必须明确支持CAN FD。老式CAN收发器只能到1Mbps,跑不了高速数据段。
  2. 环路延迟:收发器的环路延迟要小。CAN FD数据段速率高,延迟大了位时序就配不准。
  3. EMC性能:车载环境电磁干扰大,收发器要有良好的共模抑制能力。
  4. 工作电压:3.3V还是5V?看你的MCU和系统供电。
  5. 待机模式:支持低功耗唤醒的收发器,对车载ECU很重要。

我常用的几款收发器:

型号厂商最高速率特点
TJA1044NXP5Mbps低功耗,待机电流小
TCAN1042TI8Mbps环路延迟小,适合高速
ATA6563Microchip5Mbps性价比高,兼容性好

注意:我曾经在一个项目中用了某款号称支持CAN FD的收发器,结果实际测试只能跑到2Mbps。后来仔细看数据手册,发现它说的"支持CAN FD"只是指协议兼容,物理层速率根本没达标。所以选型时一定要看数据手册里的"Data Rate"参数,不能只看宣传。

收发器布局也有讲究。我建议:

  • 收发器尽量靠近CAN连接器,减少走线长度
  • 电源去耦电容要靠近收发器引脚放置
  • CAN_H和CAN_L走线要平行,等长,远离时钟线

嗯,物理层这块内容就这些。看似简单,但每个细节都可能影响整车的通信可靠性。下一章咱们聊CAN FD数据链路层,那才是协议栈的核心。到时候我会分享一些驱动开发的实战代码,敬请期待。