非破坏性仲裁机制原理

目录

一、CAN总线基础

1. 差分信号

2. 差分信号传输举例

3. CAN总线物理层

2. 电平优先级

二、CAN总线仲裁机制

1. 仲裁原理

2. 非破坏性仲裁

3. 仲裁过程举例

三、总结


CAN总线作为一种串行通信总线标准,广泛应用于汽车电子和工业自动化领域。其独特的竞争与仲裁机制,保证了总线的高效利用和实时性。本文将深入分析CAN总线的竞争与仲裁原理,帮助读者更好地理解这一重要特性。

一、CAN总线基础

1. 差分信号

差分信号传输是一种在电子系统中传输信号的方法,主要用于减少共模噪声和电磁干扰对信号完整性的影响。其原理是利用两条相反极性的信号线传输相同的信息,接收端通过比较这两个信号的差值来提取原始信号。

原理:
1. 发送端将原始信号转换为两个相反极性的信号,称为差分信号对。
2. 这两个信号通过一对平衡的传输线发送,例如双绞线。
3. 由于这两个信号的极性相反,它们产生的电磁场也相反,从而在传输过程中相互抵消。这样可以减少信号对周围环境的电磁干扰。
4. Common-mode noise (共模噪声)是指同时出现在两条信号线上的噪声。由于差分信号的极性相反,共模噪声在两条线上的影响相同,因此可以在接收端被抵消掉。
5. 接收端通过比较这两个差分信号的电压差来恢复原始信号。这种比较操作可以消除共模噪声的影响,提高信号的完整性。

举例:
1. RS-485通信标准:RS-485使用差分信号传输,通过两条线(A和B)发送相反极性的信号。这种方式可以在嘈杂的工业环境中实现可靠的数据通信。

2. 以太网:以太网使用差分信号传输数据。例如,100Base-TX以太网使用两对双绞线,每对线传输一个差分信号。这样可以在较长距离上实现高速、可靠的数据传输。

3. HDMI (High-Definition Multimedia Interface):HDMI使用TMDS (Transition-Minimized Differential Signaling)技术传输音频和视频数据。每个TMDS通道由一对差分信号线组成,用于减少电磁干扰和确保高质量的信号传输。

4. USB (Universal Serial Bus):USB使用差分信号传输数据。USB 2.0使用一对差分信号线(D+和D-)来传输数据,而USB 3.0则使用两对差分信号线来提高传输速度。

差分信号传输在许多高速、高可靠性的数据通信和多媒体接口中得到广泛应用,其优越的抗干扰性能和低噪声特性使其成为这些领域的首选传输方式。

2. 差分信号传输举例

假设我们要传输一个正弦波信号,其电压范围在-1V到1V之间。

发送端将原始信号转换为差分信号对:

时间原始信号信号A信号B
t00V0V0V
t10.5V0.5V-0.5V
t21V1V-1V
t30.5V0.5V-0.5V
t40V0V0V
t5-0.5V-0.5V0.5V
t6-1V-1V1V
t7-0.5V-0.5V0.5V
t80V0V0V
  • 信号A:原始信号

  • 信号B:原始信号的相反波形

信号A和信号B通过一对平衡的传输线发送,例如双绞线。

在传输过程中,信号A和信号B产生的电磁场相反,从而相互抵消,减少了对周围环境的电磁干扰。

假设在传输过程中,出现了共模噪声,噪声电压为0.2V。由于共模噪声同时出现在信号A和信号B上,因此传输后的信号如下:

时间信号A(含噪声)信号B(含噪声)
t00.2V0.2V
t10.7V-0.3V
t21.2V-0.8V
t30.7V-0.3V
t40.2V0.2V
t5-0.3V0.7V
t6-0.8V1.2V
t7-0.3V0.7V
t80.2V0.2V

接收端通过计算信号A和信号B的差值来恢复原始信号,并消除共模噪声的影响:

时间信号A(含噪声)信号B(含噪声)差值(A-B)/2原始信号
t00.2V0.2V0V0V
t10.7V-0.3V0.5V0.5V
t21.2V-0.8V1V1V
t30.7V-0.3V0.5V0.5V
t40.2V0.2V0V0V
t5-0.3V0.7V-0.5V-0.5V
t6-0.8V1.2V-1V-1V
t7-0.3V0.7V-0.5V-0.5V
t80.2V0.2V0V0V

通过这个例子,我们可以看到差分信号传输如何有效地消除共模噪声并恢复原始信号。这种技术广泛应用于各种高速、高可靠性的数据传输场合。

3. CAN总线物理层

