您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
(can总线是什么)-汽车can线是哪根怎么找
错误,数据,总线(can总线是什么)-汽车can线是哪根怎么找
发布时间:2016-12-08加入收藏来源:互联网点击:
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)错误帧
用于当检测出错误时向其它单元通知错误的帧。
错误帧的帧结构由错误标志和错误界定符构成。
错误标志:6bit,
错误标志
错误界定符:由8bit的隐性位构成。
4)过载帧
接收单元通知发送单元它尚未完成接收准备。
发送过载帧的两种情况:
1、接收单元条件的制约,要求发送节点延缓下一个数据帧或远程帧的传输。
2、帧间空间(Intermission)的 3 bit 内检测到显性位。
每个节点最多连续发送两条过载帧,过载帧由过载标志和过载界定符(8 个隐性位)构成。
过载帧
数据帧和远程帧比较:
比较
CAN总线仲裁
仲裁优先级:标识符值越小,消息的优先级越高
线与逻辑:只有节点发送的全是隐性,总线电平才表现为隐性
所有发送节点在发送数据的同时,也检测总线上的电平状态,逐位对比总线上电平与自身发送的电平。
1)发 0 出现 1 :报错。2)发 0 出现 0 :继续。3)发 1 出现 1: 继续。4)发 1 出现 0: 竞争失败,转为接收方。发送自检
如下图,竞争失败的C节点会自动在检测到总线空闲的第一时间再次尝试发送。
CAN 节点A和C同时发送数据帧,CAN总线根据优先级仲裁,C失去权力
CAN条件接收
在CAN总线上消息是广播式的,节点可以通过设置控制器中过滤码(Filter Code )和掩码(Mask Code),再检验总线上消息的标识符,来判断是否接收该消息,对于掩码,“1”表示该位与本节点相关,“0”表示该位与本节点不相关。
CAN-BUS数据流程
STM32的can过滤码
位填充
CAN总线采用NRZ编码,没有单独时钟线,优点是效率高,但却不易区分哪里是bit开始,哪里是bit结束。因此为确保在同步通信过程中有足够的电平跳变,规范中应用到位填充机制,即在每连续 5个相同电平后插入1个反相电平,接收节点在收到消息后自动将填充位删除。
数据帧位填充比较图
在帧内除了CRC界定符、ACK域和EOF外,其余部分均应用到位填充机制,在应用到位填充的域,检测到连续6个显性位或隐性位均视为报错。
CAN错误检验
CRC错误
1)在发送消息时,发送节点会根据特定的多项式计算出由数据帧SOF位到数据域最末位的Checksum值,并将该值放在数据帧的CRC域,随着数据帧广播到总线上。
2)接收节点在收到数据后,应用同样的多项式计算Checksum值,并与收到的Checksum值对比。如果两者一致,正常接收;如果不一致,则舍弃该消息,并发送错误帧请求发送节点重传消息。
应答错误(ACK Error)
接收方会在收到消息后在ack应答位给出一个显性电平,如果发送方检测到该位为隐性,则报错。
格式错误(Form Error)
检测出与固定格式的位段相反的格式时所检测到的错误,如检测crc界定符和ack界定符以及eof区域是否出现显性位。
位错误(Bit Error)
比较输出电平和总线电平(不含填充位),当两电平不一样时所检测到的错误。如发送显性位,但总线是隐性位就报错。
填充错误(Stuff Error)
在需要位填充的段内,连续检测到 6 位相同的电平时所检测到的错误。
CAN总线错误检测机制
CAN总线上的每个节点控制器都会检测消息是否出错,如果节点发现消息出错,它将发送错误标志,从而打断总线上正常的数据传输。总线上其它没有发现原始消息错误的节点,在收到错误标志后将采取必要的措施,比如舍弃当前总线上的消息。
CAN节点内部有两种错误状态计数器 :
1)TEC /Transmit Error Counter,发送错误状态计数器,出现一次错误该计数器值 82)REC /Receive Error Counter,接收错误状态计数器,出现一次错误该计数器值 13)消息成功发送或接收一次,对应的 TEC 或 REC 值相应 -1错误计数
CAN规范定义了节点的 3 种错误状态:
1) 主动错误:正常状态,在此状态下,节点可以发送所有类型的帧,包括错误帧;发现错误后会很积极主动地上报错误。2)被动错误:节点可以发送除错误帧以外的所有帧;TEC or REC 计数超过127就进入此状态;此时,该节点发现错误后只会发送6个隐性位,不会把错误广播出去。并且,发送连续帧时,中间必须间隔8bit的延缓时间。3)总线关闭:节点被控制器从总线上隔离;或者TEC大于255,就会进入这个状态,需要重启,或者等待128个11位隐性位电平。下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |