CAN基础培训与数据链路层是本文件关注的焦点,文中从多个角度介绍了CAN(Controller Area Network)总线技术,尤其侧重于数据链路层的细节。CAN是一种高性能的串行通信协议,最初由德国汽车公司博世在1980年代初期开发,广泛应用于汽车和工业自动化领域。
### CAN总线标准与OSI参考模型
CAN总线标准可以分为底层标准和高层协议。底层标准化有CAN2.0标准,包括CAN2.0A和CAN2.0B。在CAN2.0A中,29位ID被视为错误,而CAN2.0B区分Passive和Active两种模式,其中CAN2.0B Passive仅识别11位ID数据帧,而CAN2.0B Active则能够识别11位和29位ID数据帧。此外,CAN总线还遵循ISO11898标准系列,其中ISO11898-1至-5部分分别涉及数据链路层、高速介质访问单元、低速容错介质相关接口、时间触发通信以及带有低功耗模式的高速介质访问单元。
### 数据链路层功能
数据链路层承担了多主的基于优先级的总线访问,非破坏性的基于竞争的仲裁机制,远程数据请求功能,以及通信的配置灵活性。此外,它还包括错误检测、报文自动重发以及对临时与永久错误的界定。数据链路层的错误检测功能不仅限于简单的循环冗余校验(CRC),还包括帧检查、确认机制和应答处理。
### 数据链路层通信机制
在通信机制方面,CAN数据链路层利用帧起始、远程发送请求(RTR)、标识符(ID)、扩展数据长度代码(DLC)、应答帧、帧结束以及间歇场界定符等基本构成,以实现可靠的网络通信。缩写中的各个部分,如SOFRTR(Start of Frame Remote Transmission Request)标识符扩展、数据长度代码(DLC)和应答帧结束(ACK)等,均是CAN网络通信中不可或缺的组成部分。
### 报文发送过程
报文发送时,CAN节点会检测总线状态,确保在总线处于空闲状态时发送报文。发送报文过程中,进行“回读”是CAN通信的关键一环,即发送节点会监视自己发送的位,并将其与总线上实际的位进行对比,以保证报文的正确发送。在“线与”机制下,如果总线上多个节点同时发送,高电平(显性位)会覆盖低电平(隐性位),因此ID值较小的报文具有较高的优先级。这种仲裁机制是非破坏性的,即未赢得仲裁的节点会在仲裁结束后进入“只听”状态,并在总线再次空闲时尝试重新发送报文。
### 错误检测与处理
CAN协议在数据链路层提供了强大的错误检测功能,能够检测报文、格式、填充、CRC和位填充错误。所有节点都会监督通信,并将出错的报文视为无效。任何节点在检测到错误后,都会发送一个错误帧,通知其他节点发生错误,从而实现错误的检测和恢复。
### 总结
以上所述内容详细阐述了CAN总线技术在数据链路层的设计和实现,以及其在错误处理、报文发送机制等方面的应用。CAN作为车辆总线标准,在实时控制和分布式控制领域得到了广泛应用,其优势在于高可靠性和灵活性,能够很好地满足实时控制对通信时间性和可靠性的要求。