CAN总线协议详解与应用

需积分: 47 2 下载量 190 浏览量 更新于2024-07-27 1 收藏 4.71MB PDF 举报
"CAN总线协议讲解" CAN总线(Controller Area Network)是一种广泛应用的串行通信协议,由德国博世(BOSCH)公司在1986年为汽车行业开发,旨在满足车辆电子控制系统间的高效、可靠通信需求。随着ISO11898和ISO11519等国际标准的制定,CAN已经成为汽车网络的标准协议,并扩展到工业自动化、船舶、医疗设备和工业设备等多个领域。 CAN总线协议分为两个主要版本:CAN2.0A和CAN2.0B。这两个版本都是BOSCH最初提出的,但后来的国际标准是ISO11898,该标准详细定义了CAN的物理层、数据链路层和传输层,是所有其他CAN规范和厂商规范的基础。 CAN协议的特征包括: 1. **错误检测与恢复**:CAN协议具有强大的错误检测能力,包括位错误、帧错误和CRC错误等,能够及时发现并处理通信中的问题。 2. **错误状态的种类**:协议中定义了不同的错误状态,如位错误、位填充错误、应答错误等,帮助节点识别和报告通信中的异常。 3. **错误计数值**:每个CAN节点都有一个错误计数器,用于记录错误发生的次数,当超过一定阈值时,节点会进入不同的错误状态。 4. **优先级决定**:CAN采用非屏蔽双优先级(Non-Maskable Single Priority, NMS)的仲裁机制,根据ID来决定消息优先级,ID值越小,优先级越高。 5. **位填充**:为了防止连续相同的位导致误码,CAN协议引入位填充规则,每连续5个相同的位后自动插入一个反相位。 6. **位时序**:CAN协议的位时序包含同步段、传播段、相位缓冲段1和相位缓冲段2,这些参数可以动态调整,以适应不同线缆长度和节点速度差异。 CAN协议中的帧类型包括: 1. **数据帧**:用于传输数据,包含标识符(ID)、数据长度代码(DLC)以及最多8字节的数据。 2. **遥控帧**:没有数据部分,仅用于请求数据帧的发送。 3. **错误帧**:用于报告和指示通信中的错误。 4. **过载帧**:在高负载情况下,节点发送过载帧来延长帧间隔,允许其他节点完成内部处理。 5. **帧间隔**:定义了帧之间的最小时间间隔,确保节点间通信的同步。 CAN协议的标准化包括ISO11898和ISO11519-2,两者主要区别在于物理层的定义,ISO11898适用于高速CAN(最高可达1Mbps),而ISO11519-2则针对低速CAN应用。 CAN总线协议以其高效、可靠的特性,成为了多领域通信的首选方案。通过理解CAN协议的细节,开发者能够更好地设计和实现基于CAN的系统,确保数据传输的准确性和实时性。