CAN总线呕心沥血教程

CAN总线呕心沥血教程
CAN总线呕心沥血教程

哥很郁闷,为了CAN研究了不少,看了不少资料,现在我给大家总结一下先看看工作原理

当CAN总线上的一个节点(站)发送数据时,它以报文的形式广播给网络中所有节点,对每个节点来说,无论数据是否是发给自己的,都对其接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式成为面向内容的编制方案。同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文,当几个站同时竞争总线读取时,这种配置十分重要。

大体的工作原理我们搞清了,但是根本的协议我们还要花一番功夫。下面介绍一个重要的名词,“显性“和”隐性“

在我看到的很多文章里,有很多显性和隐性的地方,为此我头痛不已,最终我把它们彻底弄明白了。

首先CAN数据总线有两条导线,一条是黄色的,一条是绿色的。分别是CAN_High线和CAN_Low线

当静止状态时,这两条导线上的电平一样。这个电平称为静电平。大约为2.5伏。这个静电平状态就是隐形状态,也称隐性电平。也就是没有任何干扰的时候的状态称为隐性状态.当有信号修改时,CAN_High线上的电压值变高了,一般来说会升高至少1V,而CAN_Low线上的电压值会降低一个同样值,也是1v,那么这时候。CAN_High就是2.5v+1v=3.5v,它就处于激活状态了。而CAN_Low降为2.5v-1v=1.5v。

可以看看这个图

由此我们得到

在隐性状态下,CAN_High线与CAN_Low没有电压差,这样我们看到没有任何变化也就检测不到信号。但是在显性状态时,电压差最低为2V,我们就可以利用这种变化才传输数据了。所以出现了那些帧,那些帧中的场,那些场中的位,云云~~~~~~~~~~~

在总线上通常逻辑1表示隐性。而0表示显性。这些1啊,0啊,就可以利用起来为我们传数据了。

利用这种电压差,我们可以接收信号。

一般来说,控制单元通过收发器连接到CAN驱动总线上,这个收发器(顾名思义,可发送,可接收)内有一个接收器,该接收器是安装在接收一侧的差动信号放大器。然后,这个放大器很自然地就放大了CAN_High和CAN_Low线的电平

差,然后传到接收区。如下图

由上图可知,当有电压差,差动信号放大器放大传输,将相应的数据位任可为0。下面我们进入重点难点。报文

所谓报文,就是CAN总线上要传输的数据报,为了安全,我们要给我们传输的数据报编码定一下协议,这样才能不容易出错,所以出现了很多的帧,以及仲裁啊,CRC效验。这些都是难点。

识别符的概念。

识别符顾名思义,就是为了区分不同报文的可以鉴别的好多字符位。有标准的,和扩展的。标准的是11位,扩展的是29位。他有一个功能就是可以提供优先级,也就是决定哪个报文优先被传输,报文标识符的值越小,报文具有越高的优先权。

CAN的报文格式有两种,不同之处其实就是识别符长度不同,具有11位识别符的帧称为标准帧,而还有29位识别符的帧为扩展帧,CAN报文有以下4个不同的帧类型。分别是

(1)数据帧:数据帧将数据从发送器传输到接收器。

(2)远程帧:总线节点发出远程帧,请求发送具有同一标识符的数据帧(3)错误帧:任何节点检测到总线错误就发出错误帧

(4)过载帧:过载帧用已在先行的后续的数据帧(或远程帧)之间提供一附加的延时

我们先研究数据帧吧。

一,数据帧由7个不同位场组成。

这里的位场,就是不同位的组合,这名字起的很烂,让人看了感觉很抽象。我们来看看这些个不同的位场吧。

一开始是一位帧起始,也叫SOF。它用显性位表示,也就是0.它告诉我们,两个

线上有电压差了,也就是有数据了。这个帧起始看起来只有一位,起始不简单了。为了让所有的分站都同步于发送报文的发送站,好接收数据,有很多要考虑的地方。

然后下一个场是仲裁场。这个仲裁场是个难点。但是不要怕,有我在,你会很明白地搞定的。

这个仲裁很抽象,其实在这里就是为了解决一个问题。如果2个或2个以上的单元同时开始传送报文,那么就会有总线访问冲突。那么仲裁机制就是用来根据标识符优先级来一个一个的去掉低级别的数据。我们可以详细的描述这场生动的争抢总线的战斗。(问题是多个数据发往总线,总线电平不会累积吗?标识符越低,显性位越多,是硬件仲裁的还是一种软件机制)

