CAN总线之数据帧篇
谷子
|
2019.12.24
|
0
+关注

CAN有两类数据帧,其本质的不同在于ID的长度。CAN2.0标准中关于ID的规定:2.0A将29位ID视为错误,2.0B Passive仅识别11位ID数据帧,2.0B Active可识别11位和29位两种ID数据帧。标识符为11位的数据帧为标准帧,标识符为29位的数据帧为扩展帧。

下图为数据帧的两种帧格式:

数据帧由7个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结束,其中数据场长度可为0。

1)帧起始(SOF):标志帧的开始。它仅仅由一个显性位构成,只有在总线处于空闲状态时,才允许开始发送。

2)仲裁场:在标准格式中,仲裁场由11位标识符和RTR位组成;在扩展格式中,仲裁场由29位标识符和SRR位、标识位以及RTR位组成。

RTR位(远程传输请求位):在数据帧中,RTR位必须是显性电平,而在远程帧中,RTR位必须是隐性电平。

SRR位(替代传输请求位):在扩展格式中始终为隐性位。

IDE位(标识符扩展位):IDE位对于扩展格式属于仲裁场,对于标准格式属于控制场。IDE位在标准格式中为显性电平,而在扩展格式中为隐性电平。

这里顺便说一下仲裁。通过ID进行非破坏性按位仲裁,遵循“线与”机制,这样显性位(用逻辑0表示)能够覆盖隐性位(用逻辑1表示),ID值越小,报文优先级越高。报文退出仲裁后,进入只听状态,在总线空闲时进行报文重发。下图描述“线与”仲裁机制:从图中可以看出,在标识符的第5位处,节点2和节点3为显性电平,而节点1为隐性电平,根据“线与”机制,此时总线为显性电平,节点1发送隐性电平却检测到显性电平,于是节点1丢失总线仲裁,立刻变为只听模式,并且开始发送隐性位。节点2在RTR位置为隐性位,说明此节点不是标准帧,而是扩展帧,在该位处,节点2 将丢失仲裁,进入只听模式。通过这种方式,优先权高的节点3最终赢得总线仲裁并且开始发送数据。

下图举例说明仲裁为非破坏性仲裁:

3)控制场:由6位组成。在标准格式中,一个信息帧中包括DLC、发送显性电平的IDE位和保留位r0。在扩展格式中,一个信息帧包括DLC和两个保留位r1和r0,这两个位必须发送显性电平。

DLC(数据长度码):数据场的字节数目由数据长度码给出,数据长度码为4位。

4)数据场:由数据帧中被发送的数据组成,可包括0~8字节。

5)CRC场:包括CRC序列和CRC界定符。用于进行CRC校验。

6)应答场:包括2位,即应答间隙和应答界定符。在应答场中发送站发送出两个隐性位。一个正确接收到有效报文的接收器,在应答间隙期间,将此信息通过传送一个显性位报告给发送器。所有接收到匹配CRC序列的站,通过在应答间隙内把显性位写入发送器的隐性位来报告。应答界定符是应答场的第二位,并且必须是隐性位。

7)帧结束:每个数据帧和远程帧均由7个隐性位组成的标志序列界定。

精选留言
延伸阅读
2020.04.03
4749阅读
更多报告干货
写留言
4219
阅读
收藏
回到顶部