⼀⽂读懂CAN
1、CAN定义
CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串⾏通信协议。在汽车产业中,出于对安全性、舒适性、⽅便性、低功耗、低成本的要求,各种各样的电⼦控制系统被开发了出来。由于这些系统之间通信所⽤的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进⾏⼤量数据的⾼速通信”的需要,1986 年德国博世公司开发出⾯向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进⾏了标准化,在欧洲已是汽车⽹络的标准协议。
CAN两个ISO国际标准:单词不用记下载
1)ISO11898 :定义了通信速率为 125 kbps~1 Mbps 的⾼速 CAN 通信标准,属于闭环总线,传输速率可达1Mbps,总线长度 ≤ 40⽶。
2)ISO11519:定义了通信速率为 10~125 kbps 的低速 CAN 通信标准,属于开环总线,传输速率为40kbps时,总线长度可达1000⽶。
2、种类
CAN总线根据CAN收发器的不同⼜分为3种:
1)⾼速CAN:
a.根据线缆的长度提供从5Kbit/s到1Mbit/s的波特率
b.⾼速CAN⽹络在每个⽹络端点端接⼀个120欧姆的电阻
c.电平静默为2.5V,上下限是3.5V和1.5V
2)容错CAN:
a.提供从5 Kbit/s到125 Kbits/s的波特率
b.显性时则为1V和4V
3)单线CAN:
a.提供从5 Kbit/s到125 Kbits/s的波特率
b.单线CAN的波特率⼀般为33.3KHz
3、⼀般燃油车的CAN⽹络分类
1)PT CAN (PowerTrain CAN ) 动⼒总成CAN总线
2)CH CAN (Chassis CAN) 底盘控制CAN总线
3)Body CAN车⾝控制总线
4)Info CAN ( Infomercial CAN ) 娱乐系统总线
5)DiagCAN ( Diagno CAN ) 诊断控制总线
4、汽车CAN⽹络拓扑图
5、CAN⽹关
CAN⽹关是整个CAN⽹络的核⼼, 控制着整车5条CAN总线的各类信号转发与处理
读86、CAN组成
在实际应⽤中,CAN总线的⼀个帧主要由帧信息,帧ID和帧数据组成。
雅美佳外语1)帧信息:四类,标准数据帧(汽油车、电机)、标准远程帧(少见)、扩展数据帧(⼴⼤柴油车、部分汽油车)、扩展远程帧(少见)。
2)帧ID:是CAN的⼀种“地址”。CAN有个特点是竞争机制,帧ID越⼩越有占⽤总线资源的权利,越会优先发送。DBC⽂件:在车辆⾏业中,如果对车辆CAN总线上的每个帧ID及每个帧数据都做出了标准的解释,形成了⽂件的话,此⽂件为DBC⽂件。
星期英文3)帧数据:与串⼝相⽐,CAN的帧数据只有8个字节,即64个位,不会再多了。但CAN FD作为新型总线解决了仅有8字节这个问题。
4)终端电阻:CAN和RS485⼀样,要在终端减少差分信号的反射,如不在两个终端加电阻,信号会反弹回来影响通讯。终端电阻在CAN总线上要有两个,阻值为120欧姆,并联,最远的两端⼀边⼀个。如果有多个节点的话,终端电阻应适当加⼤。
5)波特率:常见的CAN波特率⼤多都是整数。常见的车辆波特率有500K,250K,125K,100K。
7、CAN标准
CAN标准分为底层标准(物理层和数据链路层)和上层标准(应⽤层)两⼤类。
底层标准:
CAN底层标准都相同,涵盖OSI模型中的物理层和数据链路层,与ISO/OSI模型的对应关系如下图所⽰:
ISO 11898-1:数据链路层协议,描述CAN总线的基本架构,定义不同CAN总线设备在数据链路层通信⽅式
•
ISO 11898-2:⾼速CAN总线物理层协议,最⾼数据传输速率 1Mbps,应⽤为两线平衡式信号(CAN_H, CAN_L)
•
ISO 11898-3:定义低速CAN总线(LS-CAN, Fault-Tolerant CAN)物理层标准,数据传输速率在 5Kbps ~金貂取酒
125Kbps 。Fault-Tolerant是指总线上⼀根传输信号失效时,依靠另外的单根信号也可以通信
•
ISO 11898-4:定义CAN总线中的时间触发机制(Time-Triggered CAN, TTCAN),定义与ISO 11898-1 配合的帧同步实体,实现汽车ECU之间基于时间触发的通信⽅式。七宝外国语小学
上层标准:
涉及到例如流控制、设备寻址和⼤数据块传输控制等,不同应⽤领域或制造商会有不同的做法,没有统⼀的国际标准
8、帧分类
CAN总线定义四种帧类型:
1)数据帧
⽤于发送单元向接收单元传送数据的帧
数据帧的帧结构图:
SOF:表⽰数据帧开始;(1 bit),发出⼀个显性位边沿,⽹络节点以此开始同步
Identifier:标准格式11 bit,扩展格式29 bit包括Ba Identifier(11 bit)和Extended Identifier(18 bit)
,该区段标识数据帧的优先级,数值越⼩,优先级越⾼;
RTR:远程传输请求位,0时表⽰为数据帧,1表⽰为远程帧,也就是说RTR=1时,消息帧的Data Field为空;(1 bit)IDE:(1 bit)标识符扩展位,0时表⽰为标准格式,1表⽰为扩展格式;扩展帧和标准帧格式不同,不能存在于同⼀can⽹络
DLC:数据长度代码,0-8表⽰数据长度为0~8 Byte;(4 bit)
Data Field:数据域;(0~8 Byte)
CRC Sequence(15 bit):
•
校验域,从sof到数据场的所有数据进⾏encode
•
休憩的意思
由发送⽅填
校验算法G(x) = x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1;(15 bit)
DEL:校验域和应答域的隐性界定符;(1 bit)
ACK:(1 bit)
•
应答域,确认数据是否正常接收,所谓正常接收是指不含填充错误、格式错误、 CRC 错误。
•
发送节点将此位为1,由接收⽅进⾏确认,收到消息给出⼀个显性位0
•如果⼀个节点都没有确认收到消息,发送⽅监听此位为隐形位就会报错
SRR:替代远程请求位,在扩展格式中占位⽤,必须为1;(1 bit)
EOF:连续7个隐性位(1)表⽰帧结束;(7 bit)
ITM(3 bit):
•帧间空间,Intermission (ITM),⼜称Interframe Space (IFS),连续3个隐性位,但它不属于数据帧。
•帧间空间是⽤于将数据帧和远程帧与前⾯的帧分离开来的帧。数据帧和远程帧可通过插⼊帧间空间将本帧与前⾯的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。过载帧和错误帧前不能插⼊帧间空间
2)远程帧
⽤于接收单元向具有相同标识符的发送单元请求数据的帧
远程帧与数据帧的帧结构类似,区别:
•
1、数据帧的 RTR 值为“0”,远程帧的 RTR 值为“1”
•
2、远程帧没有数据块
•
3、远程帧的 DLC 块表⽰请求发送单元发送的数据长度
格式图
当总线上具有相同标识符的数据帧和远程帧同时发送时,由于数据帧的 RTR 位是显性的,数据帧将在仲裁中赢得总线控制权
3)错误帧
⽤于当检测出错误时向其它单元通知错误的帧
错误帧的帧结构由错误标志和错误界定符构成
错误标志:
错误界定符:由8bit的隐性位构成
结构图:
4)过载帧
接收单元通知发送单元它尚未完成接收准备
发送过载帧的两种情况:
1、接收单元条件的制约,要求发送节点延缓下⼀个数据帧或远程帧的传输
2、帧间空间(Intermission)的 3 bit 内检测到显性位
每个节点最多连续发送两条过载帧
过载帧由过载标志和过载界定符(8 个隐性位)构成
9、仲裁机制
优先级:标识符值越⼩,消息的优先级越⾼
Wire-AND Bus Logic:只有节点发送的全是隐性,总线电平才表现为隐性
printer广州保健按摩所有发送节点在发送数据的同时,也检测总线上的电平状态,逐位对⽐总线上电平与⾃⾝发送的电平
•
1)nd 0 出现 1 :报错
•
jstl
2)nd 0 出现 0 :继续
•
3)nd 1 出现 1:继续
•
4)nd 1 出现 0:竞争失败,转为接收⽅
竞争失败节点:会⾃动在检测到总线空闲的第⼀时间再次尝试发送。
10、条件接收
消息在CAN总线上是⼴播式的,节点可以通过设置控制器中过滤码(Filter Code )和掩码(Mask Code),再检验总线上消息的标识符,来判断是否接收该消息
对于掩码,“1”表⽰该位与本节点相关,“0”表⽰该位与本节点不相关