详解基于CAN总线的汽车仪表系统设计—CAN报文传输机制
扫描二维码
随时随地手机看文章
CAN报文传送
当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的n位字符为标识符(扩展帧格式为29位),定义了报文的优先级。在同一系统中,标识符是唯一的,不可能有两个站发送具有相同标识符的报文 1241。当几个站同时竞争总线读取时,这种配置十分重要。当一个站要向其他站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN 芯片,并处于准备状态;当他收到总线分配时,转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其他站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收处理它。CAN总线以报文为单位进行数据传送,报文的优先级结合在标识符(n位或29位)中,具有最低二进制数的标识符有最高的优先级。总线读取中的冲突可通过位仲裁解决。当几个站同时发送报文时,发送优先级最高的报文的站将获得总线控制权。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部分己经在网络上传送了。所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。
在进行数据传送时,发出报文的单元称为该报文的发送器。该单元在总线空闲或丢失仲裁前恒为发送器。如果一个单元不是报文发送器,并且总线不处于空闲状态,则该单元为接收器。对于报文发送器和接收器,报文的实际有效时刻是不相同的。对于发送器而一言,如果直到帧结束末尾一直未出错,则对于发送器报文是有效的,o如果报文受损,将允许按照优先权顺序自动重发送。为了能同其他报文进行总线访问竞争,总线一旦空闲,重发送立即开始。对于接收器而言,如果知道帧结束的最后一位一直未出错,则对于接收器的报文是有效的。构成一帧的帧起始、总裁场、控制场、数据场CRC序列均借助位填充规则进行编码。当发送器在发送的位流中检测到5位连续的相同数值时,将自动地在实际发送位流中插入一个补码位。数据帧和远程帧的其余位场采用固定格式,不进行填充。出错帧和超载帧同样是固定格式,也不进行位填充。报文中的位流按照非归零(NRz)码方法编码,这意味着一个完整位的位电平要么是“0”要么是“1”。报文传送由4种不同类型的帧表示和控制:数据帧携带数据由发送器送至接收器;远程帧通过总线单元发送,以请求发送具有相同标识符的数据帧;出错帧由检测出总线错误的任何单元发出;超载帧用于提供当前的和后续的数据帧的附加时间延迟。
2.2.6CAN的帧结构
CAN2.OB建立了两种不同的帧格式(适用于数据帧和远程帧):一种是具有n位标识符的 Bas1cCAN(标准帧格式),另一种是具有29位标识符的 PeliCAN。
报文传输有以下4种不同类型的帧:
数据帧 (dataframe):数据帧将数据从发送器传输到接收器;
远程帧 (remoteframe):总线单元发出远程帧,请求发送具有同一标识符的数据帧;
错误帧 (errorframe):任何单元检测到总线错误就发出错误帧;
过载帧 (overioadframe):过载帧用在相邻数据帧或远程帧之间提供附加的延时。
1.数据帧
数据帧由7个不同的位场组成:即帧起始、仲裁场、控制场、数据场、CRC
场、应答场、帧结束。结构如图2一4所示
标准帧格式与扩展帧格式中仲裁和控制域结构不同,其结构分别如下:
图2一5标准格式的帧结构
图2一6扩展格式的帧结构
(1)帧起始 (sOF)标志数据帧和远程帧的起始,它仅由一个“1”构成。只有在总线处于空闲状态时,才允许节点开始发送。所有节点都必须同步于首先开始发送的那个节点的帧起始前沿。
(2)仲裁场由标识一符和远程发送请求位(RTR)组成。仲裁场如图2一7所示:
标识符:标识符的长度为11位,这些位以从高位到低位的顺序发送,发送位为ID.0,其中最高7位(ID.10一ID.4)不能全为“1”。RTR位为“O”代表是数据帧,为“1”代表远程帧。为“0”还是为“1”是由用户填写的。
(3)控制场由6位组成,如下图2一8所示:
(4)数据场由数据帧中被发送的数据组成,它包括O一8个字节,每个字节8位。首先发送的是最高有效位。
(5)CRC场包括CRC序列,后随CRC界定符,CRC场结构如下图2一9所示
(6)应答场(AC均为两位,包括应答间隙和应答界定符,结构如下图2一10
(7)帧结束:每个数据帧和远程帧均由“1111111”7个隐性位组成的标志序列界定
2.远程帧
需要获得数据的节点可以借助于发送一个远程帧来请求对应的节点发送数据给它。远程帧同样存在标准的和扩展的两种格式。在两种格式下,均由6个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场和帧结束。同数据帧相比较,不同的是:远程帧的RTR位是“1”(这须由用户用程序填充)。远程帧不存在数据场。DLC的数据值是独立的,它可以是0一8中的任何数值。远程帧的组成如下图2一11所示:[!--empirenews.page--]
3、出错帧
出错帧由两个不同场组成,第一个场由来自个站的错误标志叠加得到,后随的第二个是出错界定符。出错帧的组成如下图2一12所示:
4、超载帧
超载帧包括两个位场;超载标志和超载界定符,其组成如下图2一13所示
5、帧间空间
数据帧和远程帧同前面的帧相同,不管是何种帧(数据帧、远程帧、出错
帧和超载帧)均被称为帧间空间的位场分开。帧间空间包括间歇场和总线空闲
场,对于“错误认可”节点还有暂停发送场。对于非”错误认可“的接收器,
其帧空间如下图2一14所示:
2.2.7CAN数据错误监测
CAN协议可使用五种检查错误的方法,其中前三种为基于报文内容检查。
1.循环冗余检查(CRC):在一帧报文中加入冗余检查位可保证报文正确。接收站通过cRc可判断报文是否有错【25]。其工作原理如下:
(5).根据R(x)和R‘(x)是否相等来判断传输是否出错,如果计算余数多项式和接收余项多项式相等,则数据传输无差错,如果不等,则表明出现了错误,由发送方重新发送数据,知道数据传送正确为止。
2.帧检查:这种方法通过位场检查帧的格式和大小来确定报文的正确性,用于检查格式上的错误。
3.应答错误:被接收到的帧由接收站通过明确的应答来确认。如果发送站未收到应答,那么表明接收站发现帧中有错误,也就以错误类型和界定是说,ACK场己损坏或网络中的报文无站接收。
4.总线检测:CAN中的一个节点可监测自己发出的信号。因此,发送报文的站可以观测总线电平并探测发送位和接收位的差异。
5.位填充:如果在一帧报文中有太多相同电平的位,就有可能失去同步。为保证同步,在五个连续相等位后,发送站自动插入一个与之互补的补码位;接收时,这个填充位被自动去掉。例如,五个连续的低电平位后,CAN自动插入一个高电平位。CAN过这种编码规则检查错误,如果在一帧报文中有6个相同位,CAN就知道发生了错误。