CAN学习手记一

发布者:平和梦想最新更新时间:2015-09-10 来源: eefocus关键字:CAN  学习手记 手机看文章 扫描二维码
随时随地手机看文章
题记:

在这信息爆炸的年代,学习一样新的知识,尤其是IT技术的学习,网络是必不可少的。一阵狂搜过后,发现基于CAN总线的介绍确实不少,但是大多好像都雷同了,也许是不断转贴的结果吧。而且这些知识点也都太零散了,让人看了,尤其是初学者有点找不着北的感觉。所以,本着谦虚好学脚踏实地的菜鸟精神,决定把网上搜的,书上看的,再添油加醋的做一番比较系统的整理。算是为学习CAN总线理清思路,快速上手打基础吧。

 

一、什么是CAN总线?

CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。

一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。

 

二、CAN 总线是如何发展的?

  CAN最初出现在80年代末的汽车工业中,由德国Bosch公司最先提出。当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于电子操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线。提出CAN总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。于是,他们设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。1993年,CAN 已成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。

  CAN是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km时,CAN 仍可提供高达50Kbit/s的数据传输速率。

由于CAN总线具有很高的实时性能,因此,CAN已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛应用。

 

三、CAN 总线是如何工作的?

CAN通讯协议主要描述设备之间的信息传递方式。CAN层的定义与开放系统互连模型(OSI)一致。每一层与另一设备上相同的那一层通讯。实际的通讯发生在每一设备上相邻的两层,而设备只通过模型物理层的物理介质互连。CAN的规范定义了模型的最下面两层:数据链路层和物理层。下表中展示了OSI开放式互连模型的各层。应用层协议可以由CAN用户定义成适合特别工业领域的任何方案。已在工业控制和制造业领域得到广泛应用的标准是DeviceNet,这是为PLC和智能传感器设计的。在汽车工业,许多制造商都应用他们自己的标准。

 

7

应用层

最高层。用户、软件、网络终端等之间用来进行信息交换。如:DeviceNet

6

表示层

将两个应用不同数据格式的系统信息转化为能共同理解的格式

5

会话层

依靠低层的通信功能来进行数据的有效传递。

4

传输层

两通讯节点之间数据传输控制。操作如:数据重发,数据错误修复

3

网络层

规定了网络连接的建立、维持和拆除的协议。如:路由和寻址

2

数据链路层

规定了在介质上传输的数据位的排列和组织。如:数据校验和帧结构

1

物理层

规定通讯介质的物理特性。如:电气特性和信号交换的解释



表1 OSI开放系统互连模型

  

CAN能够使用多种物理介质,例如双绞线、光纤等。最常用的就是双绞线。信号使用差分电压传送,两条信号线被称为“CAN_H”和“CAN_L”,静态时均是2.5V左右,此时状态表示为逻辑“1”,也可以叫做“隐性”。用CAN_H比CAN_L高表示逻辑“0”,称为“显形”,此时,通常电压值为:CAN_H = 3.5V 和CAN_L = 1.5V。

 

四、CAN 有哪些特性?

  CAN具有十分优越的特点,使人们乐于选择。这些特性包括:

1、低成本;

2、极高的总线利用率;

3、很远的数据传输距离(长达10Km);

4、高速的数据传输速率(高达1Mbit/s);

5、可根据报文的ID决定接收或屏蔽该报文;

6、可靠的错误处理和检错机制;

7、发送的信息遭到破坏后,可自动重发;

8、节点在错误严重的情况下具有自动退出总线的功能;

9、报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。

 

五、Philips制造的CAN芯片有哪些?

  

类别

型号

备注

CAN微控制器

P87C591

替代P87C592

CAN独立控制器

SJA1000

替代82C200

CAN收发器

PCA82C250

高速CAN收发器

 

PCA82C251

高速CAN收发器

 

PCA82C252

容错CAN收发器

 

TJA1040

高速CAN收发器

 

TJA1041

高速CAN收发器

 

TJA1050

高速CAN收发器

 

TJA1053

容错CAN收发器

 

TJA1054

容错CAN收发器

LIN收发器

TJA1020

LIN收发器

表2 CAN芯片一览表

 