当总线处于空闲状态时呈隐性电平,此时任何节点都可以向总线发送显性电平作为帧的开始。2个或2个以上的节点同时发送开始争抢总线,但是总线只能被一个人抢走。总线只属于一个他。这时候到底怎么决定谁留下,谁滚蛋呢。我们开始考虑,思索,我们以前定义了标识符,标识符有优先级,它越小,它优先级越高。那么怎么实现的呢。看下面把首先搞明白两点,一下面的图低波形代表0,高波形代表1 二当隐性碰到显性,就变为显性。

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

在这逐位的比较中,最终节点B因为第七位的偏差丢掉了总线。从此单纯监听,江山就拱手让给了节点A了。这就是仲裁机制

这里我们涉及到总线值

总线值

总线有二个互补的逻辑值:“显性”或“隐性”。“显性”位和“隐性”位同时传送时,总线的结果值为“显性”。比如,在总线的“写与”执行时,逻辑0代表“显性”等级,逻辑1代表“隐性”等级。

上面我们说过,报文有两种格式,标准和扩展。这里,不同的格式仲裁场是不一样的。标准格式下,仲裁场由11位识别符和RTR位组成。但在扩展格式里,包括29位识别符,SRR位,IDE位,RTR位。

RTR位。Remote Tranmission Request BIT 全称为远程发送请求位。它在数据帧里必须为显性0 ,但在远程帧里为隐性1。我晕,为什么这么搞呢,不急,先留着这个问题。

SRR位,替代远程请求位,SRR是一隐性位,也就是1,它在扩展格式的标准帧RTR位位置,那么标准帧怪不得优先于扩展帧了,因为在传输完11位标识符之后(扩展帧的后18位在最后发送,先发送11位标识符),轮到标准帧的RTR 位和扩展帧的SRR位了。这时候,标准帧的RTR为显性,而扩展帧SRR为隐性,这样,总线自然就被标准帧占据。同时上面那个问题,也一目了然了,CAN 总线协议设计者,肯定是设计了数据帧优先于远程帧所以

IDE 全称识别符扩展位(Identifier Extension Bit),它属于扩展格式的仲裁场

标准格式的控制场

标准格式的IDE位为显性,扩展格式里IDE位为隐性。这样扩展格式的数据帧优先级又落下了一截。

控制场

控制场有6位组成。标准的跟扩展的又不同。标准的格式里的帧先是IDE位

,然后保留位r0,然后数据长度代码(共四位,分别是DLC3,DLC2,DLC1,DLC0)而扩展格式里,IDE替换为r1保留位,其余不变。

数据长度代码指示了数据场里的字节数量。

数据场:

数据场由发送数据组成,可以为0~8个字节,从高位开始(MSB)先发送。CRC场

包括CRC序列,和CRC界定符。

这个CRC序列又是一个难点,具体什么是CRC序列呢,

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。

生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。

参考一下下面的例题.自已再领悟一下吧! 已知信息位为1100,生成多项式G(x) = x3+x+1,求CRC码。 M(x) = 1100 M(x)*x3 = 1100000 G(x) = 1011 M(x)*x3 / G(x) = 1110 + 010 /1011 R(x) = 010 CRC码为: M(x)*x 3+R(x)=1100000+010 =1100010 其原理是:CRC码一般在k位信息位之后拼接r位校验位生成。编码步骤如下:(1)将待编码的k位信息表示成多项式 M(x)。(2)将 M(x)左移r 位,得到 M(x)*xr 。(3)用r+1位的生成多项式G(x)去除M(x)*xr 得到余数R(x)。(4)将M(x)*xr 与R(x)作模2加,得到CRC码。

应答场

应答场(ACK)长度为2个位,包含应答间隙和应答界定符,在ACK场里,发送站发送两个隐性位。当接收器正确接收到有效地报文,接收器就会在应答间隙期间(发送ACK信号)向发送器发送一显性位以示应答。

二远程帧

通过发送远程帧,总线的节点发出远程帧,请求以前发送给它数据帧的节点再发送一遍。具体发送哪个数据帧,由远程帧的标识符决定。

远程帧的RTR是隐性的。没有数据场,其余都与数据帧相同。

错误帧

