第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 | 补偿信号在总线上的传播延迟 |
| 相位缓冲段1 | Phase_Seg1 | 采样点前调整,补偿相位误差 |
| 相位缓冲段2 | Phase_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收发器选型要点
收发器选型,说白了就是选芯片。但这里面的坑不少。我总结几个要点:
- 速率支持:必须明确支持CAN FD。老式CAN收发器只能到1Mbps,跑不了高速数据段。
- 环路延迟:收发器的环路延迟要小。CAN FD数据段速率高,延迟大了位时序就配不准。
- EMC性能:车载环境电磁干扰大,收发器要有良好的共模抑制能力。
- 工作电压:3.3V还是5V?看你的MCU和系统供电。
- 待机模式:支持低功耗唤醒的收发器,对车载ECU很重要。
我常用的几款收发器:
| 型号 | 厂商 | 最高速率 | 特点 |
|---|---|---|---|
| TJA1044 | NXP | 5Mbps | 低功耗,待机电流小 |
| TCAN1042 | TI | 8Mbps | 环路延迟小,适合高速 |
| ATA6563 | Microchip | 5Mbps | 性价比高,兼容性好 |
注意:我曾经在一个项目中用了某款号称支持CAN FD的收发器,结果实际测试只能跑到2Mbps。后来仔细看数据手册,发现它说的"支持CAN FD"只是指协议兼容,物理层速率根本没达标。所以选型时一定要看数据手册里的"Data Rate"参数,不能只看宣传。
收发器布局也有讲究。我建议:
- 收发器尽量靠近CAN连接器,减少走线长度
- 电源去耦电容要靠近收发器引脚放置
- CAN_H和CAN_L走线要平行,等长,远离时钟线
嗯,物理层这块内容就这些。看似简单,但每个细节都可能影响整车的通信可靠性。下一章咱们聊CAN FD数据链路层,那才是协议栈的核心。到时候我会分享一些驱动开发的实战代码,敬请期待。