六、CAN总线如何进行位仲裁?

  CSMA/CD是“载波侦听多路访问/冲突检测”(Carrier Sense Multiple Access with Collision Detect)的缩写。

  利用CSMA访问总线,可对总线上信号进行检测,只有当总线处于空闲状态时,才允许发送。利用这种方法,可以允许多个节点挂接到同一网络上。当检测到一个冲突位时,所有节点重新回到‘监听’总线状态,直到该冲突时间过后,才开始发送。在总线超载的情况下,这种技术可能会造成发送信号经过许多延迟。为了避免发送时延,可利用CSMA/CD方式访问总线。当总线上有两个节点同时进行发送时,必须通过“无损的逐位仲裁”方法来使有最高优先权的的报文优先发送。在CAN总线上发送的每一条报文都具有唯一的一个11位或29位数字的ID。CAN总线状态取决于二进制数‘0’而不是‘1’,所以ID号越小,则该报文拥有越高的优先权。因此一个为全‘0’标志符的报文具有总线上的最高级优先权。可用另外的方法来解释:在消息冲突的位置,第一个节点发送0而另外的节点发送1,那么发送0的节点将取得总线的控制权,并且能够成功的发送出它的信息。

 

七、CAN的高层协议

  CAN的高层协议(也可理解为应用层协议)是一种在现有的底层协议(物理层和数据链路层)之上实现的协议。高层协议是在CAN规范的基础上发展起来的应用层。许多系统(像汽车工业)中,可以特别制定一个合适的应用层,但对于许多的行业来说,这种方法是不经济的。一些组织已经研究并开放了应用层标准,以使系统的综合应用变得十分容易。

  一些可使用的CAN高层协议有:

  1、制定组织主要高层协议

  2、CiA CAL协议

  3、CiA CANOpen协议

  4、ODVA DeviceNet 协议

  5、Honeywell SDS 协议

    6、Kvaser CANKingdom协议

 

八、什么是标准格式CAN和扩展格式CAN?

标准CAN的标志符长度是11位,而扩展格式CAN的标志符长度可达29位。CAN 协议的2.0A版本规定CAN控制器必须有一个11位的标志符。同时,在2.0B版本中规定,CAN控制器的标志符长度可以是11位或29位。遵循CAN2.0B协议的CAN控制器可以发送和接收11位标识符的标准格式报文或29位标识符的扩展格式报文。如果禁止CAN2.0B,则CAN 控制器只能发送和接收11位标识符的标准格式报文,而忽略扩展格式的报文结构,但不会出现错误。

  目前,Philips公司主要推广的CAN独立控制器均支持CAN2.0B协议,即支持29位标识符的扩展格式报文结构。

 [page]

九、CAN的报文格式:

(关于这部分内容,对于我下一步要进行编程实验控制CAN总线是很重要的一个知识点。很郁闷的是搜了老半天只看见有文字叙述这部分内容的,不仅说得不系统完整,而且远没有贴图说明来的具体直观。不过还好,搜到了一份E文版的CAN总线资料,再把这个资料详细看了下,再做了整理,还是用图来说明CAN传输的报文格式比较容易理解。老外写的东西确实比国内的好,这个不是我吹出来的,有兴趣下了看看就知道了,见附件下载。)

CAN通信是一种点对多点的传输协议,不是基于地址的传统的点对点传输协议。当一个点传输数据时,总线上的其它点都可以为接受方,它们可以通过ID来作出对总线上传送数据的处理(接收或者丢弃)。并且当数据被正确接收到以后,接收方便会作出应答响应。CAN协议还有一个很实用的功能,就是总线上的任一个节点可以请求其它节点向其发送数据,这被称作远程发送请求(RTR)。除此以外,CAN协议还有一个优点,当总线新加入一个节点进行通信时无需更改原有的程序,新节点只要通过ID就可以知道是接收还是丢弃数据。

CAN协议定义了四种不同的帧。

1、数据帧,这个帧被用于当一个节点把信息传送给系统的任何其它节点。数据帧由7个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结束。

2、远程帧,此帧是基于数据帧格式,只要把RTR位设置成远程发送请求(Remote Transmit Request),并且没有数据场。总线上发送此帧后,表示请求接收与该帧ID相符的数据帧。远程帧由6个不同的位场组成,即帧起始、仲裁场、控制场、CRC场、应答场、帧结束。

