CAN总线协议的报文帧结构形式

网络 网络管理
对于CAN总线协议的报文帧结构形式,下文进行了具体的讲解。那么它的帧结构主要包括七个部分:帧起始、仲裁域、控制域、数据域CRC域、应答域和帧结尾。

通过我们的讲解,不知道大家对CAN总线协议这部分内容了解多少了呢?前面我们已经简单得介绍了CAN总线协议的报文格式。现在我们再来讨论一下有关CAN总线协议的报文帧结构的具体形式。希望能对大家有所帮助。

CAN总线协议的报文帧结构形式

在报文传输时,不同的帧具有不同的传输结构,下面将分别介绍四种传输帧的结构,只有严格按照该结构进行帧的传输,才能被节点正确接收和发送。

(1)数据帧由七种不同的位域(Bit Field)组成:帧起始(Start of )、仲裁域(Arbitration Field)、控制域(Control Field)、数据域(DataField)、CRC域(CRC Field)、应答域(ACK Field)和帧结尾(End of )。数据域的长度可以为0~8个字节。

1)帧起始(SOF):帧起始(SOF)标志着数据帧和远程帧的起始,仅由一个“显性”位组成。在CAN的同步规则中,当总线空闲时(处于隐性状态),才允许站点开始发送(信号)。所有的站点必须同步于首先开始发送报文的站点的帧起始前沿(该方式称为“硬同步”)。

2)仲裁域:仲裁域由标识符和RTR位组成,标准帧格式与扩展帧格式的仲裁域格式不同。标准格式里,仲裁域由1l位标识符和RTR位组成。标识符位有ID28~IDl8。扩展帧格式里,仲裁域包括29位标识符、SRR位、IDE(Identifier Extension,标志符扩展)位、RTR位。其标识符有ID28~IDO。为了区别标准帧格式和扩展帧格式,CANl.0~1.2版本协议的保留位r1现表示为IDE位。IDE位为显性,表示数据帧为标准格式;IDE位为隐性,表示数据帧为扩展帧格式。在扩展帧中,替代远程请求(Substitute Remote Request,SRR)位为隐性。仲裁域传输顺序为从最高位到最低位,其中最高7位不能全为零。RTR的全称为“远程发送请求(Remote TransmissionRequest)”。RTR位在数据帧里必须为“显性”,而在远程帧里必须为“隐性”。它是区别数据帧和远程帧的标志。

3)控制域:控制域由6位组成,包括2个保留位(r0、r1同于CAN总线协议扩展)及4位数据长度码,允许的数据长度值为0~8字节。

4)数据域:发送缓冲区中的数据按照长度代码指示长度发送。对于接收的数据,同样如此。它可为0~8字节,每个字节包含8位,首先发送的是MSB(最高位)。

5)CRC校验码域:它由CRC域(15位)及CRC边界符(一个隐性位)组成。CRC计算中,被除的多项式包括帧的起始域、仲裁域、控制域、数据域及15位为0的解除填充的位流给定。此多项式被下列多项式X15+X14+X10+X8+X7+X4+X3+1除(系数按模2计算),相除的余数即为发至总线的CRC序列。发送时,CRC序列的最高有效位被首先发送/接收。之所以选用这种帧校验方式,是由于这种CRC校验码对于少于127位的帧是最佳的。

6)应答域:应答域由发送方发出的两个(应答间隙及应答界定)隐性位组成,所有接收到正确的CRC序列的节点将在发送节点的应答间隙上将发送的这一隐性位改写为显性位。因此,发送节点将一直监视总线信号已确认网络中至少一个节点正确地接收到所发信息。应答界定符是应答域中第二个隐性位,由此可见,应答间隙两边有两个隐性位:CRC域和应答界定位。

7)帧结束域:每一个数据帧或远程帧均由一串七个隐性位的帧结束域结尾。这样,接收节点可以正确检测到一个帧的传输结束。

(2)错误帧错误帧由两个不同的域组成:第一个域是来自控制器的错误标志;第二个域为错误分界符。

1)错误标志:有两种形式的错误标志。

①激活(Active)错误标志。它由6个连续显性位组成。

②认可(Passive)错误标志。它由6个连续隐性位组成。

它可由其他CAN总线协议控制器的显性位改写。

2)错误界定:错误界定符由8个隐性位组成。传送了错误标志以后,每一站就发送一个隐性位,并一直监视总线直到检测出1个隐性位为止,然后就开始发送其余7个隐性位。

(3)远程帧 远程帧也有标准格式和扩展格式,而且都由6个不同的位域组成:帧起始、仲裁域、控制域、CRC域、应答域、帧结尾。与数据帧相比,远程帧的RTR位为隐性,没有数据域,数据长度编码域可以是0~8个字节的任何值,这个值是远程帧请求发送的数据帧的数据域长度。当具有相同仲裁域的数据帧和远程帧同时发送时,由于数据帧的RTR位为显性,所以数据帧获得优先。发送远程帧的节点可以直接接收数据。

(4)过载帧 过载帧由两个区域组成:过载标识域及过载界定符域。下述三种状态将导致过载帧发送:

1)接收方在接收一帧之前需要过多的时间处理当前的数据(接收尚未准备好);

2)在帧空隙域检测到显性位信号;

3)如果CAN节点在错误界定符或过载界定符的第8位采样到一个显性位节点会发送一个过载帧。

责任编辑:佟健 来源: hi.baidu
相关推荐

2010-06-08 16:35:24

LIN总线协议

2010-06-08 15:45:47

CAN总线协议

2010-06-08 15:55:14

CAN总线协议

2010-07-01 16:52:19

CAN总线协议

2010-06-08 16:00:34

CAN总线协议

2010-06-28 13:52:29

SNMP协议数据

2014-06-19 14:48:03

TCP

2010-06-08 15:35:55

CAN总线协议

2010-06-24 13:04:13

ICMP协议

2024-02-20 10:39:17

综合布线CAN总线

2010-07-06 16:02:30

HART协议

2023-06-08 15:27:17

CAN网络

2010-07-08 12:42:34

UDP协议

2010-06-09 11:05:28

SPI总线协议

2010-06-08 16:55:46

CANopen总线协议

2010-06-08 16:31:16

LIN总线协议

2014-07-04 10:26:40

IP数据报网络协议

2015-04-01 10:22:06

WebSocket网络协议WebSocket协议

2010-06-08 16:52:38

CANopen总线协议

2010-06-17 23:38:17

CANopen总线协议
点赞
收藏

51CTO技术栈公众号