当前位置: 附加器 >> 附加器优势 >> CAN总线详解附下载
CAN历史
年,BOSCH开始着手开发CAN总线;年,在SAE会议上,CAN总线正式发布;年,Intel和Philips推出第一款CAN控制器芯片;年,奔驰E是世界上第一款基于CAN总线系统的量产车型;年,Bosch发布CAN2.0标准,分CAN2.0A(11位标识符)和CAN2.0B(29位标识符);年,ISO发布CAN总线标准(ISO),随后该标准主要有三部分:ISO-1:数据链路层协议ISO-2:高速CAN总线物理层协议ISO-3:低速CAN总线物理层协议注意:ISO-2和ISO-3物理层协议不属于BOSCHCAN2.0标准。
年,BOSCH发布CANFD1.0标准(CANwithFlexibleData-Rate),CANFD定义了在仲裁后使用不同的数据帧结构,从而达到最高12Mbps数据传输速率。CANFD与CAN2.0协议兼容,可以与传统的CAN2.0设备共存于同样的网络。
CAN总线电气规格CAN总线采用双线差分传输,两根导线分别为CAN_H、CAN_L,在总线空闲状态下,CANH和CANL的电压为2.5VCAN将逻辑“0”定义为显性位,将逻辑“1”定义为隐性位。发送显性位时,CANH为3.5,CANL为1.5V,即显性位的差分电压为2V。隐性位传输时CANH和CANL均为2.5V,表示隐性位的差分电压为0V。CANH和CANL线的物理端应加欧的CAN总线终端电阻,以避免任何信号反射。
图1CAN总线差分信号
CAN帧类型:帧是一种定义的结构或格式,它在网络内承载有意义的数据(字节)。CAN有四种帧类型:数据帧、远程帧、错误帧、过载帧。
数据帧数据帧包含要传输的实际数据。数据帧由提供有关消息的附加信息的字段组成,即仲裁字段、控制字段、数据字段、CRC字段、2位确认字段和帧结束。
有两种类型的数据帧
标准帧格式
扩展帧格式
两种格式的唯一区别是标准帧支持11位标识符,扩展帧支持由11位标识符和扩展18位标识符组成的29位标识符。IDE位在标准帧中为显性,在扩展帧中为隐性。
基本帧格式:SOF-在总线空闲时,总线为隐性状态。帧起始由单个显性位构成,标志着报文的开始,并在总线上起着同步作用。
Identifier-也称之为仲裁段,也代表消息优先级值越低,优先级越高。在CAN2.0A规范中,标识符为11位,而在CAN2.0B中变为了29位。这意味着在2.0B中可以存在更多不同类型的报文,但是也降低了总线的利用率。
RTR-远程传输请求。它对于数据帧是显性的,对于远程帧是隐性的。
IDE-单一标识扩展。它对标准帧显性,对扩展帧隐性。
R0-保留位。
DLC-数据长度。定义Data的长度。它是bit。
数据-要传输的数据,长度由DLC决定。
CRC-CRC又称循环冗余码校验,是检查帧传输错误的帧。由15个位的CRC顺序和1个位的CRC界定符组成,其CRC的计算范围包括帧起始、仲裁段、控制段、数据段。
ACK-用于接收节点确认是否正常接收,由ACK槽和ACK界定符组成。
EOF-帧结束,由连续的7个隐性位组成。
IFS-帧间隔。它包含控制器将正确接收的帧移动到其正确位置所需的时间。
图3扩展帧格式
它与标准帧相同,但有一些附加字段。
SRR-替代反向请求。如果两个消息具有相同的11位标识符,则SRR位始终作为隐性位传输,以确保标准数据帧与扩展数据帧相比具有高优先级。除了11位标识符之外,它还包含一个18位标识符。
r1-保留位。
远程帧远程帧类似于数据帧,但有两个不同之处。远程帧由接收器发送以向发送器请求数据。远程帧和数据帧之间的区别在于远程帧中不包含任何数据字段,因为它不用于数据传输。第二个区别是仲裁字段中的RTR位对于远程帧是隐性的。由于数据帧中的显性RTR位,如果两者都准备好同时发送,则数据帧将赢得仲裁。
错误帧如果发送或接收节点检测到错误,它将立即停止发送并发送一个错误帧,该帧由一个由6个显性位组成的错误标志和由8个隐性位组成的错误标志定界符组成。
错误标志:
1.主动错误标志
2.被动错误标志
活动错误标志:当在CAN网络上检测到错误时由节点传输
被动错误标志:当在CAN网络上检测到主动错误时由节点传输。
错误计数器:如果在总线上检测到错误,则TEC或REC计数增加。
1.传输错误计数器(TEC)
2.接收错误计数器(REC)
当TEC和REC小于时,发送一个主动错误帧
当TEC或REC大于小于时,发送被动帧
当TEC大于时,节点进入总线关闭状态,此时无帧传输
图错误转换状态图
过载帧过载帧包含两个字段Overloadflag和OverloadDelimiter。过载标志由六个显性位组成,后跟由其他节点生成的过载标志。过载定界符由八个隐性位组成。导致传输过载帧的过载条件有:
1.当接收方需要下一帧的延迟时。
2.在间歇期间检测到显性位时。
仲裁仲裁是一种在多个节点同时准备传输消息时解决冲突的机制。只要总线空闲,任何节点都可以传输数据。如果多个节点准备同时传输数据,则对总线的访问会发生冲突,可以通过使用标识符进行仲裁来解决。在仲裁过程中,每个发送器都会将传输的位值与总线上的位值进行比较。如果位值相同,则节点继续传输位。如果传输的位值与总线值不同,则显性位会覆盖隐性位。
CAN消息的仲裁字段由1位或29位标识符和RTR位组成。具有最低值的标识符具有最高优先级。如果数据帧和远程帧具有相同的标识符并且同时准备发送数据,则数据帧具有高优先级,因为远程传输位(RTR)在数据帧中是显性的,而在远程帧中是隐性的。
消息级CAN总线错误控制机制与其他协议相比,CAN协议是健壮的。如果检测到错误,则通过这些机制,节点传输错误帧并销毁传输的帧。
CRC错误
发送节点在发送CAN报文(数据帧或遥控帧)时,会对帧起始、仲裁段、控制段、数据段进行CRC计算,并将计算的结果放置在CRC段。接收节点在接收报文时对相同的段执行相同的CRC算法,如果计算结果与CRC段的数据不同,则接收节点检测出CRC错误。
ACK错误
节点在发送报文(数据帧或遥控帧)时,如果接收节点成功接收报文,那么接收节点会在ACK槽对应的时间段内向总线发送一个显性位,告知发送节点报文已正常接收。当发送节点在ACK槽时间内没有回读到显性位,则发送节点检测到ACK错误。
格式错误
报文中,固定形式的位场含有1个或多个非法位,包括数据帧或遥控帧的CRC界定符、ACK界定符、EOF、错误帧界定符、过载帧界定符,则节点检测为格式错误。
位时序CAN总线的每一位分为四段。每个段由TQ组成。细分:
1.同步段2.传播段3.相位段1.相位段2
图5CAN位时序1)同步段(SynchronizationSegment):
长度固定,1个时间量子Tq;
一个位的传输从同步段开始;
同步段用于同步总线上的各个节点,一个位的跳边沿在此时间段内。
2)传播段(PropagationSegment):
传播段用于补偿报文在总线和节点上传输时所产生的时间延迟;
传播段时长≥2×报文在总线和节点上传输时产生的时间延迟;
传播段时长可编程(1~8个时间量子Tq)。
3)相位缓冲段1(PhaseBufferSegment1):
用于补偿节点间的晶振误差;
允许通过重同步对该段加长;
在这个时间段的末端进行总线状态的采样;
长度可编程(1~8个时间量子Tq)
)相位缓冲段2(PhaseBufferSegment2):
用于补偿节点间的晶振误差;
允许通过重同步对该段缩短;
长度可编程(1~8个时间量子Tq)
采样点
位周期内的采样点决定了CAN总线电压是隐性还是显性。
以位周期的百分比表示,位置是从位周期的起点计算的,位于阶段1和阶段2之间。
处理位级错误
填充错误
CAN协议遵循NRZ编码进行传输。位间隔之间的逻辑电平不会改变。CAN需要逻辑电平转换以进行重新同步。因此,在5个相同的连续位之后发送1位相反的逻辑电平。这称为填充位,接收器识别它。
位错误
发送该位的节点始终监视总线。如果发送器发送的位与总线上的位值不同,则会生成错误帧。
CAN总线DB9引脚排列
CAN总线通常通过连接器访问
图6.CAN总线DB9引脚排列
Pin1:保留Pin2:CAN_LPin3:CANGNDPin:保留Pin5:CAN_SHLDPin6:GNDPin7:CAN_HPin8:保留Pin9:CAN_V+
仅需将此文分享至朋友圈,集20个赞,并截图通过后台发至小编,即可获得下载链接。推荐阅读
关于总线时间同步的理解
一文详解奥迪e-tron内部系统
附下载
ID.3和大众的电气化平台
附下载
一文详解CAN总线错误帧
附下载
DoIP协议介绍,资料分享!
详解车载网络OTA系统的开发
文末附下载
一文了解汽车嵌入式AUTOSAR架构
附下载
特斯拉Autopilot系统安全研究
附dbc下载
分享不易,恳请点个预览时标签不可点收录于话题#个上一篇下一篇