CAN总线是现代汽车常用的总线技术。有了单片机基础,也正在学习双学位课程。来学习下CAN总线,并尝试动手实验。
我是在摩尔吧学习的直播课程。http://www.moore8.com/courses/1356
此博文为笔记。摘录和总结了一些东西
Table of Contents
1 概述和背景
CAN最初是由德国的BOSCH公司为汽车监测、控制系统而设计的。现代汽车越来越多地采用电子装置控制,如发动机的定时、注油控制,加速、刹车控制(ASC)及复杂的抗锁定刹车系统(ABS)等。由于这些控制需检测及交换大量数据,采用硬接信号线的方式不但烦琐、昂贵,而且难以解决问题,采用CAN总线上述问题便得到很好地解决。
1993年CAN 成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。CAN的规范从CAN 1.2 规范(标准格式)发展为兼容CAN 1.2 规范的CAN2.0规范(CAN2.0A为标准格式,CAN2.0B为扩展格式),目前应用的CAN器件大多符合CAN2.0规范。
2 CAN总线布置、结构和基本特点
CAN总线是一种串行数据通信协议,其通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。CAN总线特点如下:
(1)可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活。
(2)网络上的节点(信息)可分成不同的优先级,可以满足不同的实时要求。
(3)采用非破坏性位仲裁总线结构机制,当两个节点同时向网络上传送信息时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据。
(4)可以点对点、一点对多点(成组)及全局广播几种传送方式接收数据。
(5)直接通信距离最远可达10km(速率5Kbps以下)。
(6)通信速率最高可达1MB/s(此时距离最长40m)。
(7)节点数实际可达110个。
(8)采用短帧结构,每一帧的有效字节数为8个。
(9)每帧信息都有CRC校验及其他检错措施,数据出错率极低。
(10)通信介质可采用双绞线,同轴电缆和光导纤维,一般采用廉价的双绞线即可,无特殊要求。
(11)节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上的其他操作不受影响
目前汽车上的网络连接方式主要采用2条CAN:一条用于驱动系统的高速CAN,速率达到500kb/s。主要面向实时性要求较高的控制单元,如发动机、电动机等另一条用于车身系统的低速CAN,速率是100kb/s。主要是针对车身控制的,如车灯、车门、车窗等信号的采集以及反馈。其特征是信号多但实时性要求低,因此实现成本要求低
图为奥迪A4的3条CAN总线
Canbus采用双绞线自身校验的结构,既可以防止电磁干扰对传输信息的影响,也可以防止本身对外界的干扰。系统中采用高低电平两根数据线,控制器输出的信号同时向两根通讯线发送,高低电平互为镜像。并且每一个控制器都增加了终端电阻,已减少数据传送时的过调效应。
3 交互原理
信号电平CAN控制单元信号在收发器内的放大由于数据总线也要布置在发动机舱内,所以数据总线就要遭受各种干扰。在保养时要考虑对地短路和蓄电池电压、点火装置的火花放电和静态放电。在该图的上部可清楚地看到这种传递的效果。由于CAN-High线和CAN-Low线是扭绞在一起的(双绞线),所以干扰脉冲X就总是有规律地作用在两条线上。由于差动信号放大器总是用CAN-High线上的电压(3.5V-X)减去CAN-Low线上的电压(1.5V-X),因此在经过处理后,差动信号中就不再有干扰脉冲了。
图为扰动消除。
4 协议
1.报文
报文以不同的固定报文格式发送,但长度受限。当总线空闲时任何连接的单元都可以开始发送新的报文。
2.信息路由
在CAN系统中,一个CAN节点不使用有关系统结构的任何信息(如站地址)。包含一些重要概念:
系统灵活性——节点可在不要求所有节点及其应用层改变任何软件或硬件的情况下,被接于CAN网络。
成组——由于采用了报文滤波,所有节点均可接收报文,并同时被相同的报文激活。
数据相容性——在CAN网络内,可以确保报文同时被所有节点或者没有节点接收,因此,系统的数据相容性是借助于成组和出错处理达到的。
3.位速率
不同的系统,CAN的速度不同。在一个给定的系统里,位速率是唯一的,并且是固定的。
4.优先权
在总线访问期间,识别符定义一个静态的报文优先权。
5.远程数据请求
通过发送远程帧,需要数据的节点可以请求另一节点发送相应的数据帧。数据帧和相应的远程帧是由相同的识别符命名的。
6.仲裁
只要总线空闲,任何单元都可以开始发送报文。具有较高优先权报文的单元可以获得总线访问权。如果2个或2个以上的单元同时开始传送报文,那么就会有总线访问冲突。仲裁的机制确保了报文和时间均不损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一“隐性”电平而监视的是一“显性”电平(见总线值),那么单元就失去了仲裁,必须退出发送状态。
7.错误检测要进行检测错误,必须采取以下措施:
• 监视(发送器对发送位的电平与被监控的总线电平进行比较)
• 循环冗余检查
• 位填充
• 报文格式检查
8.故障界定
CAN把永久故障和短暂扰动区别开来。故障的节点会被关闭节点能够。
9.总线值
总线有二个互补的逻辑值:“显性”或“隐性”。“显性”位和“隐性”位同时传送时,总线的结果值为“显性”。比如,在总线的“写与”执行时,逻辑0代表“显性”等级,逻辑1代表“隐性”等级。所有的接收器检查报文的连贯性。对于连贯的报文,接收器应答,对于不连贯的报文,接收器作出标志。
10.应答
报文传送由4 种不同类型的帧表示和控制:
数据帧携带数据由发送器至接收器;
远程帧通过总线单元发送,以请求发送具有相同标识符的数据帧;
出错帧由检测出总线错误的任何单元发送;
超载帧用于提供当前的和后续的数据帧的附加延迟。
5 各帧规定
我保存了图片,待上传。总之遵循规范即可。
这个不可能一下子记下来的,详见PDF作为参考手册。
6 常见CAN总线方案IC
7 后记
本次为基础和理论学习,下次开始做一些实验
卧槽,学霸
@Cononico ?????