错误帧由两个不同的场组成,第一个场是不同站提供的错误标志的叠加,第二个场是错误界定符。

1 错误标志

有两种形式的错误标志,主动地和被动的。这就让人很明白了。也就是说主动发出错误的节点发出错误帧时,就是主动地错误标志,而接收错误帧的节点,就发出被动错误标志。

主动地错误标志由6个连续的显性位组成。

被动的错误标志由6个连续的隐形位组成,除非被其他节点的显性位重写。

检测到错误条件的错误激活的站通过发送主动错误标志指示错误。这个错误帧也可以看做有着跟数据帧类似的场结构,错误标志的形式显然破坏了从帧起始到CRC界定符的位填充规则(检测到5个相同的位,就插入一个补充位,但是错误帧却有6个相同的位,显然破坏了)。或者破坏了ACK场或帧结尾场的固定形式。所有其他的站由此检测到错误条件。并于此同时发送错误标志。并且假如有很多站都有自己的错误发送,它们会都发送主动错误标志,这种显性标志显然被叠加在一起。

(2)错误界定符

错误界定符包括8个“隐性”的位。

错误标志传送了以后,每一个节点就发送一个“隐性”的位,并一直监视总线直到检测出一个“隐性”的位为止,然后就开始发送其余7个“隐性”位。

四过载帧

过载帧包括2个位场:过载标志和过载界定符

有三种过载的情况,这三种情况都会引起过载标志的发送

1接收器的内部情况(此接收器对于下一数据帧或远程帧需要一定的延时)这种情况引发的过载帧只允许起始于所期望间歇的第一个位时间。

2在间歇的第1和第2字节检测到一个显性位

这里有个间歇的概念。我们可以讲讲。间歇属于帧间空间的一部分。它包含三个隐性位。间歇期间,所有的站不允许传送数据帧或远程帧。它唯一要做的就

是标示一个过载条件。

3 如果CAN节点在错误界定符或过载界定符的第8位采样到一个显性位,有了上面的情况,则节点会发送一个过载帧。错误计数器不会增加。

对于情况2,3引发的过载帧应起始于所检测到显性位之后的位。

通常为了延时下一个数据帧或远程帧,两种过载帧均可产生。

过载标志

由6个显性位组成。过载标志的所有形式和主动错误标志一样。

过载标志的形式破坏了间歇场的固定形式,因此,所有其他的站都检测到过载条件并于此同时发出过载标志。

过载界定符8个隐形位

帧间空间

数据帧(或远程帧)与先行帧的隔离是通过帧间空间实现的。无论此先行帧类型如何。所不同的是过载帧与错误帧之间没有帧间空间。多个过载帧之间也不是由帧间空间隔离的。

帧间空间包括间歇,总线空闲的位场。如果错误被动的站已作为前一报文的发送器,则其帧空间除了间歇,总线空闲外,还包括称作挂起传送的位场。

(1)间歇(Intermission)

间歇包括3个“隐性”的位。间歇期间,所有的节点均不允许传送数据帧或远程帧,唯一要做的是标示一个过载条件。

如果CAN节点有一报文等待发送并且节点在间歇的第三位采集到一显性位,则此位被解释为帧的起始位,并从下一位开始发送报文的标识符首位,而不用首先发送帧的起始位或成为一接收器。

(2)总线空闲(Bus Idle)

总线空闲的时间是任意的。只要总线被认定为空闲,任何等待发送报文的节点就会访问总线。在发送其他报文期间,有报文被挂起,对于这样的报文,其传送起始于间歇之后的第一个位。

can总线协议完全解析