CAN总线采用差分信号传输,物理层由两根双绞线CANH和CANL组成。当总线空闲时,CANH和CANL之间的电位差为0,表示隐性电平(逻辑1);当有节点发送数据时,CANH和CANL之间形成电位差,表示显性电平(逻辑0)。

CANH和CANL是CAN (Controller Area Network)总线物理层的两个信号线的名称。CAN总线是一种广泛用于汽车和工业控制系统的串行通信协议,它使用差分信号传输以提高抗干扰能力和可靠性。

  1. CANH (CAN High):CANH是CAN总线的高电平信号线。当总线空闲时,CANH的电压为2.5V左右。当传输主导位(逻辑0)时,CANH的电压会上升到3.5V左右。

  2. CANL (CAN Low):CANL是CAN总线的低电平信号线。当总线空闲时,CANL的电压也为2.5V左右。当传输主导位(逻辑0)时,CANL的电压会下降到1.5V左右。

CAN总线使用差分信号传输,意味着逻辑状态是由CANH和CANL之间的电压差决定的,而不是它们相对于地的绝对电压。这种差分传输方式可以有效抑制共模噪声,提高系统的抗干扰能力。

  • 当CANH和CANL之间的电压差大于0.9V时,表示总线处于主导状态(逻辑0)。
  • 当CANH和CANL之间的电压差小于0.5V时,表示总线处于隐性状态(逻辑1)。

通过使用CANH和CANL这两根双绞线,CAN总线可以在嘈杂的环境中实现可靠的数据传输。这种物理层设计,结合CAN协议的仲裁机制和错误检测能力,使得CAN总线成为汽车和工业控制领域的理想选择。

2. 电平优先级

CAN总线上的电平遵循"线与"原则:只要有一个节点发送显性电平,总线就会呈现显性状态。换言之,显性电平的优先级高于隐性电平。这一特性是实现总线仲裁的基础。

1. 显性电平的优先级:在CAN总线上,显性电平(主导状态,逻辑0)的优先级高于隐性电平(隐性状态,逻辑1)。这意味着,当多个节点同时尝试访问总线时,发送显性电平的节点将获得总线的控制权。

2. 非破坏性仲裁:CAN总线的仲裁过程是非破坏性的。当多个节点同时开始传输数据时,它们会同时发送各自消息的ID位。由于显性电平的优先级高,发送显性电平(逻辑0)的节点会覆盖其他节点发送的隐性电平(逻辑1)。这个过程称为"线与"运算。

3. 确定性仲裁:每个CAN消息都有一个唯一的标识符(ID)。在仲裁过程中,ID值较低的消息具有较高的优先级。当多个节点同时发送消息时,它们会逐位比较各自消息的ID。一旦某个节点发送的ID位为隐性电平(逻辑1),而总线上检测到显性电平(逻辑0),该节点就会立即停止传输,让优先级更高的消息先传输。这样,优先级最高的消息就能够获得总线的控制权,实现确定性的仲裁。

4. 数据一致性:由于显性电平的优先级高于隐性电平,且仲裁过程是非破坏性的,因此能够保证数据的一致性。当多个节点同时发送数据时,优先级最高的消息会被成功传输,而其他节点会在仲裁过程中停止传输,等待下一次的总线空闲。

显性电平(主导状态,逻辑0)在CAN总线上具有更高的优先级,这是由CAN总线的物理层设计和仲裁机制决定的。这种设计有以下几个重要原因:

1. 电气特性:在CAN总线上,显性电平对应于CANH和CANL之间的较大电压差(大于0.9V),而隐性电平对应于较小的电压差(小于0.5V)。从电气角度来看,产生显性电平比产生隐性电平需要更多的能量。因此,当多个节点同时发送数据时,发送显性电平的节点可以轻松地覆盖其他节点发送的隐性电平,从而获得总线的控制权。

2. 仲裁机制:CAN总线采用了基于消息ID的仲裁机制。在仲裁过程中,节点逐位比较各自消息的ID。具有较低ID值的消息具有较高的优先级。由于ID位是从最高有效位(MSB)开始传输的,因此当多个节点同时发送数据时,第一个发送显性电平(逻辑0)的节点将获得总线的控制权。这种仲裁机制要求显性电平具有更高的优先级,以确保优先级较高的消息能够优先传输。

3. 错误检测:CAN总线使用显性电平来表示错误帧和重传请求。当节点检测到错误时,它会立即发送一个错误帧,该帧由6个连续的显性电平组成。这样,错误帧可以覆盖其他节点正在传输的消息,迅速通知所有节点出现了错误,并请求重传。如果隐性电平具有更高的优先级,错误帧将无法有效地中断正在进行的传输,从而影响错误检测和恢复的及时性。