3、错误帧,任何单元监测到错误时就发送错误帧。错误帧由两个不同的场组成。第一个场是错误标志,用做为不同站提供错误标志的叠加;第二个场是错误界定符。

4、超载帧,节点需要增加时间来处理接收到的数据时便发送过载帧。超载帧包括两个位场:超载标志和超载界定符。

 

 



 

图1 帧起始位

    CAN总线传输的起始帧如图1。帧起始标志数据帧或远程帧的起始,由一个单独的“显性”位(0)组成。由控制芯片完成。

 

图2 标准数据帧格式

 

 

       
 

图3 扩展数据帧格式

由图2和图3可以看到数据帧的两种不同格式,两种格式的差别只是它们的ID位数不同。

1、帧起始。

2、仲裁场,仲裁场包括标识符和远程发送请求位(RTR)。

  对于CAN2.0A标准,标识符的长度为11位。RTR位在数据帧中必须是显性位,而在远程帧必须为隐性位。

  对于CAN2.0,标准格式和扩展格式的仲裁场不同。在标准格式中,仲裁场由11位标识符和远程发送请求位组成。在扩展格式中,仲裁场由29位标识符和替代远程请求位(SRR)、标志位(IDE)和远程发送请求位组成。

  仲裁场的作用之一是说明数据帧或远程帧发送目的地;之二是指出是数据帧还是远程帧。

3、控制场,控制场由6个位组成,说明数据帧中有效数据的长度。标准帧的最高位是IDE位,扩展帧的最高位是保留位RB1,它们的次高位都是保留位RB0。低四位是DLC(Data Length Code)位,标识传送的数据字节数(0-8字节)。

4、数据场,数据场由数据帧中的发送数据组成。它可以为0-8个字节。

5、CRC场,CRC场包括CRC序列,这部分由SJA1000控制芯片完成。

6、应答场,应答场长度为两个位,包括应答间隙和应答界定符。由SJA1000控制芯片自动完成。

7、帧结束,每一个数据帧和远程帧均由一标志序列界定,这个标志序列由7个“隐性”位组成。这部分由SJA1000控制芯片自动完成。

仲裁场、控制场、数据场由软件编程配置SJA1000完成;帧起始、CRC场、应答场、帧结束由CAN总线控制芯片SJA1000自动完成。

 

十、CAN的数据错误检测:

不同于其它总线,CAN协议不能使用应答信息。事实上,它可以将发生的任何错误用信号发出。CAN协议可使用五种检查错误的方法,其中前三种为基于报文内容检查。

1、循环冗余检查(CRC)

在一帧报文中加入冗余检查位可保证报文正确。接收站通过CRC可判断报文是否有错。

2、帧检查

这种方法通过位场检查帧的格式和大小来确定报文的正确性,用于检查格式上的错误。

3、应答错误

如前所述,被接收到的帧由接收站通过明确的应答来确认。如果发送站未收到应答,那么表明接收站发现帧中有错误,也就是说,ACK场已损坏或网络中的报文无站接收。CAN协议也可通过位检查的方法探测错误。

4、总线检测

有时,CAN中的一个节点可监测自己发出的信号。因此,发送报文的站可以观测总线电平并探测发送位和接收位的差异。

5、位填充

一帧报文中的每一位都由不归零码表示,可保证位编码的最大效率。然而,如果在一帧报文中有太多相同电平的位,就有可能失去同步。为保证同步,同步沿用位填充产生。在五个连续相等位后,发送站自动插入一个与之互补的补码位;接收时,这个填充位被自动丢掉。例如,五个连续的低电平位后,CAN自动插入一个高电平位。CAN通过这种编码规则检查错误,如果在一帧报文中有6个相同位,CAN就知道发生了错误。

如果至少有一个站通过以上方法探测到一个或多个错误,它将发送出错标志终止当前的发送。这可以阻止其它站接收错误的报文,并保证网络上报文的一致性。当大量发送数据被终止后,发送站会自动地重新发送数据。作为规则,在探测到错误后23个位周期内重新开始发送。在特殊场合,系统的恢复时间为31个位周期。

