can总线四种帧类型(详解CAN总线CAN总线报文格式)
时间:2023-09-12 11:10:22 整理: • 2人看过
CAN总线上传输的信息称为消息。当总线空空闲时,任何连接的单元都可以开始发送新消息。
CAN通信通过以下五种类型的帧进行:
数据帧遥控帧错误帧过载帧帧间隔另外,数据帧和遥控帧有两种格式:标准格式和扩展格式。标准格式有一个11位的标识符(ID),扩展格式有一个29位的ID。
下表显示了各种框架的用途:
近期打算写五篇文章,详细介绍这五类CAN总线报文格式。这篇博文将详细解释CAN数据帧格式,这种格式不容易创建。请喜欢,收藏,支持~
关注微信官方账号:美男玩编程,优先推送最新技术博文~
数据帧由7段组成,如下图所示:
帧起始:表示数据帧开始的段;仲裁段:表示该帧优先级的段,根据仲裁段ID码长度的不同,分为标准帧(CAN 2.0A)和扩展帧(CAN 2.0B);控制段:表示数据的字节数及保留位的段;数据段:数据的内容,可发送0~8个字节的数据;CRC段:检查帧的传输错误的段;ACK段:表示确认正常接收的段;帧结束:表示数据帧结束的段。1、帧起始
帧的开头由一个支配位组成。当总线空空闲时,发送节点发送帧起始,其它接收节点与帧起始位同步。
总线上有两种级别:显式级别和隐式级别。
逻辑线AND在总线上执行时,显式电平的逻辑值为“0”,隐式电平为“1”。
“支配”就是“优先”的意思。只要一个单元输出主导电平,总线就是主导电平。而且,“隐性”就是“包容”。只有当所有单元都输出隐性电平时,总线才是隐性的。(显性层面强于隐性层面。)
2、仲裁段仲裁段用于指定要发送到目的CAN节点的地址,确定要发送的帧类型(是当前发送的数据帧还是远程控制帧),确定要发送的帧格式是标准帧还是扩展帧。
仲裁段在标准格式帧和扩展格式帧中是不同的。标准格式帧的仲裁段由11位标识符和远程传输请求位RTR组成,扩展格式帧的仲裁字段由29位标识符和远程传输请求位RTR组成。
2.1、标准数据帧
标准数据帧基于早期的CAN规范(版本1.0和2.0A),使用11位标识字段。
CAN标准帧的帧信息为11字节,包括帧描述符和帧数据。如下表所列:
前3个字节是帧描述部分。字节1是帧信息,第7位(FF)表示帧格式。在标准帧中,FF=0,第6位(RTR)表示帧类型,RTR=0表示数据帧,RTR=1表示远程帧。DLC表示数据帧中的实际数据长度。
标准数据帧的ID有11位。依次从ID10发送到ID0。禁止高7位全部隐藏(禁止设置:ID=1111111XXXX)。
字节2~3为报文识别码,高11位有效。
字节4~11为数据帧的实际数据,远程帧时间无效。
2.2、扩展数据帧CAN扩展帧的帧信息为13字节,包括帧描述符和帧数据,如下表所示:
前5个字节是帧描述部分。字节1是帧信息,第7位(FF)表示帧格式。在扩展帧中,FF=1,第6位(RTR)表示帧类型,RTR=0表示数据帧,RTR=1表示远程帧。DLC表示数据帧中的实际数据长度。
扩展格式的ID有29位。基本ID从ID28到ID18,扩展ID由ID17到ID0表示。基本ID与标准格式中的ID相同。禁止高7位全部隐藏(禁止设置:基本ID=1111111XXXX)。
字节2~5为报文识别码,高28位有效。
字节6~13为数据帧的实际数据,在远程帧中无效。
3、控制段控制段由六位组成,包括数据长度码和两个预留位,用于将来扩展。标准格式和扩展格式是不同的。
数据长度代码表示数据段中的字节数。数据长度代码为4位,在控制部分发送。数据帧长度中允许的字节数是0、1、2、3、4、5、6、7和8,其他值是非法的。
保留位(r0,r1)必须全部在显式级别发送。但是接收者可以接收显式的、隐式的以及它们的任意组合。
数据长度码(DLC)与数据字节数的对应关系如下表所示:
数据的字节数必须是0~8字节,但接收方并不把DLC = 9~15视为错误。
4、数据段数据段由数据帧中传输的数据组成,可以是0~8个字节,每个字节包含8位。首先发送最高有效位MSB,然后依次发送到最低有效位LSB。
5、CRC段
CRC段是用于检查帧传输错误的帧,由15位CRC序列和1位CRC分隔符组成。
CRC序列是根据多项式生成的CRC值,CRC的计算范围包括:帧起始、仲裁段、控制段、数据段。接收方使用相同的算法计算和比较CRC值,如果不一致,将报告错误。
6、ACK段
ACK段用于确认是否正常接收。它由两位组成:ACK时隙和ACK定界符。
发送单元在ACK段中发送一个2位隐藏位。当接收方正确接收到有效消息时,接收方会在ACK时隙(发送ACK信号)向发送方发送一个“支配”位,表示响应,通知发送单元正常接收结束,称为“发送ACK”或“返回ACK”。
Send ACK/ Return ACK是指在所有既不处于总线关闭状态也不处于睡眠状态的接收单元中,接收到正常消息的单元(发送单元不发送ACK)。所谓正常报文是指不含填充错误、格式错误和CRC错误的报文。
7、帧结束帧尾由每个数据帧和远程帧的标志序列定义,由7个“隐藏”位组成。
,
