CAN总线位仲裁技术

只要总线空闲,任何单元都可以开始发送报文。

要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时,要求快速地进行总线分配。

如果2 个或2 个以上的单元同时开始传送报文,那么就会有总线访问冲突。通过使用识别符的位形式仲裁可以解决这个冲突。

CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。


仲裁的机制确保信息和时间均不会损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。

CAN总线采用非归零(NRZ)编码,所有节点以“线与”方式连接至总线。如果存在一个节点向总线传输逻辑0,则总线呈现逻辑0状态,而不管有多少个节点在发送逻辑1。CAN网络的所有节点可能试图同时发送,但其简单的仲裁规则确保仅有一个节点控制总线、并发送信息。低有效输出状态(0)起决定性作用。

仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一“隐性”电平(逻辑1)而监测到一“显性”电平(逻辑0),那么该单元就失去了仲裁,必须退出发送状态。

所有标识符都有相同的两位01,直到第3位进行比较时,站1的报文被丢掉,因为它的第3位为高,而其它两个站的报文第3位为低。站2和站3报文的4、5、6位相同,直到第7位时,站3的报文才被丢失。


优点

在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了。

所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。

CAN具有较高的效率是因为总线仅仅被那些请求总线悬而未决的站利用,这些请求是根据报文在整个系统中的重要性按顺序处理的。

缺点

由于CAN总线采用的是固定优先级,当所有的节点都随机的向总线发送数据时,具有低优先级的节点是比具有高优先级的节点具有较大的发送失败几率。

每次具有较低优先级的节点都会在总线竞争中失败,从而导致它一个数据都发不出去,或者发送的数据有较大的延时。


版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处

作者:杭州卿萃科技ALIFPGA

原文地址:杭州卿萃科技FPGA极客空间 微信公众号


扫描二维码关注杭州卿萃科技FPGA极客空间


CAN总线位仲裁技术的更多相关文章

  1. I2C总线的仲裁机制

    在多主的通信系统中.总线上有多个节点,它们都有自己的寻址地址,可以作为从节点被别的节点访问,同时它们都可以作为主节点向其他的节点发送控制字节和传 送数据.但是如果有两个或两个以上的节点都向总线上发送启 ...

  2. ZYNQ Block Design中总线位宽的截取与合并操作

    前言 在某些需求下,数据的位宽后级模块可能不需要原始位宽宽度,需要截位,而某些需求下,需要进行多个数据的合并操作. 在verilog下,截位操作可如下所示: wire [7:0] w_in; wire ...

  3. 自学工业控制网络之路1.5-典型的现场总线介绍DeviceNet

    返回 自学工业控制网络之路 自学工业控制网络之路1.5-典型的现场总线介绍DeviceNet 2002年10月DeviceNet被批准为中国国家标准GB/T18858.3-2002,并于2003.4. ...

  4. STM32——CAN总线波特率和位时序详解

    本人用的单片机是STM32F407,其它型号的单片机类似,可做参考! 一.标准CAN协议位时序概念 由于CAN属于异步通讯,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口异步通讯那样,节点间 ...

  5. ATA/SATA/SCSI/SAS/FC总线简介

    ATA/SATA/SCSI/SAS/FC 都是应用于存储领域的总线,在当今的存储系统中,普遍应用的硬盘接口主要有 SATA . SCSI . SAS 和FC , ATA 比较古老,在一些老的低端存储系 ...

  6. AMBA总线介绍

    The Advanced Microcontroller Bus Architecture (AMBA) specification defines an on- chip communication ...

  7. openrisc 之 Wishbone总线学习笔记——总线互联

    一,总线命名规范 1,wishbone总线接口信号都是高电平有限 2,wishbone接口信号都是以 _i ,或者是 _o 结束.i表示输入, o表示输出. ()表示该信号为总线信号,总线位宽可以大于 ...

  8. CAN总线要点

    前言 CAN总线的应用在现在看来越来越广泛,我厂设备从最初的ARM9与ARM7平台.期间升级过度到CortexA8与Cortex M3平台,再到现在的Cortex M4平台,围绕CAN进行了一系列产品 ...

  9. 探讨CAN总线的抗干扰能力

    探讨CAN总线的抗干扰能力 CAN总线经近20年的发展已步入壮年期,它不仅在汽车领域的应用占据一定优势,在其他工业应用上也生机勃勃.枝繁叶茂.究竟是什么原因使它这么成功?当人们发现它的局限性,又面临新 ...

随机推荐

  1. Android中获取并设置屏幕亮度

    最近在做一个Demo的时候用到了调节屏幕亮度的功能,于是上网搜索了一下,并且写了一个小Demo测试了一下,发现代码还是比较简单的.Android中的亮度调节,主要有三个方向,一个是针对于系统的亮度调节 ...

  2. Spring -- spring 和 hibernate 整合

    1.概述, 事务管理, 编程式和说明式事务管理 2. 事务属性 传播行为: 传播行为 意义 PROPAGATION_MANDATORY 该方法必须运行在一个事务中.如果当前事务不存在,将抛出一个异常. ...

  3. BZOJ3205/UOJ107 [Apio2013]机器人

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  4. PHP服务器变量$_SERVER

    常用的就几个,自己print_r($_SERVER); 看看. $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关. $_SERVER['argv ...

  5. JNI简单HelloWorld

    1.编写Java代码 建立hello目录,编写HelloWorld.java: class HelloWorld { public native void displayHelloWorld(); s ...

  6. 智课雅思词汇---二十五、形容词后缀-ate-fic-ose-ulent-olent-ous-ulous-y

    智课雅思词汇---二十五.形容词后缀-ate-fic-ose-ulent-olent-ous-ulous-y 一.总结 一句话总结: 1.形容词后缀-ate(determinate)? determi ...

  7. Sql Server 中关于@@ERROR的一个小小误区

    我们经常写存储过程的时候会用到@@ERROR来判断执行是否成功,很久没有写复杂点的存储过程了,今天发现前段时间写的一个proc出现了bug,由于定义参数时,字符串长度设的有点短,导致传进来的值中间被截 ...

  8. 20165332实验二 Java面向对象程序设计

    20165332实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 ...

  9. Django进阶Model篇008 - 使用原生sql

    注意:使用原生sql的方式主要目的是解决一些很复杂的sql不能用ORM的方式写出的问题. 一.extra:结果集修改器-一种提供额外查询参数的机制 二.执行原始sql并返回模型实例 三.直接执行自定义 ...

  10. redis之linux下的安装

    安装 1.在/usr/local下新建redis文件夹 #mkdir redis 2.去redis.io下载redis安装包 # wget http://download.redis.io/relea ...