微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 详解基于CAN总线的汽车仪表系统设计—CAN报文传输机制

详解基于CAN总线的汽车仪表系统设计—CAN报文传输机制

时间:02-16 来源:3721RD 点击:

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所示:

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top