CAN总线采用差分信号传输,通常情况下只需要两根信号线(CAN-H和CAN-L)就可以进行正常的通信。在干扰比较强的场合,还需要用到屏蔽地即CAN-G(主要功能是屏蔽干扰信号),CAN协议推荐用户使用屏蔽双绞线作为CAN总线的传输线。
    在“隐性”状态下,CAN-H与CAN-L的输入差分电压为0V(最大不超过0.5V),共模输入电压为2.5V。
    在“显性”状态下,CAN-H与CAN-L的输入差分电压为2V(最小不小于0.9V),如下图 1所示。
数据总线上面就是上面的真实电压,但是can收发器会把真实的物理电压转换为逻辑电压,
隐性,差分电压(低)——>逻辑1
显性,差分电压(高)——>逻辑0
CAN总线上,“显性”的优先级要高于“隐性”;当“显性”位和“隐性”位同时发送到总线上时,总线上的数值表现为“显性”。
可以理解为:
      逻辑 1-->“隐性”,总线处于高阻,任何一个CAN节点都可以将总线驱动成“显性”。    
      逻辑 0-->“显性”,在总线上的电平优先级要高于“隐性”,所以1个接收节点在总线上产生的“显性"位可以导致发送节点在这个时刻发送“隐性”时的物理仲裁错误。
 
CAN节点的物理层仲裁
    CAN节点出于发送状态的时候,TX引脚发送数据bit流,同时RX引脚在接收总线上的bit流;由于总线上“显性”位的优先级要高于“隐性”位;所以在RX引脚上接收到的这个时刻的bit电平与TX引脚上发送的bit电平不一致,就导致该发送节点发送失败,也可理解成为:发送总线仲裁错误。
    这样就可以用来解决,2个节点在同一时刻开始往总线上发送数据,只要2个节点发送的bit流不一致,就可以区分开来。先发送“显性”位(逻辑 0)的节点能将完整的数据帧发送到总线上;而另外的那个节点因为发送“隐性”位( 逻辑 1)的时刻,RX引脚上检测到总线上“显性”位( 逻辑 0),因此产生总线仲裁错误而退出发送状态。
 
 

Can总线上的电平及物理层仲裁的更多相关文章

  1. 【转】I²C总线上拉电阻阻值如何选择?

    I2C总线为何需要上拉电阻? I2C(Inter-Intergrated Circuit)总线是微电子通信控制领域中常用的一种总线标准,具有接线少,控制方式简单,通信速率高等优点. I2C总线的内部结 ...

  2. CAN总线的显性电平为什么能覆盖隐性电平?

    摘要:在CAN总线中,显性电平是强驱动,隐性电平时弱驱动,因此当有的节点发送显性电平有的节点发送隐性电平时,总线上呈现的肯定是强驱动的状态,这就是CAN总线显性电平可以覆盖隐性电平的原因. 大家都知道 ...

  3. 弄清AXI总线上每一个信号的含义

    弄清AXI总线上每一个信号的含义 1.信息来源 2.AXI总线的端口描述 时钟与复位端口 AXI M总线--写操作--地址通道的相关信号 AXI M总线--读操作--地址通道的相关信号 AXI M总线 ...

  4. 使用 usbmon 抓取 usb 总线上的数据

    使用 usbmon 抓取 usb 总线上的数据 usbmon 即 usb monitor,是 linux 内置的 usb 抓包工具.usbmon 本质是一个内核模块,在我的 ubuntu14.0 4中 ...

  5. CAN总线的显性电平与隐性电平

    读CAN总线的书时,都会涉及到总线电平的问题,CAN总线的电平分为显性电平与隐性电平,这是CAN总线物理层的核心部分,也是总线仲裁的基础.那何为显性,何为隐性呢? 根据孔丙火(微信公众号:孔丙火)的理 ...

  6. FPGA中iic总线上,应答ACK解析

    首先要明白一点,有效ACK是指第9位为低电平,第十位,十一位就管不着了,(我写的代码发现第九位为低电平,之后复位为高电平,开始没注意后来搞的很是头痛) 主机发ack和主机检测ack,主机发ack是在从 ...

  7. CAN总线上的消息单帧某个信号的值计算(C#)

      public static ulong GetMotorolaSignalValue(byte[] data, int startBit, int bitLength) { ; , j =; i ...

  8. CAN总线(一)

    原文出处:http://www.cnblogs.com/jacklu/p/4729638.html 嵌入式的工程师一般都知道CAN总线广泛应用到汽车中,其实船舰电子设备通信也广泛使用CAN,随着国家对 ...

  9. 【单片机通信协议】CAN总线基础知识

    CAN总线基础知识(一) 1.1 CAN总线是什么? CAN(Controller Area Network)是ISO国际标准化的串行通信协议.广泛应用于汽车.船舶等.具有已经被大家认可的高性能和可靠 ...

随机推荐

  1. Win 10 设置右键以管理员方式打开 CMD 窗口

    Add_Open_Command_Window_Here_as_Administrator.reg Windows Registry Editor Version 5.00 [-HKEY_CLASSE ...

  2. idea 全局内容搜索和替换

    在做项目时,有时会在整个项目里或指定文件夹下进行全局搜索和替换,这是一个很方便功能.使用方法如下: 一.全局搜索1.使用快捷键Ctrl+Shift+F打开搜索窗口,或者通过点击Edit–>Fin ...

  3. 65 TCP连接中,流的关闭会造成Socket的关闭

    转自:https://blog.csdn.net/u012525096/article/details/76924627 今天写安卓向服务器发送图片,过程为:客户端发送数据->服务器接收.处理数 ...

  4. SQL Server的NTEXT类型不支持等号"="操作(转载)

    SQL SERVER – Fix: Error : 402 The data types ntext and varchar are incompatible in the equal to oper ...

  5. Windows服务的安装及配合定时器编写简单的程序

    最近要实时统计一些数据,所以就用到了Windows服务及定时任务,在这里记录下. Windows Service简介: 一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应 ...

  6. Spring项目中的数据库加密

    有时候为了安全,我们需要对数据库密码进行加密: SpringDruid数据源加密数据库密码 当我们初步开始打造系统时,什么都没有一片空白,而数据源使用的是SpringDruid时,我们可以通过这篇博客 ...

  7. Python与Golang对比

    一:前言 刚看了一篇软文,说什么“才华是改变人生最有效的途径”,反正呢,大体就是科技进步,要想一直在车上,就得不断的学习,刚好最近也准备学习Golang,最近火的不能在火了吧,刚好也有些Python基 ...

  8. .Net Core 程序集管理说明(加载)

    .NET CORE 的程序集加载管理和以前的 .NET 发生了很大的变化, 在 .NET CORE 里, 程序集的加载, 依赖了 xx.deps.json 文件, deps.json 文件里,定义了程 ...

  9. Javaweb项目-下拉列表显示后台数据库的数据

    下面将演示前端下拉列表显示后台数据库中class表的说有班级的名称 环境: Tomcat-8.5.40 mysql-8.0.13 eclipse-4.9.0 springmvc框架 一.从mysql中 ...

  10. ASP.NET Core中使用Cache缓存

    ASP.NET Core中使用Cache缓存 缓存介绍: 通过减少生成内容所需的工作,缓存可以显著提高应用的性能和可伸缩性. 缓存对不经常更改的数据效果最佳. 缓存生成的数据副本的返回速度可以比从原始 ...