大神写的CAN总线入门总结,收藏!

💡 原文中文,约9500字,阅读约需23分钟。
📝

内容提要

CAN总线是一种串行通信总线,具有出色的容错能力和强大的检错和处理机制。CAN通信协议分为标准CAN和扩展CAN,标准CAN具有11位标识符,扩展CAN具有29位标识符。CAN总线使用差分信号传输,需要一对信号线,推荐使用双绞线。CAN总线的节点数量由收发器可以驱动的最小负载阻抗决定。CAN总线需要考虑共模电压范围、总线短路保护和热关断保护、电流隔离等因素。CAN接口电路与RS485接口电路有相似之处,但在信号延迟、电容敏感等方面有所不同。

🔎

延伸解读

终端匹配电阻:不能省略的关键

文章明确指出,CAN总线从显性回到隐性时依赖终端电阻放电,否则导线分布电容会导致缓慢放电和位宽错误。因此,所谓“近距离、低波特率可不加终端电阻”的做法是错误的。与RS485不同,RS485收发器内置失效保护电路,在近距离低波特率下允许不加匹配电阻,但CAN必须始终保证终端匹配。

通讯距离的权衡:波特率、电阻与截面积

文章通过实例说明,通讯距离受波特率、终端匹配电阻和电缆截面积共同影响。波特率越高,距离越短;增大终端电阻(如150~300欧姆)可延长距离。例如1.5mm²双绞线在5kbps下,用120欧姆电阻可传5km,用300欧姆可传7km。远距离时电缆直流电阻分压导致信号衰减,末端差分电压建议不低于1.2V。

信号延迟与节点间距:高速下的隐形限制

高波特率下,信号延迟成为通讯距离的主要制约。隔离光耦、电缆和ESD器件都会引入延迟,若重同步无法弥补,将导致采样错误。文章给出1Mbps时最大延迟标准,并指出这是CAN速率限制在1Mbps的原因之一。此外,负载集中会引起阻抗不匹配和反射,节点间需保持最小安全距离,该距离与设备集总负载电容和电缆分布电容有关。

接口设计:不能照抄RS485

虽然CAN与RS485在差分传输、拓扑和终端匹配等方面相似,但CAN对信号延迟和电容更敏感。文章强调,CAN隔离必须使用高速光耦或磁耦合器件,TLP521因延迟过大不可用;同时需选用CAN专用共模电感、ESD器件,并根据波特率和距离决定是否加滤波电容。直接套用RS485设计可能导致通讯不稳定。

❓

Q&A

CAN总线的基本特点是什么?

CAN总线是一种串行通信总线,最高速率可达1Mbps,具有出色的容错能力和强大的检错和处理机制。它采用短数据包(每帧最多8字节用户数据)提高稳定性,并支持多主系统组建。

标准CAN和扩展CAN有什么区别?

标准CAN具有11位标识符,提供2048个不同报文标识符;扩展CAN具有29位标识符,提供537百万个不同报文标识符。扩展CAN消息增加了SRR、IDE和r1位,且当标准帧与扩展帧冲突且基本标识符相同时,标准帧优先级更高。

CAN总线如何解决多个节点同时发送数据的冲突?

CAN总线使用非破坏式逐位仲裁机制。各发送节点从仲裁域(标识符和RTR域)的第1位开始仲裁,连续输出显性电平(0)最多的节点可以继续发送。标识符数值越低的报文优先级越高,标识符为0的报文具有最高优先级。

CAN总线有哪些错误检测机制?

CAN协议制定了5种错误检测方法:三种位于报文层(CRC校验、ACK应答、格式检查),两种位于位流层(位监视和位填充规则)。如果数据帧出错,接收节点会发送错误帧,强制发送节点重传。

CAN总线的终端匹配电阻有什么作用?

终端匹配电阻用于消除信号反射,其大小等于传输电缆特性阻抗(通常120欧姆)。从显性回到隐性时,需要终端电阻来放电,否则会因导线分布电容导致位宽错误。即使近距离、低波特率,也不能省略终端电阻。

CAN总线的通讯距离受哪些因素影响?

通讯距离受电缆截面积、波特率、终端匹配电阻、信号延迟和节点容抗等因素影响。波特率越高,通讯距离越短;增大终端电阻(如150~300欧姆)可增加总线长度;信号延迟和节点容抗也会限制高速通讯距离。

为什么CAN接口电路不能照抄RS485接口电路?

虽然CAN和RS485都采用差分信号传输,但CAN对信号延迟和电容更敏感。CAN信号隔离必须使用高速光耦或磁耦合器件,不能使用延迟大的光耦(如TLP521);还需使用CAN专用共模电感、专业ESD器件,并根据波特率和距离决定滤波电容。

🏷️

标签

➡️

继续阅读