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. Linux常用基础(三)

    1.gcc编译器 (1)简介 前期的GCC是GNU C Compiler,仅仅用于C语言的编译,经过多年的发展,现在的GCC为GNU Compiler Collection,并且目前支持多种编程语言的 ...

  2. Python3+Robot Framework+RIDE安装使用教程

    一.说明 Python3----网上很多文章都是用Python2,Robot Framework的部分文档没更新也直接写着不支持Python3(如RIDE does not yet support P ...

  3. golang输出双精度浮点例子(Printf)

    1 package main import "fmt" func main() { var sum int = 17 var count int = 5 var mean floa ...

  4. 关于FMX 单击出来右键菜单,并显示在当前下面

    关于FMX  单击出来右键菜单,并显示在当前下面 procedure TForm1.btn6MouseDown(Sender: TObject; Button: TMouseButton; Shift ...

  5. Application.mk文件官方使用说明

    本文档介绍了 ndk-build 所使用的 Application.mk 编译文件. 我们建议先阅读概念页面,然后再阅读本页面. 概览 Application.mk 指定了 ndk-build 的项目 ...

  6. Replication:distribution 中一直在运行 waitfor delay @strdelaytime 语句

    Replication 自动创建来一个 Job:Replication monitoring refresher for distribution,这个Agent执行一个sp: dbo.sp_repl ...

  7. C语言----流程图(基础篇四)

    大家晚上好,最近忙每天忙于项目没有时间更新自己的博客,时间就是海绵嘛硬挤挤就是有的,咂看标题" 流程图 ",编程界的一个不可或缺的技能,特别是在做复杂的逻辑的时候要处理好每一步的关 ...

  8. MTSC2019-深圳站 议题征集

    议题截止时间 11月初 议题投递地址 topic@testerhome.com   臣一路走来,没有敌人,看见的都是朋友和师长 —司马懿 关于中国移动互联网测试大会 MTSC 大会(中国移动互联网测试 ...

  9. FFMPEG处理音频时间戳的主要逻辑

    来源:http://www.xuebuyuan.com/1466771.html FFMPEG处理音频时间戳的主要逻辑 2013年12月09日 ⁄ 综合 ⁄ 共 2226字 ⁄ 字号 小 中 大 ⁄ ...

  10. Python数据预处理之清及

    使用Pandas进行数据预处理 数据清洗中不是每一步都是必须的,按实际需求操作. 内容目录 1.数据的生成与导入 2.数据信息查看 2.1.查看整体数据信息 2.2.查看数据维度.列名称.数据格式 2 ...