CAN总线协议解析 李玉丽 (吉林建筑工程学院电气与电子信息工程学院,吉林长春,130021 ) 摘要:现场总线的发展与应用引起了传统控制系统结构的改变。控制局域网(C AN)总线因其自身的特点被广泛应用于 自动控制领域。本文对C AN总线协议作了详尽解析。 关键词:C AN总线;隐性位;显性位;节点 中图分类号:T U 85 文献标识码:A CAN(Cont roll e r A rea N et work)是分布式实时控 制系统的串行通信局域网,称谓CAN总线。在数据 实时传输中,设计独特、低成本,具有高可靠性,得到 广泛应用。 本文着重解析C AN 技术规范2.0B 版的CAN 的分层结构规范和CAN 报文结构规范。重点在于 充分理解CAN总线协议精髓,有助于CAN总线的 局网设计、软件编程、局网维护。 一、C AN的分层结构 CAN 遵从O SI ( Ope n Syste m I nte rc onnec ti on Re fe re nce Mode l ) 模型,其分层结构由高到低如图1 所示。 图1 C AN的分层结构 对应OSI 模型为两层,实际为三层,即LLC、 MA C、PL S。由此而知,对应于CAN总线系统每个 节点都是三层结构。数据发送节点数据流为LLC→ MA C→P LS ,然后将数据发送到总线上;而对于挂在 总线上的所有节点(包括发送节点)的接收的数据流 为PL S→MA C→LLC。 这种分层结构的规范保证了CAN 总线的多主 方式工作模式,即不分主从,非破坏性的仲裁工作模 式。而LLC 层的报文滤波功能可实现点到点、一点 对多点、全局广播、多点对一点,多点对多点等数据 传递方式。 各分层主要功能如下: LLC 层:接收滤波、超载通知、恢复管理; MAC 层:控制帧结构、执行仲裁、错误检测、出 错标定、故障界定。该层是CAN的核心; PL S 层:位编码/ 解码、位定时。 二、CAN总线的报文规范 CAN报文的传送有4 种不同类型的帧结构,数 据帧、远程帧、出错帧、超载帧。CA B2.0B 有4 种帧 格式。 (一)数据帧

CAN总线技术详解

CAN总线技术详解 起源 20世纪80年代,Robert Bosch 公司在SAE(汽车工程协会)大会上介绍了一种新型的串行总线CAN控制器局域网,那也是CAN 诞生的时刻。今天,在欧洲几乎每一辆新客车均装配有CAN 局域网。同样,CAN也用于其他类型的交通工具,从火车到轮船或者用于工业控制。CAN 已经成为全球范围内最重要的总线之一甚至领导着串行总线。CAN总线的工作原理 CAN总线使用串行数据传输方式,可以1Mb/s的速率在40m的双绞线上运行,也可以使用光缆连接,而且在这种总线上总线协议支持多主控制器。CAN与I2C总线的许多细节很类似,但也有一些明显的区别。 当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。 当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。 由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN总线中加进一些新站而无需在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。

(完整版)CAN总线解析

一、概述 CAN(Controller Area Network)即控制器局域网,是一种能够实现分布式实时控制的串行通信网络。 想到CAN就要想到德国的Bosch公司,因为CAN就是这个公司开发的(和Intel)CAN 有很多优秀的特点,使得它能够被广泛的应用。比如:传输速度最高到1Mbps,通信距离最远到10KM,无损位仲裁机制,多主结构。 近些年来,CAN控制器价格越来越低,很多MCU也集成了CAN控制器。现在每一辆汽车上都装有CAN总线。 一个典型的CAN应用场景: 二、CAN总线标准 CAN总线标准只规定了物理层和数据链路层,需要用户来自定义应用层。不同的CAN标准仅物理层不同。

CAN收发器负责逻辑电平和物理信号之间的转换,将逻辑信号转换成物理信号(差分电平)或者将物理信号转换成逻辑电平。 CAN标准有两个,即IOS11898和IOS11519,两者差分电平特性不同。(有信号时,CANH 3.5V,CANL 1.5V,即显性;没有信号时,CANH 2.5V,CANL 2.5V,即隐性) IOS11898高速CAN电平中,高低电平的幅度低,对应的传输速度快。 双绞线共模消除干扰,是因为电平同时变化,电压差不变。 2.1物理层 CAN有三种接口器件

多个节点连接,只要有一个为低电平,总线就为低电平,只有所有的节点都输出高电平时,才为高电平。所谓“线与”。 CAN总线有5个连续性相同的位后,就会插入一个相反位,产生跳变沿,用于同步。从而消除累计误差。 和485、232一样,CAN的传输速度与距离成反比。 CAN总线终端电阻的接法:

