(2)仲裁域,这个域表示数据的优先级别。这个域的结构,对标准和扩展的格式是有差别的。

注1:关于ID:
标准格式的ID有11bit,从ID28到ID18被依次发送,禁止高7位全为隐性。(禁止设定:ID=1111111xxxx)。这样总共有(2048-16)个ID能被使用。
扩展格式的ID有29个bit。基本ID从ID28到ID18,扩展ID由ID17到ID0表示,基本ID和标准格式ID相同,禁止高7bit全都为隐性,(禁止设定:基本ID=1111111xxxx)。这样总共有(2048-16)个ID能被使用。
在任何情况下,总线上不可能有多个设备在同一时刻使用同一个ID传输数据帧。
(3)控制域,占6个bit,指示要传输信息的数据字节数,这个域的结构,对标准和扩展的格式是有差别的。如图18所示

注1:保留位(r0,r1),保留位必须以显性电平传送,然而,在接收侧可以接收显性、隐性集任意组合的电平。
注2:数据长度码(DLC),数据长度码与数据的字节对应关系见表7所示。数据的字节数必须是0-8个字节,但接收方对DLC=9-15的情况并不视为错误。

(4)数据域,对标准的或扩展的格式都是一样的。这个域是传输的数据,可以是0到8个字节,字节数载控制域中指明。数据输出开始于MSB。如图19所示:

(5)CRC域,对标准的或扩展的格式都是一样的。这个域用来检查帧是否有传输错误,它由15bit CRC码和一个bitCRC定界符(delimiter)(separating bit分隔bit)

CRC的产生方法是采用下面的多项式:,CRC的计算范围是SOF、仲裁域、控制域、数据域。在接收侧,会对接收到的数据帧的这些域进行CRC计算,如果计算结果与收到的CRC不一致,则表明存在传输错误。
(6)ACK域,是对一帧已被正常接收的一个确认信号,由2个bit组成,一个是ACK的slot,一个是ACK的定界符(delimiter),如图21所示:

注1:发送单元的ACK域,发送单元以隐性bit发送ACK slot和ACK 的delimiter。
注2:接收单元的ACK域,正确接收到信息的接收单元在接收帧的ACK slot里发送一个显性bit,以通知发送单元其已经正确接收完毕,这又称“sending ACK”或“returning ACK”。
“Returning an ACK”:
所有接收单元只要不是处于bus-off或休眠状态,只有正确接收信息的单元才能发送ACK。发送单元并不发送ACK。如果总线上除了发送单元,没有其它单元能接收信息,则No ACK被返回。为了通讯的建立,除了发送单元外,至少需要有一个单元能够接收信息。如果总线上有2个或更多个单元能接收到信息,如果它们中任意一个正常接收到信息,则会有ACK被返回。
(7)帧结束,指示一帧结束,由7个隐性位组成。如图22

1.3 遥控帧
遥控帧是接收单元请求发送单元发送一个信息,遥控帧有6个域组成。如图23显示的那样,除了没有数据域外其它与数据帧的结构是一样的。
(1) 帧开始(SOF):这个域表示数据帧的开始。
(2) 竞争域:这个域表示数据的优先级,具有同样ID的数据帧被请求。
(3) 控制域:这个域表示保留位和数据字节数
(4) CRC域:这个域用于检查帧的传输错误。
(5) ACK域:是对帧已经被正常接收的一个证实。
(6) 帧结束:指示遥控帧的结束

遥控帧和数据帧:
- 遥控帧没有数据域,在仲裁域里的RTR位是隐性电平,而数据帧RTR则为显性的。
- 没有数据的数据帧与遥控帧可以通过RTR为来区分
- 遥控帧的数据长度码的值表示对应请求的数据帧的数据长度码。
- 例如,数据帧可以被各单元用来作为周期连接确认/应答,或者仲裁域本身带有实质性信息。
1.4 错误帧
这个帧用来通知在传输期间发生了一个错误,错误帧由一个错误标志和一个错误定界符组成,错误帧由CAN的硬件来发送。图24显示了错误帧的结构。
(1) 错误标志:有2种错误标志类型:主动错误和被动错误标志
a)主动错误标志:6个显性位
b) 被动错误标志:6个隐性位
(2) 错误定界符:由8个隐性位组成。

注1:错误标志重叠:取决于连接到总线上的各单元检测出错误的时间,错误标志可能一个重叠在另一个上,总共可达12bit长度。
注2:主动错误标志:处于主动错误状态的单元检测出错误时输出的错误标志。
注3:被动错误标志:处于被动错误状态的单元检测出错误时输出的错误标志。
1.5 过载帧
这个帧被接收单元用来通知还没有准备好接收帧。它由一个过载标志和一个过载定界符组成。图25显示了错误帧的结构。

(1) 过载标志:由6个显性位组成,过载标志与错误帧的主动错误标志具有相同的结构。
(2) 过载定界符:由8个隐性位组成,过载定界符与错误帧的错误定界符具有相同的结构。
注1:错误标志重叠:向错误标志一样,取决于时间,过载标志可能一个重叠在另一个上,总共可达12bit长度。
1.6 帧间间隔
这个帧用来隔开数据帧和遥控帧。数据和遥控帧可通过插入帧间间隔与前面传输的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。
过载帧和错误帧前不能插入帧间间隔。如图26所示。

(1)间隔:由3个隐性位组成。在间隔期间如果检测到显性电平,则必须发送过载帧,然而,如果间隔的第3bit是显性电平,间隔被认为是SOF
(2)总线空闲:是隐性电平,长度没有限制(它可以是0bit长)。当总线处于这种状态的时候,总线被认为是自由空闲的,任何单元都可以启动发送信息。
(3)暂停传输(传输暂停期):有8个隐性位组成。只在处于被动错误状态的单元刚发送一个消息后的帧间隔中包含的段。
评论