一、CAN总线简单介绍
CAN 是 Controller Area Network 的缩写(简称为 CAN),是 ISO国际标准化的串行通信协议。
CAN总线特点:
1.多主控制系统柔软性速度快,距离远,支持距离最远可达10km;
2.具有错误检测、错误通知、错误恢复功能、故障封闭功能;
3.连接节点多。
数据传输原理实现
CAN通信只由两根线完成的,一条称为CAN_H(CAN High),一条称为CAN_L(CAN Low),共同构成一组差分信号线。整个过程是以差分信号的形式进行通讯的,即信号的逻辑 0 和逻辑 1 由两根差分信号线的电压差来表示。终端电阻(通常位120欧)为在高速CAN中防止信号反射和振铃现象,以差分信号形式传送,稳定性更好,因为即使环境问题导致CAN_High电压发送变化,则CAN_L也会发送同等变化,两者做差即可抵消由于这个环境引起的变化。
显/隐性电平: 在总线上通常逻辑1表示隐性。而0表示显性。总线上的逻辑0即差分电压差为2V左右(CAN_H=3.5V,CAN_L=1.5V),总线上的逻辑1即差分电压差为0V(CAN_H=2V,CAN_L=2V)。
STM32 中将CAN接口集成在芯片内,使用的时候再外接CAN收发器,常用的有TJA1050和vp230两种芯片。
二、实验验证终端电阻对CAN通信的影响
测试环境:
使用了6个节点的can设备(stm32f103最小系统板),为了便于直观观测每个节点上报情况,将每块小板子ID分别改为0X0001, 0X0002, 0X0003, 0X0004, 0X0005, 0X0006, 每个泄漏检测上报频率是2Hz,其中三个模块中can芯片是vp230,三个模块中can芯片是TJA1050,(vp230是3.3V供电,TJA1050是5V供电)和一根大概六米长的线缆,挂载这六个can子设备,通过can盒观察总线上的上报情况。
1.当焊接两个120Ω终端电阻时,回路电阻在60Ω,此时总线上个节点均正常;
2.当焊接3个120Ω终端电阻时,回路电阻在40Ω,此时总线上会偶尔有一个或两个节点不上传信息,有可能过段时间会继续上传,或者下电再次上电的情况下,或许能够正常通信;
3.当焊接4、5个120Ω终端电阻时,回路电阻在30Ω和24Ω,同现象2,但问题出现的更频繁;
4.当焊接6个120Ω终端电阻时,回路电阻在20Ω,会有1-3个节点不再上传信息,此时下电再次重新上电,依旧存在部分节点不能正常通信;
5.当焊接7个120Ω终端电阻时(CAN盒上的终端电阻拨下),回路电阻在17Ω,但出现问题的节点会更多,或者彻底失去正常通信功能。
总结
终端电阻在60Ω至120Ω最佳,40Ω(三个120Ω并联)及以下,CAN通信已经收到影响。