一、CAN总线是什么?

CAN(Controller Area Network)是ISO国际标准化的串行通信协议。广泛应用于汽车、船舶等。具有已经被大家认可的高性能和可靠性。

CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的电平,在任一时刻,总线上有2种电平:显性电平和隐性电平。

“显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平,并且,“隐性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强)。

总线上执行逻辑上的线“与”时,显性电平的逻辑值为“0”,隐性电平为“1”。

下图显示了一个典型的CAN拓扑连接图。

连接在总线上的所有单元都能够发送信息,如果有超过一个单元在同一时刻发送信息,有最高优先级的单元获得发送的资格,所有其它单元执行接收操作。

二、CAN总线的特点

CAN总线协议具有下面的特点:

1) 多主控制

当总线空闲时,连接到总线上的所有单元都可以启动发送信息,这就是所谓的多主控制的概念。

先占有总线的设备获得在总线上进行发送信息的资格。这就是所谓的CSMA/CR(Carrier Sense MulTIpleAccess/Collosion Avoidance)方法

如果多个设备同时开始发送信息,那么发送最高优先级ID消息的设备获得发送资格。

2) 信息的发送

在CAN协议中,所有发送的信息要满足预先定义的格式。当总线没有被占用的时候,连接在总线上的任何设备都能起动新信息的传输,如果两个或更多个设备在同时刻启动信息的传输,通过ID来决定优先级。ID并不是指明信息发送的目的地,而是指示信息的优先级。如果2个或者更多的设备在同一时刻启动信息的传输,在总线上按照信息所包含的ID的每一位来竞争,赢得竞争的设备(也就是具有最高优先级的信息)能够继续发送,而失败者则立刻停止发送并进入接收操作。因为总线上同一时刻只可能有一个发送者,而其它均处于接收状态,所以,并不需要在底层协议中定义地址的概念。

3) 系统的灵活性

连接到总线上的单元并没有类似地址这样的标识,所以,添加或去除一个设备,无需改变软件和硬件,或其它设备的应用层软件。

4) 通信速度

可以设置任何通讯速度,以适应网络规模。

对一个网络,所有单元必须有相同的通讯速度,如果不同,就会产生错误,并妨碍网络通讯,然而,不同网络间可以有不同的通讯速度。

5) 远程数据请求

可以通过发送“遥控帧”,请求其他单元发送数据。

6) 错误检测、错误通知、错误恢复功能

所有单元均可以检测出错误(错误检测功能)。

检测到错误的单元立刻同时通知其它所有的单元(错误通知功能)。如果一个单元发送信息时检测到一个错误,它会强制终止信息传输,并通知其它所有设备发生了错误,然后它会重传直到信息正常传输出去(错误恢复功能)。

7) 错误隔离

在CAN总线上有两种类型的错误:暂时性的错误(总线上的数据由于受到噪声的影响而暂时出错);持续性的错误(由于设备内部出错(如驱动器坏了、连接有问题等)而导致的)。CAN能够区别这两种类型,一方面降低常出错单元的通讯优先级以阻止对其它正常设备的影响,另一方面,如果是一种持续性的错误,将这个设备从总线上隔离开。

8) 连接

CAN总线允许多个设备同时连接到总线上且在逻辑上没有数目上的限制。然而由于延迟和负载能力的限制,实际可连接得设备还是有限制的,可以通过降低通讯速度来增加连接的设备个数。相反,如果连接的设备少,通讯的速度可以增加。

三、CAN总线状态有三种:

1、主动错误状态——(通常说的正常状态也应该包含在内)处于该状态的节点可以不受任何限制地发送报文和主动错误帧(由显性位构成)。

2、被动错误状态——处于被动错误状态的节点可以发送报文和被动错误帧

(由隐性位构成)。

3、总线关闭状态——处于总线关闭状态的节点暂时不能参与总线通讯。这一

状态下,既无法发送报文,也无法接收报文。只有发送器能够进入总线关闭状态。——就需要进行错误处理了。

转换和发送计数器、接收计数器的值相关,转换关系参见下图:

四、如何判断总线忙还是空闲呢

判断总线状态可以监测总线电压,简单来说CAN_H和CAN_L之间的差分电压大的(一般在2V左右)就是显性状态,差分电压小的(理论上是0V)就是隐性,当然容错CAN要复杂很多,就不是这样的。当你一值监测到总线都处于隐性状态(就是两根线电压值差不多)那就说明总线处于空闲状态,如果是显隐交替,那就是总线不处于空闲状态。

CAN总线空闲的定义是连续11个位的隐性电平(逻辑为1),一般用于总线关闭时的自动恢复。而CAN的显性电平逻辑为0,一旦有显性就说明肯定至少有1个节点在发送波形,那就不是空闲了。CAN的帧间隙是连续3个以上隐性电平。

