CAN历史 注意:ISO 11898-2和ISO 11898-3物理层协议不属于 BOSCH CAN 2.0标准。 2012年,BOSCH发布 CAN FD 1.0 标准(CAN with Flexible Data-Rate),CAN FD定义了在仲裁后使用不同的数据帧结构,从而达到最高 12Mbps 数据传输速率。CAN FD与CAN 2.0协议兼容,可以与传统的CAN 2.0设备共存于同样的网络。 CAN总线电气规格CAN总线采用双线差分传输,两根导线分别为CAN_H、CAN_L,在总线空闲状态下,CAN H和 CAN L的电压为 2.5VCAN 将逻辑“0”定义为显性位,将逻辑“1”定义为隐性位。发送显性位时,CAN H为3.5,CAN L为1.5V,即显性位的差分电压为2V。隐性位传输时CAN H和CAN L均为2.5V,表示隐性位的差分电压为0V。CANH和CANL线的物理端应加120欧的CAN总线终端电阻,以避免任何信号反射。 图1 CAN 总线差分信号 CAN帧类型:帧是一种定义的结构或格式,它在网络内承载有意义的数据(字节)。CAN 有四种帧类型:数据帧、远程帧、错误帧、过载帧。 数据帧包含要传输的实际数据。数据帧由提供有关消息的附加信息的字段组成,即仲裁字段、控制字段、数据字段、CRC 字段、2 位确认字段和帧结束。 有两种类型的数据帧
两种格式的唯一区别是标准帧支持 11 位标识符,扩展帧支持由 11 位标识符和扩展 18 位标识符组成的 29 位标识符。IDE 位在标准帧中为显性,在扩展帧中为隐性。 SOF-在总线空闲时,总线为隐性状态。帧起始由单个显性位构成,标志着报文的开始,并在总线上起着同步作用。 Identifier-也称之为仲裁段,也代表消息优先级 值越低,优先级越高。在CAN2.0A规范中,标识符为11位,而在CAN2.0B中变为了29位。这意味着在2.0B中可以存在更多不同类型的报文,但是也降低了总线的利用率。 RTR - 远程传输请求。它对于数据帧是显性的,对于远程帧是隐性的。 IDE - 单一标识扩展。它对标准帧显性,对扩展帧隐性。 R0 - 保留位。 DLC - 数据长度。定义Data的长度。它是 4bit。 数据 - 要传输的数据,长度由 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)
图4 错误转换状态图 过载帧包含两个字段 Overload flag 和 Overload Delimiter。过载标志由六个显性位组成,后跟由其他节点生成的过载标志。过载定界符由八个隐性位组成。导致传输过载帧的过载条件有: 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.同步段 1)同步段(Synchronization Segment):
2)传播段(Propagation Segment):
3)相位缓冲段1(Phase Buffer Segment1):
4)相位缓冲段2(Phase Buffer Segment2):
采样点
处理位级错误 填充错误 CAN 协议遵循 NRZ 编码进行传输。位间隔之间的逻辑电平不会改变。CAN 需要逻辑电平转换以进行重新同步。因此,在 5 个相同的连续位之后发送 1 位相反的逻辑电平。这称为填充位,接收器识别它。 位错误 发送该位的节点始终监视总线。如果发送器发送的位与总线上的位值不同,则会生成错误帧。 CAN 总线 DB9 引脚排列 CAN 总线通常通过连接器访问 图 6. CAN 总线 DB9 引脚排列 Pin1:保留 |
|