世纪电源网社区logo
社区
Datasheet
标题
返回顶部
讨论

CAN总线学习笔记:CAN总线的相关概念

[复制链接]
查看: 1378 |回复: 0
1
xinkaishi
  • 积分:392
  • |
  • 主题:83
  • |
  • 帖子:98
积分:392
LV4
初级工程师
  • 2017-10-19 14:40:44
CAN总线学习笔记: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位标识符的扩展格式报文结构。
九、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、帧起始。

热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦8层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)82437996 /(138 2356 2357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2024 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348号-2   津公网安备 12010402000296号