can总线详解

CAN总线(Controller Area Network)是一种重要的串行通信协议,广泛应用于汽车电子系统中,以及工业自动化和医疗设备等领域。它是由德国的罗伯特·博世公司在1980年代初期开发的,旨在使车辆上的电子设备能够通过单一的多主线路相互通信,而无需中央计算机。CAN总线的设计允许设备间进行实时通信,同时提高系统的可靠性、灵活性和效率。

CAN总线的特点
多主控制:CAN网络允许多个控制器在同一总线上共存并进行通信,没有主设备的概念。任何节点都可以主动发送数据。

优先级控制:当两个或更多节点同时尝试发送数据时,CAN总线通过非破坏性仲裁的方式决定优先级,确保具有更高优先级的消息能够被优先传输。

差错检测:CAN协议内置了多种错误检测机制,包括帧校验、循环冗余检查(CRC)、位填充等,能够提高数据传输的可靠性。

容错能力:CAN总线具有一定的容错能力,即使在某些节点发生故障的情况下也能保证网络的正常通信。

数据传输速率:CAN总线的数据传输速率根据总线长度的不同而变化,一般在125Kbps到1Mbps之间。

CAN总线的结构
CAN通信协议定义了数据链路层和物理层的标准。在系统中,设备通过CAN控制器和CAN收发器连接到两线制的总线上。所有的通信都在这两条线上进行,分别称为CAN高线和CAN低线,它们一起构成了差分信号系统,有助于减少噪声干扰。
CAN总线协议是一种高度可靠的、用于实现设备间通信的串行总线系统。它特别适用于高速率数据交换的环境。
框架结构
在这里插入图片描述

CAN协议定义了四种不同类型的帧:

1.数据帧:用于从发送节点到接收节点传输数据。
通常数据传输是在数据源节点(例如传感器)发出数据帧的情况下自主执行的。但是,目标节点也可以通过发送远程帧来从信息源请求数据。
数据帧和远程帧之间有两个区别。首先,RTR位在数据帧中作为显性位传输,其次在远程帧中没有数据段。DLC字段表示所请求的消息的数据长度,而不是发送的数据长度。
也就是说:
RTR = 0;数据帧中为显性
RTR = 1;远程帧中位隐性
在数据帧和具有相同标识符的远程帧同时发送的情况下,由于数据帧标识符之后的RTR位是显性,它将赢得仲裁。

2.远程帧:用于请求数据的传输。
通常数据传输是在数据源节点(例如传感器)发出数据帧的情况下自主执行的。但是,目标节点也可以通过发送远程帧来从信息源请求数据。
数据帧和远程帧之间有两个区别。首先,RTR位在数据帧中作为显性位传输,其次在远程帧中没有数据段。DLC字段表示所请求的消息的数据长度,而不是发送的数据长度。
也就是说:

RTR = 0;数据帧中为显性
RTR = 1;远程帧中位隐性
在数据帧和具有相同标识符的远程帧同时发送的情况下,由于数据帧标识符之后的RTR位是显性,它将赢得仲裁。

3.错误帧:当检测到错误时,任何节点都可以发送错误帧。
错误帧由两个不同的字段组成:

第一段由不同站点提供的错误标志(6-12个显性位/隐性位)的叠加给出。
接下来的第二段是错误帧定界符(ERROR DELIMITER,8个隐性位)。
错误标志也有两种:

主动错误标志
六个显性位 - 由网络上错误状态为“主动错误”的出错的节点传送。
被动错误标志
六个隐性位 - 由网络上错误状态为“被动错误”的出错的节点传送。
CAN有两种错误计数器:

1.传输错误计数器(Transmit error counter,简称TEC)
2.接受错误计数器(Receive error counter,简称REC)

当传输错误计数器TEC或接受错误计数器REC大于127且小于255时,将在总线上传输被动错误帧。
当传输错误计数器TEC或接受错误计数器REC小于128时,将在总线上传输主动错误帧。
当传输错误计数器TEC或接受错误计数器REC大于255时,节点进入主线离线状态,不会传输帧。

4.过载帧:用于提供额外的间隔时间在数据帧或远程帧之后。
过载帧包含两个位字段:过载标志(Overload Flag)和过载定界符(Overload Delimiter)。有两种过载条件可导致过载标志的传输:

接收器的内部条件,要求延迟下一个数据帧或远程帧。
中断检测到一个显性位。
由于情况1引起的过载帧只允许在预期中断的第一位时间开始,而由情况2引起的过载帧在检测到显性位后一位开始。过载标志由六个显性位组成,其整体形式与主动错误标志的形式相对应。过载标志的形式破坏了中断区的固定形式。因此,所有其他站点也会检测到过载情况,并在它们自己的部分开始传输过载标志。过载定界符由8个隐性位组成,与错误分隔符的形式相同。

每个帧都由不同的字段组成,包括起始位、帧ID(标识符,用于定义消息的优先级)、控制字段、数据字段、CRC校验、确认位和帧结束位等。

消息传输机制
CAN协议采用基于消息的通信机制,而不是基于地址的通信。每个消息都有一个唯一的标识符,标识符越小,消息的优先级越高。这意味着在消息传输过程中,具有最高优先级的消息能够抢占总线,确保紧急消息能够优先被传输。

差错处理机制
CAN协议提供了一套复杂的差错检测和处理机制,包括:
位监控:每个发送节点都会监控总线上的位级别状态,以确保传输的准确性。
帧校验:接收节点通过帧校验来确认接收到的帧是否完整。
循环冗余检查(CRC):通过CRC字段提供了一种强大的错误检测能力。
错误限定:节点在检测到错误后,会通过发送错误帧来通知其他节点。如果一个节点频繁地检测到错误,它将被限定为“被动状态”,减少对网络的干扰。

物理层标准
虽然CAN协议主要定义了数据链路层的操作,但物理层标准也是非常重要的,因为它涉及到电气特性和物理连接方法。常见的物理层标准包括:

高速CAN (ISO 11898-2):适用于高速应用,最高可达1Mbps。
低速/容错CAN (ISO 11898-3):适用于较低速率的应用,提供了更高的错误容忍能力。

结论
CAN总线协议通过其独特的消息传输机制、高效的差错处理能力和强大的物理层规范,在自动化控制系统、汽车工业和许多其他领域得到了广泛的应用。它能够确保在复杂和高噪声的环境中实现可靠的数据通信。随着技术的不断进步,CAN协议持续被优化和更新,以满足不断增长的数据通信需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值