微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > CAN总线基础知识(三)

CAN总线基础知识(三)

时间:12-15 来源:互联网 点击:

1.CAN协议

1.1 帧类型

通讯时使用下面5个类型的帧:

数据帧

遥控帧

错误帧

过载帧

帧间空隙

在所有这些帧中,数据帧和遥控帧由用户设置,而其它帧则由CAN硬件设置。

数据和遥控帧有两种格式:标准和扩展格式。标准格式有11bit的ID,而扩展格式则是29bit的ID。

每个帧的用处见表6,每个帧的结构见图10到图14

表6 帧类型和每种类型帧的作用

2.2 数据帧

数据帧由发送单元使用,用来发送信息给接收单元,这是用户操作的基本帧。

数据帧有7个域组成。图15显示了数据帧的结构。

(1)帧开始(SOF):这个域表示数据帧的开始。

(2)仲裁域:这个域表示一个帧的优先级

(3)控制域:这个域表示保留位和数据字节数

(4)数据域:这是数据内容,0-8个字节的数据能被发送

(5)CRC域:这个域用于检查帧的传输错误。

(6)ACK域:是对帧已经被正常接收的一个证实。

(7)帧结束:指示数据帧结束

(1)帧开始(SOF),对标准的或扩展的格式都是一样的。它指示一帧的开始,由1bit的显性位组成。

显性电平和隐性电平:

总线上的电平有显性电平和隐性电平两种。

总线上执行逻辑上的线“与”时,显性电平的逻辑值为“0”,隐性电平为“1”。

“显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平,并且,“隐性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强)

(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域:是对帧已经被正常接收的一个证

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

网站地图

Top