但这种方法存在一个问题,即一个发生错误的站将导致所有数据被终止,其中也包括正确的数据。因此,如果不采取自监测措施,总线系统应采用模块化设计。为此,CAN协议提供一种将偶然错误从永久错误和局部站失败中区别出来的办法。这种方法可以通过对出错站统计评估来确定一个站本身的错误并进入一种不会对其它站产生不良影响的运行方法来实现,即站可以通过关闭自己来阻止正常数据因被错误地当成不正确的数据而被终止。

6、CAN可靠性

为防止汽车在使用寿命期内由于数据交换错误而对司机造成危险,汽车的安全系统要求数据传输具有较高的安全性。如果数据传输的可靠性足够高,或者残留下来的数据错误足够低的话,这一目标不难实现。从总线系统数据的角度看,可靠性可以理解为,对传输过程产生的数据错误的识别能力。

残余数据错误的概率可以通过对数据传输可靠性的统计测量获得。它描述了传送数据被破坏和这种破坏不能被探测出来的概率。残余数据错误概率必须非常小,使其在系统整个寿命周期内,按平均统计时几乎检测不到。计算残余错误概率要求能够对数据错误进行分类 ,并且数据传输路径可由一模型描述。如果要确定CAN的残余错误概率,我们可将残留错误的概率作为具有80~90位的报文传送时位错误概率的函数,并假定这个系统中有5~10个站,并且错误率为1/1000,那么最大位错误概率为10—13数量级。例如,CAN网络的数据传输率最大为1Mbps,如果数据传输能力仅使用50%,那么对于一个工作寿命4000小时、平均报文长度为 80位的系统,所传送的数据总量为9×1010。在系统运行寿命期内,不可检测的传输错误的统计平均小于10—2量级。换句话说,一个系统按每年365 天,每天工作8小时,每秒错误率为0. 7计算,那么按统计平均,每1000年才会发生一个不可检测的错误。

关键字:CAN  学习手记 引用地址:CAN学习手记一

上一篇:CAN总线学习笔记二:CAN自收发程序解读
下一篇:高速隧道LED照明用的现场总线控制系统(FCS)

推荐阅读最新更新时间:2024-05-02 23:57

STM32F4 CubeMX HAL CAN 使用步骤
(这仅仅是一个最简单的CAN示例Demo程序,仅作参考。最新的HAL库CAN的部分有所改变,不能直接使用该文方法。) STM32CubeMX版本: 固件库版本: 第一步分:CubeMX软件配置。 0、工程配置以及芯片选择这里就不再赘述了,最好是勾选为每个外设生成独立的.c源文件。 1、打开CAN外设。 2、配置芯片时钟树。这里我使用了芯片内部HSI RC,主时钟配置为168MHz。 3、CAN配置。 3.1配置波特率为1Mb/s。计算方法:42M/2/(14+6+1)==1M 3.2、使能RX0接收中断。 到这里配置已经完成了,这里我们只配置了部分选项,其余大部分都是采用的默认配置。点击工
[单片机]
STM32F4 CubeMX HAL <font color='red'>CAN</font> 使用步骤
CAN总线网络应用
  前言   现场总线的工业过程智能自动化仪表和现代总线的开放自动化系统构成了新一代全开放自动化控制糸统的体系结构。   目前国际上公认的现场总线有10多种,各有其特点,并在一定范围内得刭应用。 其CAN总线网络是炙手可热的技术,目前它正在工业网络、医疗设备、轨道交通信号、楼宇控制及其它众多系统中得到应用。而本文要对CAN总线网络应用例举及其拓宽的现场总线控制系统(FCS)作其说明。   CAN总线网络   CAN采用多主工作方式,节点之间不分主从,但节点之间有优先级之分,通信方式灵活,可实现点对点、一点对多点及广播方式传输数据,无需调度。也就是说,它可向系统中的所有节点进行报文发送广播,即CAN系统中的每个节点均同时
[嵌入式]
CAN总线及CAN通讯协议
  CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。         一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强
