CAN总线使用总结
控制域:由6个位组成,包括2个保留位(IDE,ro)用于CAN协议扩展,4位数据长度码,允许数据的
长度值为0~8。
数据域:发送缓冲区按照长度码指示的数据长度进行发送,接收的数据同样如此,第一个字节的最高有
效位第一个被发送/接收。
循环冗余校验域(CRC):由CRC序列位(15位)和一个CRC边界符(1个弱位)组成。CRC的范围
包括起始域、仲裁域、控制域、数据域、CRC序列。之所以选用这种帧校验方式,因为:这种CRC码对于
少于127位的帧最佳。
应答域:应答域由发送方发送的两位弱位组成(应答空隙和应答分界位),当接收器正确地接收到有
效的报文时,接收器就会在应答间隙期间(发送ACK信号)向发送器发送一显性位以示应答。因此发送节
点一直监测总线信号以确认网络中至少有一个节点正确接收到发信息。应答分界位是应答域中的第二个弱
位,有此可见,应答空隙两边有两个弱位:CRC分界位和应答分界位。
帧结束域:每一个数据帧或远程帧一串7位的弱位帧结束域结束。
2.远程帧:请求数据
远程帧由6个域组成:起始域、仲裁域、控制域、CRC域、应答域、帧结束域。
远程帧与数据帧不同之处在于:RTR位为高,无数据域。
3.错误指示帧:用于指示传送过程中的错误信息
错误指示帧由两个不同的域组成:第一个域反映来自控制器的错误标志,第二个域为错误分界符。
错误标志:有两种,一个由6个强位组成的主动错误标志;另一个由6个弱位组成的被动错误标志,
它是被其他CAN控制器强位改写。 处于主动错误状态的CAN节点检测到错误发出主动错误标志,该错误标
志不满足位填充规则,或者是破坏应答域或结束域固定格式,所有其他节点都检测到错误状态,并发出该错
误标志。因此,这些从总线上监测到的强位串是不同节点发出错误标志的结果,这一标志最短为6个,最长
为12个。被动错误标志(不太理解。。。后续)
错误分界:它由8个弱位组成,与过载分界有相同的格式,当错误标志发生后,每一个CAN节点监测
总线,直到检测到一个强位出现,这表明所有CAN节点已经完成错误标志的发送,并开始发送8个弱位的分
界符,之后网络上的主动错误节点便可同时开始其他的发送。如果数据帧或远程帧在发送过程中发现错误
后,当前的信息作废,并启动重新发送。如果CAN节点发现错误指示帧错误,则重发,当连续多次出现此错
误时,则相应的节点变为被动错误节点。为正确结束错误标志,被动态节点需要至少3个位周期。
4.过载帧:用于后续帧的延时
过载帧由两个域组成:过载标志和过载分界。
以下情况可以导致过载帧发送:
(1).接收未准备好即接收方需要过多的时间处理当前的数据;
(2).在帧间空隙的第一位或第二位发现显性位信号;
过载帧发送条件:
(1).在帧间空隙域的第一个位周期;
(2).在帧间空隙域中检测到强位信号一个位周期后,方可启动过载帧发送。
过载标志:由6个显性位组成,与错误标志格式相同,当超载标志发生后,每个节点监测总线状态,当发
现线上有弱位后,此时所有节点已完成超载标志的发送,并开始发8个弱位串;
过载分界符:由8个隐性位组成,与错误分界符格式相同;
英飞凌(infineon)单片机XC800之CAN总线
CAN内部硬件结构,如下图所示
一,CAN处理机制
发送:根据报文缓存中的报文对象,由位流处理器产生的通过can总线发送的数据帧和过程帧,即从报
文缓存中取出的报文对象,位流处理器给它加上起始域,结束域和CRC校验数据,组成一个完整的数据帧
和远程帧,此时位流控制器还在对总线进行监测,当发现总线空闲时,就启动数据的传送,传送过程中监测
总线的信息,当发现与传送的信息不相符时,就会产生一个“最近错误”中断请求。
评论