第1章:CAN通信硬件设计——选型与防护实战
大家好,我是老张。在高压系统里摸爬滚打了十几年,今天跟各位聊聊CAN通信硬件设计。说实话,这部分看着简单,但坑特别多。我见过太多项目因为收发器选型不对、隔离没做好,最后在EMC测试台上翻车。
嗯,咱们直接进入正题。
1.1 CAN收发器选型:TJA1050 vs SN65HVD230
收发器是CAN节点的物理层接口。说白了,它就是把控制器发出的数字信号,转换成差分信号在总线上跑。
TJA1050 是NXP的经典产品,我用了快十年。它的特点是:
- 支持5V供电,兼容3.3V逻辑(需要电平转换)
- 最高速率1Mbps,实际项目中我常用500kbps
- 待机电流极低,适合需要低功耗的节点
- 内置总线故障保护,-27V到+40V的共模范围
SN65HVD230 是TI的3.3V收发器。我个人习惯在低压系统里用它:
- 3.3V单电源供电,省掉电平转换芯片
- 同样支持1Mbps,但驱动能力稍弱
- 待机模式功耗更低,适合电池供电设备
- ESD保护等级高,HBM达到±16kV
选型建议:
高压系统(12V/24V供电)优先选TJA1050,低压系统(3.3V供电)选SN65HVD230。我在一个BMS项目中用过SN65HVD230,结果总线长度超过50米后信号质量下降明显,后来换成TJA1050加电平转换才解决。
| 参数 | TJA1050 | SN65HVD230 |
|---|---|---|
| 供电电压 | 5V | 3.3V |
| 最大速率 | 1Mbps | 1Mbps |
| 共模范围 | -27V ~ +40V | -7V ~ +12V |
| 待机电流 | 5μA | 1μA |
| 工作温度 | -40°C ~ +125°C | -40°C ~ +125°C |
小技巧: 选型时别忘了看封装。TJA1050有SO8和DIP8两种,SN65HVD230主要是SOIC-8。我建议优先选SO8,焊接方便,散热也好。
1.2 CAN控制器集成:STM32 FDCAN vs S32K FlexCAN
控制器负责协议层的处理。现在主流MCU都集成了CAN控制器,省掉外挂芯片的麻烦。
STM32 FDCAN 是ST在H7系列上推出的:
- 支持CAN FD,速率最高8Mbps
- 64字节数据场,传统CAN只有8字节
- 硬件时间戳,方便做同步
- 双时钟域,隔离设计更灵活
S32K FlexCAN 是NXP面向汽车电子的方案:
- 同样支持CAN FD,但最高速率5Mbps
- 128个MB(Message Buffer),比STM32多一倍
- 支持CAN 2.0B和CAN FD混合模式
- 内置DMA传输,减轻CPU负担
为什么会这样?因为应用场景不同。STM32 FDCAN更适合需要高速数据交换的场合,比如电池包内部通信。而S32K FlexCAN的MB数量多,适合需要大量消息过滤的网关节点。
注意: 使用FDCAN时,收发器也必须支持CAN FD。我见过有人用TJA1050配FDCAN,结果速率一上2Mbps就丢包。后来换成TJA1044才稳定。
1.3 高压隔离设计:ISO1042与ADuM1201
高压系统里,隔离是保命的关键。你想想看,CAN总线可能从高压区域穿到低压区域,不隔离的话,一个浪涌就能把整个控制器烧掉。
ISO1042 是TI的隔离式CAN收发器:
- 集成隔离和收发器,单芯片搞定
- 隔离电压5000Vrms,满足高压要求
- 速率1Mbps,支持CAN FD
- 共模瞬态抑制>100kV/μs
ADuM1201 是ADI的数字隔离器:
- 双通道隔离,适合做信号隔离
- 隔离电压2500Vrms,适合中低压系统
- 速率最高25Mbps,远高于CAN需求
- 需要外配收发器,灵活性更高
我个人习惯:如果空间允许,用ISO1042最省事。如果已经有现成的收发器,用ADuM1201做隔离更灵活。记得有一次做充电桩项目,客户要求隔离电压必须达到6000Vrms,ISO1042不够用,我只好用ADuM1201加光耦的方案。
隔离设计要点:
- 隔离电源必须独立,不能共用
- 隔离地之间保持足够爬电距离
- 高速信号走线要短,避免耦合
- 建议在隔离两侧加TVS管
1.4 共模扼流圈与ESD保护电路
这部分是抗干扰的最后防线。我曾经在一个项目中,CAN总线没加共模扼流圈,结果在电机启动时总线直接瘫痪。从那以后,我再也不敢省这个元件。
共模扼流圈的作用:
- 抑制共模干扰,差模信号不受影响
- 推荐阻抗100Ω@100MHz
- 选型时注意额定电流,至少是总线电流的2倍
- 放在收发器靠近总线侧
ESD保护电路:
- 使用双向TVS管,如PESD1CAN
- 结电容要小,<5pF,否则影响信号边沿
- 钳位电压要低于收发器耐压
- 建议在CANH和CANL对地各加一个
实战电路:
// CAN总线保护电路示意
// CANH --- [共模扼流圈] --- [TVS] --- GND
// CANL --- [共模扼流圈] --- [TVS] --- GND
// 终端电阻120Ω放在总线两端
嗯,这里要注意:共模扼流圈和TVS管的布局要靠近连接器。我见过有人把它们放在收发器旁边,结果走线太长,保护效果大打折扣。
避坑指南: 我曾经在一个项目中,用了便宜的共模扼流圈,结果高频特性差,CAN FD跑到2Mbps时信号畸变严重。后来换成Murata的DLW21SN系列才解决。选型时一定要看频率响应曲线。
好了,第1章的内容就到这里。硬件设计是基础,基础打不好,后面诊断和标定都是空中楼阁。下一章我们聊聊CAN协议栈的软件实现,到时候见。