特点:低速CAN在CANH和CANL上串入2.2kΩ的电阻;高速CAN在CANH和CANL 之间并入120Ω电阻。为什么是120Ω,因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线。(因为大多数双绞线电缆特性阻抗大约在100~120Ω。) 120欧姆只是为了保证阻抗完整性,消除回波反射,提升通信可靠性的,因此,其只需要在总线最远的两端接上120欧姆电阻即可,而中间节点并不需要接(接了反而有可能会引起问题)。因此各位在使用CAN Omega做CAN总线侦听的时候,大多数情况下是不需要这个120欧姆电阻的,当然,即使当前网络中并没有终端匹配电阻,只要传输线长度不长(比如SysCan360比赛环境中,传输线只有1-2米)CAN节点数量不多的情况下,不要这个120欧姆电阻也完全可以工作,甚至,你接任意电阻都是不会有影响的。因为此时传输线长度和波长还相差甚远,节点不多的情况下,反射波的叠加信号强度也不会很强,因此传输线效应完全可以忽略。 而哪些情况需要呢,主要就是,当使用2个CAN Omega对发或者当前网络中仅有2个CAN设备的时候,此时两个端点最好都加上终端匹配电阻,当然,前面也说过了,传输线长度不长的时候,也可以不需要2端120欧姆电阻,但为了信号完整性考虑,加上这两个电阻才是严谨的。 2个120欧姆电阻的意义在于,使用USB CAN调试某些不带终端电阻的中间节点设备时,有时候CAN总线上没有2个120欧姆电阻通信可能会异常,此时可以接入2个120欧姆电阻作为2个终端电阻来作阻抗匹配,这时候其他端点不应接入任何终端电阻!并且,这2个120欧姆电阻不可用1个60欧姆电阻代替!

CAN总线技术讲解

摘要: 随着工业测控技术和生产自动化技术的不断进步,传统的RS-232、RS-485和CCITTV.24通信技术已不能适应现代化的工业控制需要,而现场总线(Fieldbus)以其低廉的价格、可靠的性能而逐步成为新型的工业测控领域的通信技术。现场总线是应用在生产现场,在微机化测量控制设备之间实现双向串行多节点数字通信的系统,是一种开放式、数字化、多点通信的底层控制网络。汇集了计算机技术、网络通信技术和自动控制技术(3C)的现场总线技术,从20世纪80年代开始发展起来,并逐步在制造业、流程工业、交通、楼宇等方面的自动化系统中得到了广泛的重视和应用。现场总线主要有以下几种类型[1-3]:基金会现场总线(FF)、LonWorks、ProfiBus、CAN、HART,而其中CAN即控制器局域网因为具有高性能、高可靠性以及独特的设计而越来越受到关注,现已形成国际标准,被公认为几种最有前途的现场总线之一。 Abstract: As industrial measurement and control technology and production automation technology advances, the traditional RS - 232, RS - 485 and CCITTV. 24 communication technology can not meet the needs of modern industrial control, and field bus (Fieldbus), with its low price, reliable performance, and gradually become a new kind of communication technology in the field of industrial measurement and control. Field bus is used in production field, between microcomputer-based measuring control equipment to realize the bidirectional serial multi-node digital communication system, is a kind of open, digital, multipoint communication bottom control network. Brings together computer technology, network communication technology and automatic control technology (3 c) field bus technology, developed in the 1980 s, and gradually in the manufacturing and process industries, transportation, building automation system has been widely attention and application. Fieldbus basically has the following several types: [1-3] foundation fieldbus (FF), LonWorks, ProfiBus, CAN, HART, and which CAN namely controller local area network (LAN) because of the high performance, high reliability and unique design is more and more attention, already formed the international standard, is recognized as one of the most promising fieldbus.

车辆CAN总线概述(完整版)解析

