CAN(Controller Area Network)总线协议的数据链路层是CAN通信中至关重要的一部分,它负责在物理层之上实现数据的可靠传输。数据链路层不仅管理着帧的同步、差错控制、流量控制等关键功能,还通过仲裁机制确保多个节点之间的高效通信。
一、CAN总线协议概述
CAN协议最早由德国Bosch公司于1983年提出,旨在解决汽车电子系统中的通信问题。随着技术的发展,CAN协议逐渐被广泛应用于工业控制、医疗设备、智能家居等领域。CAN协议采用多主控制、广播通信、非破坏性仲裁和错误检测与处理等机制,确保了通信的实时性、可靠性和灵活性。
二、数据链路层的组成
CAN总线协议的数据链路层主要由以下几个部分组成:
1. MAC子层(媒体访问控制子层)
MAC子层是CAN协议的关键组成部分,它主要负责将物理层接收到的信号组织成具有实际意义的信息,并管理错误控制等传输流程。MAC子层的主要功能包括:
- 消息的帧化处理 :将待传输的数据封装成符合CAN协议规范的帧格式。
- 仲裁 :通过非破坏性仲裁机制解决多个节点同时发送数据时的冲突。
- 应答 :接收节点通过应答机制确认数据的正确接收。
- 错误的检测和报告 :检测通信过程中的错误,并通过错误帧向其他节点报告。
2. LLC子层(逻辑链路控制子层)
虽然CAN协议标准中并没有明确划分LLC子层,但通常我们可以将帧过滤、报文重发等逻辑控制功能归为LLC子层的范畴。LLC子层主要负责:
- 报文过滤 :通过过滤器对接收的报文进行过滤,只保留感兴趣的报文。
- 报文重发 :在检测到通信错误或未收到应答时,自动重发报文。
三、数据链路层的功能
1. 帧同步
帧同步是数据链路层的基本功能之一,用于确保发送和接收节点能够正确识别信息帧的开始和结束。在CAN信息帧中,帧起始位(SOF)用于标识信息帧的开始,而帧结束位(EOF)则用于标识信息帧的结束。发送节点通过发送帧起始位来启动一个帧的传输,接收节点则通过检测帧起始位来实现帧同步。
2. 差错控制
差错控制是数据链路层的另一个重要功能,它包括错误检测和错误纠正。CAN协议采用循环冗余校验(CRC)进行错误检测,以确保数据的完整性。发送节点在发送数据前会生成CRC校验码,并将其附加到数据场之后。接收节点在接收到数据后,会重新计算CRC校验码,并与接收到的CRC校验码进行比较,以检测数据是否出现错误。如果检测到错误,接收节点会发送错误帧来通知其他节点。
3. 流量控制
流量控制用于防止发送节点过快地发送数据,导致接收节点无法处理。在CAN协议中,流量控制主要通过仲裁机制和应答机制来实现。仲裁机制确保了在多个节点同时发送数据时,具有较高优先级的节点能够优先发送数据。而应答机制则要求接收节点在接收到数据后发送应答信号,以确认数据的正确接收。如果发送节点未收到应答信号,则会认为通信失败并可能重发报文。
4. 访问控制
访问控制是数据链路层的另一个关键功能,它用于协调多个节点之间的通信。在CAN协议中,访问控制主要通过非破坏性仲裁机制实现。当两个或多个节点同时发送数据时,它们会竞争总线的使用权。仲裁机制通过比较仲裁场的值来确定发送数据的优先级。具有较高优先级的节点可以继续发送数据,而具有较低优先级的节点则需要等待直到高优先级节点完成数据发送。
四、CAN信息帧的组成部分
CAN信息帧是CAN协议中最基本的数据传输单元,其组成部分包括:
- 帧起始位(SOF) :标识信息帧的开始。
- 仲裁场 :用于确定发送数据的优先级。仲裁场的长度可以是11位(标准帧)或29位(扩展帧),仲裁场的值越小,优先级越高。
- 控制场 :包括远程传输请求位(RTR)和标识符扩展位(IDE)。RTR位用于标识数据帧是远程帧还是数据帧,IDE位用于标识帧是标准帧还是扩展帧。
- 数据场 :用于存储实际传输的数据。标准帧的数据场长度为0-8字节,扩展帧的数据场长度为0-64字节。
- 校验场 :包括循环冗余校验(CRC)和CRC界定符。CRC用于检测数据在传输过程中是否出现错误,CRC界定符用于标识CRC校验的结束。
- 应答场 :包括应答插槽和应答界定符。应答插槽用于接收节点发送应答信号,应答界定符用于标识应答场的结束。
- 帧结束位(EOF) :标识信息帧的结束。
五、错误处理机制
CAN协议定义了多种错误类型,包括CRC错误、格式错误、应答错误、位发送错误和位填充错误等。当发生这些错误时,发送节点或接收节点会发送错误帧来通知其他节点。为了防止某些节点自身出错而一直发送错误帧干扰其他节点通信,CAN协议还规定了节点的三种状态及行为:主动错误状态、被动错误状态和Bus Off状态。这些状态根据接收错误计数器(REC)和发送错误计数器(TEC)的值进行转换。
六、总结
CAN总线协议的数据链路层是实现CAN通信的关键部分,它负责在物理层之上实现数据的可靠传输。通过帧同步、差错控制、流量控制和访问控制等功能,CAN协议确保了多个节点之间的高效、可靠通信。同时,CAN协议还提供了完善的错误处理机制来应对通信过程中可能出现的各种问题。这些功能和机制共同构成了CAN总线协议强大的通信能力,使其在众多领域得到了广泛应用。
-
CAN总线
+关注
关注
145文章
1950浏览量
130747 -
数据链路层
+关注
关注
0文章
55浏览量
11987 -
总线协议
+关注
关注
0文章
115浏览量
14852
发布评论请先 登录
相关推荐
评论