CAN总线的仲裁【转】

转载:http://www.eeworld.com.cn/qrs/2011/0712/article_5834.html

CAN总线采用的是一种叫做“载波监测,多主掌控/冲突避免”(CSMA/CA)的通信模式。这种总线仲裁方式允许总线上的任何一个设各都有机会取得总线的控制权并向外发送数据。如果在同一时刻有2个或2个以上的设各要求发送数据,就会产生总线冲突,CAN总线能够实时地检测这些冲突并对其进行仲裁,从而使具有高优先级的数据不受任何损坏地传输。

当总线处于空闲状态时呈隐性电平,此时任何节点都可以向总线发送显性电平作为帧的开始。如果2个或2个以上同时发送就会产生竞争。CAN总线解决竞争的方法同以太网的CSMA/CD(Carrier Sense Multiple Access with Collislon Detection)方法基本相似,如图1所示。此外,CAN总线做了改进并采用CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)访问总线,按位对标识符进行仲裁。各节点在向总线发送电平的同时,也对总线上的电平读取,并与自身发送的电平进行比较,如果电平相同继续发送下一位,不同则停止发送退出总线竞争。剩余的节点继续上述过程,直到总线上只剩下1个节点发送的电平,总线竞争结束,优先级高的节点获得总线的控制权。

图1 Ethernet采用的CSMA/ CD总线访问过程

CAN总线以报文为单位进行数据传输,报文的优先级结合在44位标识符中(扩展帧的标识符29位),具有最小二进制数的标识符的节点具有最高的优先级。这种优先级一旦在系统设计时确定就不能随意地更改,总线读取产生的冲突主要靠这些位仲裁解决。之所以CAN总线不采用以太网使用的延时避免冲突,主要是为了保证具有更高优先级的节点能够完整地实时传输,而且CSMA/CA可以有效地避免冲突。

如图2所示,节点A和节点B的标识符的第lO、9、8位电平相同,因此两个节点侦听到的信息和它们发出的信息相同。第7位节点B发出一个“1”,但从节点上接收到的消息却是“0”,说明有更高优先级的节点占用总线发送消息。节点B会退出发送处于单纯监听方式而不发送数据;节点A成功发送仲裁位从而获得总线的控制权,继而发送全部消息。总线中的信号持续跟踪最后获得总线控制权发出的报文,本例中节点A的报文将被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪个节点被传送前,报文的起始部分已经在网络中传输了,因此具有高优先级的节点的数据传输没有任何延时。在获得总线控制权的节点发送数据过程中,其他节点成为报文的接收节点,并且不会在总线再次空闲之前发送报文(空闲检测应该就是规定总线多长时间为隐性电平,所以最极端状况是两个节点同时发送报文)

图2 CAN总线节点访问总线过程

图3为CAN总线上节点的电平逻辑,总线上的节点电平对于总线电平而言是相与的关系,只有当3个节点的电压都等于1(隐性电平),总线才会保持在ycc(隐性电平)状态。只要有1个节点切换到0状态(显性电平),总线就会被强制在显性状态(0)。这种避免总线冲突的仲裁方式能够使具有高优先级的消息没有延时地占用总线传输。

图3 CAN总线上节点的电平逻辑

时间: 2024-10-29 03:29:36

CAN总线的仲裁【转】的相关文章

《计算机组成原理》-读书笔记(六)总线系统

数字计算机室由若干系统部件构成的,这些系统功能部件在一起工作才能形成一个完整的计算机系统.   总线:构成计算机系统的互联机构,是多个系统功能部件之间进行数据传送的公共通路.       借助于总线连接,计算机在各系统功能部件之间实现地址.数据和控制信息的交换,并在争用资源的基础上进行工作.   总线分类: 内部总线:CPU内部连接各寄存器及运算器部件之间的总线 系统总线:外部总线.CPU和计算机系统中其他高速功能部件相互连接的总线 I/O总线:中低速I/O设备相互连接的总线   总线标准:PC

CAN总线学习笔记

1.总线状态 总线有"显性"和"隐性"两个状态,"显性"对应逻辑"0","隐性"对应逻辑"1"."显性"状态和"隐性"状态与为"显性"状态,所以两个节点同时分别发送"0"和"1"时,总线上呈现"0". 2.优先级  在CAN总线上,若同一个时刻,既有节点向总线上发送隐形

I2总线

I2C简介 飞利浦(PHILIPS)公司开发的两线式串行总线 每个器件都有一个唯一的地址识别 1.只要求两条总线线路:一条串行数据线SDA,一条串行时钟线SCL 2.每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/ 启动信号和停止信号从机关系软件设定地址,主机可以作为主机发送器或主机接收器 SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件. SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件. 在传输数据的时候,SDA线必须在时钟

逻辑地址 虚拟地址 物理地址 总线地址的区别

1 逻辑地址 逻辑地址是最为模糊的概念. <understanding the linux kernel>上的解释是与虚拟地址相关,基于硬件MMU与软件内存管理的一个概念,具体可以看UTLK的第二章内存寻址,有很详细的解释. 但是工作中之前用到的MIPS架构的处理器的解释却有出入,在<MIPS体系架构透视>一书中,逻辑地址是跟MMU无关的,MIPS地址空间划分中,Kseg0 Kseg1地址空间与真实的物理地址存在一个偏移量,也就是存在线性关系,是一种"简单的无须转换翻译&

【转】I2C总线协议

I2C总线(Inter Integrated-Circuit)是由PHILIPS公司在上世纪80年代发明的一种电路板级串行总线标准,通过两根信号线--时钟线SCL和数据线SDA--即可完成主从机的单工通信.总线硬件连接极其简单,不同I2C设备挂接在总线上,只需在信号线安装上拉电阻即可完成硬件线路的搭建.另外,I2C总线采用器件地址的硬件设置方法,通过软件寻址方式完全避免了片选寻址的弊端,从而使硬件系统扩展更为灵活. 由于简单有效,I2C在业界得到广泛应用.基于I2C衍生出来的标准有SMBus.P

CAN总线几种正常的“异常”波形

CAN总线几种正常的"异常"波形 [复制链接]     电梯直达 楼主  hubaba 发表于 2016-3-28 14:00 | 只看该作者  摘要 工程师们通常使用示波器观察CAN总线的信号质量,一般主要关注CAN总线差分信号的幅值.最小位宽.边沿情况等.相信不少工程师都看到过一条报文数据的波形上高高低低存在多个幅值,心里可能会变得忐忑不安,幅值不统一是不是波形出现畸变了呢?其实并非如此,今天就把CAN总线上的幅值"异常"归归类. 一.CAN-bus信号产生原理

汽车CAN总线详解

概述 CAN(Controller Area Network)总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU之间可靠的通信,后因其简单实用可靠等特点,而广泛应用于工业自动化.船舶.医疗等其它领域.相比于其它网络类型,如局域网(LAN, Local Area Network).广域网(WAN, Wide Area Network)和个人网(PAN, Personal Area Network)等,CAN 更加适合应用于现场控制领域,因此得名. CAN

深入理解Java内存模型(三)——顺序一致性

本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-memory-model-3 数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争.java内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序. 当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此).如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序. JMM对正

java内存模型二

并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体).通信是指线程之间以何种机制来交换信息.在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递. 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信.在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信. 同步是指程序用于控制不同线程之间操作发生相对顺序的机制.在共享内存并发