一.CAN总线简介 1. CAN总线的发展历史 20世纪80年代初期,欧洲汽车工业的蓬勃发展,车辆电子信息化程度的也不断提高。当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于电子操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线,但是传统的线束式汽车电子系统已经不能满足车辆电子信息功能发展的需求。为了解决这一制约现代汽车电子信息化发展的瓶颈,德国Bosch公司设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上,经过试验,这一总线能够有效解决现代汽车中庞大的电子控制装置之间的通讯,并且能够减少不断增加的信号线。所以在1986年Bosch公司正式公布了这一总线,且命名为CAN总线。 CAN控制器局部网(CAN—Controller Area Network)属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通讯网络,它具有很高的网络安全性、通信可靠性和实时性,简单实用,网络成本低,特别适用于汽车计算机控制系统和环境恶劣、电磁辐射强和振动大的工业环境,因此CAN总线在诸多现场总线中独占鳌头,成为汽车总线的代名词,CAN总线开始进入快速发展时期:1987年Intel公司生产出了首枚CAN控制器(82526)。不久,Philips公司也推出了CAN 控制器82C200; 1991年,Bosch颁布CAN 2.0技术规范,CAN2.0包括A和B两个部分 为促进CAN以及CAN协议的发展,1992在欧洲成立了国际用户和厂商协会(CAN in Automation,简称CiA),在德国Erlangen注册,CiA总部位于Erlangen。CiA提供服务包括:发布CAN的各类技术规范,免费下载CAN文献资料,提供CANopen规范DeviceNet规范;发布CAN产品数据库,CANopen产品指南;提供CANopen验证工具执行CANopen认证测试;开发CAN规范并发布为CiA 标准。 1993 年CAN 成为国际标准ISO11898(高速应用)和ISO11519(低速应用); 1993年,ISO颁布CAN国际标准ISO-11898; 1994年,SAE颁布基于CA N的J1939标准; 2003年,Maybach发布带76个ECU的新车型(CAN,LIN,MOST);

CAN总线教程详解

工作原理 当CAN 总线上的一个节点(站)发送数据时,它以报文的形式广播给网络中所有节点,对每个节点来说,无论数据是否是发给自己的,都对其接收。 每组报文开头的11 位字符为标识符,定义了报文的优先级,这种报文格式成为面向内容的编制方案。同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文,当几个站同时竞争总线读取时,这种配置十分重要。 大体的工作原理我们搞清了,但是根本的协议我们还要花一番功夫。下面介绍一个重要的名词,“显性”和“隐性”:首先CAN 数据总线有两条导线,一条是黄色的,一条是绿色的------分别是CAN_High 线和CAN_Low 线,当静止状态时,这两条导线上的电平一样,这个电平称为静电平,大约为2.5 伏。 这个静电平状态就是隐形状态,也称隐性电平,也就是没有任何干扰的时候的状态称为隐性状态。当有信号修改时,CAN_High 线上的电压值变高了,一般来说会升高至少1V;而CAN_Low 线上的电压值会降低一个同样值,也是1v。 那么这时候,CAN_High 就是 2.5v+1v=3.5v,它就处于激活状态了。而CAN_Low 降为2.5v-1v=1.5v。可以看看这个图 由此我们得到 在隐性状态下,CAN_High 线与CAN_Low 没有电压差,这样我们看到没有任何变化也就检测不到信号。但是在显性状态时,改值最低为2V,我们就可以利用这种变化才传输数据了。所以出现了那些帧,那些帧中的场,那些场中的位,云云。

在总线上通常逻辑 1 表示隐性。而0 表示显性。这些 1 啊,0 啊,就可以利用起来为我们传数据了。利用这种电压差,我们可以接收信号。 一般来说,控制单元通过收发器连接到 CAN 驱动总线上,这个收发器(顾名思义,可发送,可接收)内有一个接收器,该接收器是安装在接收一侧的差动信号放大器。然后,这个放大器很自然地就放大了CAN_High 和CAN_Low 线的电平差,然后传到接收区。如下图 由上图可知,当有电压差,差动信号放大器放大传输,将相应的数据位转化为0。 下面我们进入重点难点-----报文 所谓报文,就是CAN 总线上要传输的数据报,为了安全,我们要给我们传输的数据报编码定一下协议,这样才能不容易出错,所以出现了很多的帧,以及仲裁啊,CRC 效验。这些都是难点。 识别符的概念 识别符顾名思义,就是为了区分不同报文的可以鉴别的好多字符位。有标准的,和扩展的。标准的是11 位,扩展的是29 位。他有一个功能就是可以提供优先级,也就是决定哪个报文优先被传输,报文标识符的值越小,报文具有越高的优先权。 CAN 的报文格式有两种,不同之处其实就是识别符长度不同,具有11 位识别符的帧称为标准帧,而还有29 位识别符的帧为扩展帧,CAN 报文有以下4 个不同的帧类型。分别是:

汽车通信CAN总线详解