4. 同步机制:CAN总线使用显性电平来实现节点之间的同步。当总线空闲时,所有节点都会发送隐性电平。一旦有节点开始发送数据,它会首先发送一个显性电平作为起始位,这个起始位可以同步其他节点的时钟,确保所有节点以相同的速率接收数据。如果隐性电平具有更高的优先级,这种同步机制将无法可靠地工作。

综上所述,显性电平在CAN总线上具有更高的优先级,这是由CAN总线的电气特性、仲裁机制、错误检测和同步机制等因素共同决定的。这种设计确保了CAN总线能够在多个节点共享总线的情况下,实现可靠、确定性的数据传输,并有效地处理错误和冲突。

在CAN总线的仲裁过程中,当多个节点同时尝试发送数据时,优先级较低的节点会被优先级较高的节点覆盖。这些被覆盖的节点需要记录下被覆盖的位置,以便在总线空闲时重新发送数据。CAN控制器通过以下方式记录被覆盖的断点:

  1. 发送和接收比较:当节点开始发送数据时,它会同时监听总线上的实际电平。节点发送数据时,会将自己发送的每一位数据与总线上实际的电平进行比较。如果节点发送隐性电平(逻辑1),但检测到总线上为显性电平(逻辑0),说明该节点的数据被高优先级节点覆盖了。

  2. 记录断点:一旦节点检测到自己发送的数据被覆盖,它会立即停止发送数据,并记录下被覆盖的位置。这个位置通常对应于节点正在发送的消息的ID段或控制段的特定位。CAN控制器中有一个专门的寄存器或标志位,用于记录这个断点位置。

  3. 重新发送:当总线再次空闲时,被覆盖的节点会从记录的断点位置开始重新发送数据。这确保了被覆盖的节点不会完全丢失发送机会,而是在总线空闲时继续参与仲裁过程,直到成功发送数据或再次被高优先级节点覆盖。

  4. 错误处理:如果节点在发送数据时检测到错误(如位错误、填充错误、CRC错误等),它会立即发送错误帧,请求重传。在这种情况下,节点也会记录下错误发生的位置,以便在重传时从正确的位置开始发送数据。

通过发送和接收比较,记录断点,重新发送以及错误处理等机制,CAN控制器能够有效地管理数据的发送和接收,确保数据的完整性和可靠性,同时也能够公平地处理多个节点之间的总线仲裁。这些机制的实现通常由CAN控制器的硬件自动完成,无需上层软件的干预,从而简化了CAN节点的设计和开发。

二、CAN总线仲裁机制

1. 仲裁原理

当多个节点同时发送数据时,CAN总线通过仲裁机制决定哪个节点获得总线控制权。仲裁过程基于数据帧的ID(标识符)域,ID值越小,优先级越高。节点在发送数据时,会先发送ID域,并实时监测总线状态。如果检测到总线电平与自己发送的电平不一致(自己发送隐性电平,而总线为显性电平),就意味着有优先级更高的节点在发送数据,此时该节点会停止发送并进入接收状态。

2. 非破坏性仲裁

CAN总线的仲裁过程是非破坏性的,即仲裁失败的节点会自动让出总线控制权,不会影响优先级更高的节点继续发送数据。这种机制避免了数据冲突和总线资源浪费,保证了通信的实时性和可靠性。

3. 仲裁过程举例

上面的分析过程是以经典CAN帧进行分析,帧ID是11位;

  • 三个节点依次从帧ID的高位开始往总线上发送,边发送边比较;
  • 在发送帧ID的第五位时,节点B发送了1(隐形电平),但是从总线上读取到的是显性电平,说明有其他节点往总线输出了隐形电平,则节点B退出本次总线仲裁;
  • 在发送帧ID的第三位时,节点C发送了1(隐形电平),但是从总线上读取到的是显性电平,说明有其他节点往总线输出了隐形电平,则节点C退出本次总线仲裁;
  • 最终节点A得到了本次CAN总线的使用权,节点A可以继续发生帧的剩下部分,B和C节点都进入监听状态。

三、总结

CAN总线的竞争和仲裁机制巧妙利用了显性电平的"线与"特性,通过ID域的逐位比较,快速、高效地完成总线控制权的分配。这种非破坏性仲裁方式保证了总线利用率和实时性,是CAN总线可靠运行的关键。深入理解CAN总线的竞争与仲裁原理,有助于我们设计出更加优化、稳定的CAN通信系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EG LIAN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值