can是什么时候处于显性_CAN总线什么情况下为空闲状态? - 全文相关推荐

  1. can是什么时候处于显性_can总线怎么传输数据格式过程分析

    一.什么是CAN协议 电子计算机网络用电子语言来说话,各电控单元必须使用和解读相同的电子语言,这种语言称"协议",汽车电脑网络常见的传输协议有数种.宝来车装用博世公司产品,数据总线 ...

  2. can是什么时候处于显性_CAN总线边沿时间标准是什么?

    CAN总线边沿时间会影响采样正确性,而采样错误会造成不断错误帧出现,影响CAN总线通信.那么CAN总线边沿时间标准是什么?边沿时间如何测量呢? 一.CAN测试边沿时间意义 目前在国内汽车电子行业没有明 ...

  3. can是什么时候处于显性_can总线通信原理 显性

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  4. can总线短距离不用双绞线_CAN 总线(一) 物理层—屏蔽双绞线

    1.物理层一般要求 1.1 物理层 物理层实现网络中电控单元(ECU)的电连接.ECU 的数目限制于总线线路的负载承 受能力.根据本部分的电气参数定义,在特定网段上ECU 的最大数目定为30. 1.2 ...

  5. can差分线阻抗_CAN总线冷知识—边沿台阶是怎么来的?

    你了解CAN总线波形吗?你知道是什么因素造成CAN信号不稳定的吗?本文将带你探究影响CAN波形稳定的罪魁祸首--边沿台阶. 阻抗匹配是指信号源或者传输线跟负载之间达到一种适合的搭配,阻抗匹配主要为了调 ...

  6. can通道采样频率_CAN总线基础(上)

    概述 汽车电子设备的不断增多,对汽车上的线束分布以及信息共享与交流提出了更高的要求.传统的电气系统往往采用单一连接的方式通信,这必将带来线束的冗余以及维修的成本的提高. 传统的单一通信的对接方式,已经 ...

  7. can总线报文是固定的吗_CAN总线负载率的计算方式

    今天这篇文章主要是介绍当前汽车中使用的总线的类型及负载率的计算方式,用于汽车电子工程师学习及应用在日常工作中:当前汽车中常见总线类型是CAN,CAN FD, FlexRay及LIN总线:今天我们先介绍 ...

  8. can test 接收报文_CAN总线

    CAN总线(一) 原文出处:http://www.cnblogs.com/jacklu/p/4729638.html 博客园,作者:lulujianjie 嵌入式的工程师一般都知道CAN总线广泛应用到 ...

  9. can协议crc计算_CAN总线通信的CRC校验方法

    数据校验是为保证数据的完整性进行的一种验证操作.CAN通信采用CRC校验作为一种重要的错误检测手段,是节点判断CAN帧信息的完整性并产生确认应答的依据. 在现场总线通信和控制的实际应用中,工业应用环境 ...

  10. can总线配置读入是什么意思_CAN总线含义

    总线 的产生与发展 控制器局部网( CAN - CONTROLLER A RE A NETWORK ) 是 BOSCH 公司为现代汽车应用领先推出的一种多 主机局部网,由于其高性能.高可靠性.实时性等 ...

最新文章

  1. Java连接Oracle数据库示例
  2. 58到家技术总监沈剑:有选择的借鉴才能不走弯路
  3. 学习率对神经网络迭代次数的影响
  4. 多图上传 - Web Uploader
  5. 为什么jdk的CLASSPATH环境变量需要设置rt.jar 和 tools.jar
  6. Yolo系列知识点梳理(Yolov1-v5)
  7. 算法:位运算加减乘除
  8. java中 15db9742_请问我这个报错[I@15db9742是怎么回事啊?
  9. Android开发笔记(三十一)SQLite游标及其数据结构
  10. Vue生命周期和钩子函数的一些理解
  11. 韦东山嵌入式Linux第一期视频-韦东山-专题视频课程
  12. Cameralink光端机
  13. JAVA对接圆通API
  14. WINDOWS蓝屏代码大全
  15. 说程序员吃青春饭的两种人:一种是外行,一种是这2样东西没学好
  16. 门铃C语言设计程序,单片机C语言程序设计:用定时器设计的门铃
  17. 应用分发是什么意思?APP内测分发步骤
  18. tesseract安装及配置
  19. 第3章 数据分析工具Pandas
  20. widget模式弄不出来_GTA5线上模式如果改掉这几个毛病,入手GTA5的玩家还会大大增加...

热门文章

  1. 模板文件云存储管理 Sisyphus
  2. 虚幻4渲染编程(环境模拟篇)【第一卷:体积云天空模拟(1)---层云】
  3. linux shell 脚本复制特定后缀文件到另外一个文件夹下
  4. Android手机怎么开启原生虚拟按键-以小米手机为例,实现全面屏手势
  5. linux设置apn脚本apn,Android学习之网络APN接入点控制
  6. Hulu推荐:小众又新颖的综艺
  7. linux安装zend,linux安装配置Zend Optimizer详解
  8. java任务队列_java 任务队列
  9. 计算机桌面图标乱码,电脑软件上的文字变乱码怎么办?怎么修复?
  10. 计算2015年4月6日是一年中的第几星期