[嵌入式]
意法半导体CAN FD Light多像素驱动器助力下一代汽车照明设计
意法半导体CAN FD Light多像素驱动器助力下一代汽车照明设计 2022 年 10 月 14 日,中国 – 意法半导体的L99LDLH32线性稳流器为使用轻量级 CAN FD Light 协议控制动态汽车照明提供了一个简便的集成解决方案。 OLED 灯可以从很小的表面发射明亮、均匀和高对比度的光线,新驱动器与OLED完美匹配,让设计师能够创造复杂的图案和光效,增强汽车的安全性和外观设计视觉效果。 L99LDLH32有32个可在1mA至15mA范围内独立编程的稳流电源,可以单独驱动车内外灯具的每个像素,还提供8 位分辨率的整体调光功能。当用车辆电池电压供电时,驱动器最高输出电压35 V,覆盖较宽的发射极正向电压范
[汽车电子]
意法半导体<font color='red'>CAN</font> FD Light多像素驱动器助力下一代汽车照明设计
德州仪器推出业界新款集成了CAN FD控制器和收发器的系统基础芯片
2019年6月21日,北京讯——德州仪器(TI)(NASDAQ:TXN)今日推出了业界新款汽车系统基础芯片(SBC)TCAN4550-Q1。该芯片集成了使用灵活数据速率控制器局域网(CAN FD)的控制器和收发器,旨在满足车载网络对高带宽和数据速率灵活性的需求。它采用了几乎所有微控制器的串行外围接口(SPI)总线来部署CAN FD接口或提高系统中CAN FD总线端口的数量,同时最少量地对硬件进行改动。 以往,在升级至或扩展CAN FD功能时,设计师不得不在其设计中整合多个分立的组件或彻底修改微控制器,通常来说这既耗时又成本高昂。借助TCAN4550-Q1系统基础芯片(SBC),设计师能够保有汽车电子和照明、高级驾驶员辅助系统(A
[汽车电子]
经典的CAN总线现场故障
CAN L对带电源(正极)短路 当出现CAN L 对电源(正极)短路这种故障时,根据CAN总线的容错特性,可能出现整个CAN网络无法通信的情况或产生相关故障码。 由于CAN L 对电源短路,因此CAN H 电压也被置于12V。CAN L 对电源短路的总线波形如下图所示。 实际测量CAN导线的电压,若CAN L 和CAN H 导线电压都约为12V,则说明出现此类故障。 故障原因:如果不是CAN L 导线对外部电源短路引起的,那么这种故障就有可能是控制模块内部的CAN收发器损坏造成的。故障查找方法同上。 CAN H断路 当某个控制模块CAN H导线断路时,会导致该控制模块无法实现通信,但其他控制模块的通信还是有的。在其他的控制
[嵌入式]
经典的<font color='red'>CAN</font>总线现场故障
车身控制模块需求分析与具体方案详解 
1 车身控制模块设计要求及安森美半导体解决方案 随着人们对汽车的操控性及舒适性需求不断升高,汽车车身中的电子设备越来越多,如电动后视镜、中控门锁、玻璃升降器、车灯乃至其它更多的高级功能等。 应用环境苛刻的车身控制模块(BCM)对元器件提出了更高的要求。本文探入探讨BCM设计在电源、车身网络及板外大功率负载驱动等多个方面的要求,并比较分析了一些领域中不同方案的优劣势。 安森美半导体针身为全球领先的高性能、高能效硅方案供应商,针对车身控制模块等汽车应用提供具有强固保护特性、高可靠性、低静态电流的解决方案,如电源稳压器、总线收发器、高频收发器、继电器驱动器、预驱动器、电机驱动器、LED驱动器及MOSFET等,帮助设计人员为他们
[嵌入式]
基于CAN的燃气轮机远程监测与诊断系统
    GTD一350燃气轮机是国内首次引进的一个独特设计、带自由涡轮的航空燃气涡轮发动机。它是设计用作Mi2型轻量级直升飞机的动力装置。为了在实验室进一步研究其作为联合动力装置原动机的动态特性,设计远程监测诊断系统是GTD一350燃机安全、可靠运行的重要保证。远程故障诊断技术是在故障诊断技术、计算机技术和网络通信技术发展的基础上,由于工业过程对远程监测与控制的急切需求而迅速发展起来的应用技术。它通过工业局域网/广域网把分布于各个局部现场、独立完成特定功能的设备互联起来,以达到协同工作、集中监测的目的,最大限度地发挥网络的实时性和高效性来完成远程设备的监测与故障诊断。 1 监测诊断系统设计     1.1 监测诊断系统的组
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved