一, can的简介
CAN协议,全称为Controller Area Network(控制器局域网络),是一种广泛应用的串行通信协议,最初由德国BOSCH公司开发,并已成为国际标准。
低速CAN(ISO11519)通信速率 10~125Kbps,总线长度可达 1000 米。
高速CAN(ISO11898)通信速率 125Kbps~1Mbps,总线长度 ≤40 米。
·定义:CAN协议是一种基于差分信号的异步串行通信协议,采用双绞线作为传输介质,具有高性能、高可靠性和独特的设计特点。
·特点:
多主控制:支持多主方式,即任何一个节点都可以在总线上发送数据,其他节点根据需要进行接收。当两个以上的节点同时开始发送数据时,会根据标识符(ID)决定优先级。
系统柔软性:与总线相连的单元没有类似于“地址”的信息,因此在总线上增加单元时,连接在总线上的其他单元的软硬件及应用层都不需要改变。
通信速度快、距离远:数据传输速率较高,标准速率为125kbps,扩展速率可达1Mbps,且通信距离远,最远可达10KM(速率低于5Kbps)。
错误检测与恢复:具有错误检测、错误通知和错误恢复功能,能够确保数据传输的可靠性。
故障封闭功能:能够判断出错误的类型,并将引起故障的单元从总线上隔离出去。
CAN协议因其高效、可靠的特点,被广泛应用于多个领域:
汽车领域:用于实现车辆中各个控制单元(ECU)之间的通信,如发动机控制、车身控制、传动系统控制等。
工业自动化:用于机器人、物流设备、生产线等各种设备之间的通信与控制。
二,CAN物理层介绍
CAN网络通常由CAN控制器、CAN收发器和双绞线组成。
CAN控制器:负责处理数据的收发和协议转换。
CAN收发器:负责将控制器的数字信号转换为差分信号进行传输,同时也负责将总线上的差分信号转换为数字信号供控制器处理。
终端电阻
在高速CAN总线的两端分别连接一个电阻,称为终端电阻。终端电阻的主要作用是匹配总线阻抗,提高信号质量,减少回波反射。一般来说,终端电阻的阻值为120Ω。
2.1 总线拓扑图
高速CAN闭环总线
低速CAN开环总线
2.2 电平标准
CAN使用差分信号进行数据传输,根据CAN_H和CAN_L上的电位差来判断总线电平。
显性电平表示逻辑 0 ,通常 CAN_H 和 CAN_L 有 2V 的压差;
隐性电平表示逻辑 1 ,通常 CAN_H 和 CAN_L 有 0V 的压差。
显性电平在通信中具有优先权,能够覆盖隐性电平,确保数据的正确传输。隐性电平则作为总线的空闲或监听状态存在,等待有节点发送数据
2.3 CAN的控制器和收发器