CAN总线及应用实例 (1)CAN特点 ●CAN为多主方式工作,网络上任意智能节点均可在任意时刻主动向网络上其他节点发送信息,而不分主从,且无需站地址等节点信息,通信方式灵活。利用这特点可方便地构成多机备份系统。 ●CAN网络上的节点信息分成不同的优先级(报文有2032种优先权),可满足不同的实时要求,高优先级的数据最多可在134,us内得到传输。 ●CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动地退出发送,大大节省了总线冲突仲裁时间。 ●CAN只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式收发数据,无需专门“调度”。 ●CAN的直接通信距离最远可达l 0km(速率5kbp以下):通信速率最高可达Mbps(此时通信距离最长为40m) 。 ●CAN上的节点数主要取决于总线驱动电路,目前可达110个;报文标识符可达2032种(CAN2.0A),而扩展(CAN2.0B)的报文标识符几乎不受限制。 (2)CAN总线协议 CAN协议以国际标准化组织的开放性互连模型为参照,规定了物理层、传输层和对象层,实际上相当于ISO网络层次模型中的物理层和数据链路层。图3.9 为CAN总线网络层次结构,发送过程中,数据、数据标识符及数据长度,加上必要的总线控制信号形成串行的数据流,发送到串行总线上,接收方再对数据流进行分析,从中提取有效的数据。CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码,数据在网络上通过广播方式发送。其优点是可使网络内的节点个数在理论上不受限制(实际中受网络硬件的电气特性限制),还可使同一个通信数据块同时被不同的节点接收,这在分布式控制系统中非常有用。CAN 2.0A版本规定标准CAN的标识符长度为11位,同时在2.0 B版本中又补充规定了标识符长度为29位的扩展格式,因此理论上可以定义2的11次方或2的19次方种不同的数据块。遵循CAN 2.0 B协议的CAN控制器可以发送和接收标准格式报文(11位标识符)或扩展格式报文(29位标识符),如果禁止CAN 2.0B则CAN控制器只能发送和接收标准格式报文而忽略扩展格式的报文,但不会出现错误。每个报文数据段长度为0-8个字节,可满足通常工业领域中控制命令、工作状态及检测数据传送的一般要求。同时,8个字节占用总线时间不长,从而保证了通信的实时性。CAN协议采用CRC检验并提供相应的错误处理功能,保证了数据通信的可靠性。 (3)报文传送和帧结构 CAN总线以报文为单位进行信息传送。报文中包含标识符,它标志了报文的优先权。CAN总线上各个节点都可主动发送。如同时有两个或更多节点开始发送报文,采用标识符ID来进行仲裁,具有最高优先权报文节点赢得总线使用权,而其他节点自动停止发送。在总线再次空闲后,这些节点将自动重发原报文。CAN系统中,一个CAN节点不使用有关系统结构的任何信息。报文中的标识符并不指出报文的目的地址,而是描述数据的含义。网络

(完整版)CAN总线解析

概述 CAN ( Controller Area Network )即控制器局域网,是一种能够实现分布式实时控制的串行通信网络。 想到CAN 就要想到德国的Bosch 公司,因为CAN 就是这个公司开发的(和Intel ) CAN 有很多优秀的特点,使得它能够被广泛的应用。比如:传输速度最高到1Mbps ,通信距离最远到 10KM ,无损位仲裁机制,多主结构。 近些年来,CAN 控制器价格越来越低,很多MCU 也集成了CAN 控制器。现在每一辆汽车上都装有CAN 总线。 个典型的CAN 应用场景: CAN 总线标准 CAN 总线标准只规定了物理层和数据链路层,需要用户来自定义应用层。不同的CAN 标准仅物理层不同。

CAN 收发器负责逻辑电平和物理信号之间的转换,将逻辑信号转换成物理信号(差分电平)或者将物理信号转换成逻辑电平。 CAN 标准有两个,即IOS11898 和IOS11519 ,两者差分电平特性不同。(有信号时,CANH 3.5V,CANL 1.5V ,即显性;没有信号时,CANH 2.5V ,CANL 2.5V ,即隐性) IOS11898 高速CAN 电平中,高低电平的幅度低,对应的传输速度快。 双绞线共模消除干扰,是因为电平同时变化,电压差不变 2.1物理层 CAN 有三种接口器件

多个节点连接,只要有一个为低电平,总线就为低电平,只有所有的节点都输出高电平时, 才 为高电平。所谓“线与” CAN 总线有 5 个连续性相同的位后,就会插入一个相反位,产生跳变沿,用于同步。从而 消 除累计误差。 和 485 、 232 一样, CAN 的传输速度与距离成反比 CAN 总线终端电阻的接法:

相关主题
相关文档
最新文档