1.四种报文类型(简洁明了)
请记住对于CAN报文来说,可以通过识别每条CAN的首个字节来确定它的类型,4种:
 单帧 0
 首帧 1
 连续帧 2
 流控帧 3
 
2. 单帧(SF,Single Frame)
0X 单帧首个字节:0(4bit)+ Data Length(4bit),控制信息占用1个字节
 
 举例:
报文:01 B0 00 00 00 00 00 00
解析:
 0:这是个单帧
 1:有1个有效字节就是B0
 剩下的自动填充
3.首帧(FF,First Frame)
1X XX前两个字节为1(4bit)+ Data Length(12bit),控制信息共占用2个字节。
 
 数据长度最大:111111111111=2的12次方-1=4095 此时报文格式1F FF
 举例:
报文:10 0C 70 07 04 C7 6E D2
解析:
 1:这是个首帧
 00C:代表着数据长度为12个字节
 剩余的都是数据,因为DLC=8字节,所以首帧还可以带6个数据字节,剩余的6个数据怎么办呢?看流控帧
4.流控帧(FC,Flow Control)
3X 流控帧:前三个字节为FC :3(4bit)+流状态(FS,4bit)+块大小(BS,8bit)+最小间隔时间(STmin,8bit),控制信息共占用三个字节。
 
 FC:3才能代表着这是流控帧
FS:
 0:继续发送,Continue To Send(CTS)可无限发送
 1:为Wait(WT)
 2:为Overflow(OVFLW)
BS: 块大小,允许一次发送连续帧CF的个数。如果BS = 0,代表在数据传输的时,接收端不再发送流控帧了。发送端应当连续不断的发送数据,可无限制发送。
STmin: 上一个连续帧的确认接收(ACK)到新的连续帧开始发出的最小间隔时间
 
 举例:
报文:30 08 02 00 00 00 00 00
解析:
 3:这是个流控帧
 0:继续发送流控帧
 08:允许一次发送数据块的数量是8
 02:间隔时间是2ms
5. 连续帧(CF,Consecutive Frame)
2X 连续帧:第一个字节为2+SN(最多16个SN,溢出后从0开始重新计数),控制信息占用1个字节。
 
 需要注意的是,首帧虽然没有SN的区域,但是在首帧也占一个SN,因此首帧之后的连续帧需要从1开始计数。
 第一个连续帧自然是0x21,之后一直到0x2F,下一个是0x20,循环。
 举例:
报文:
21 E0 C4 89 CB 7B 78 68
22 47 14 DD 30 3C FE D1
解析:
 2:代表着连续帧
 1,2,3,4,5…F,1,2:序列
6.传输格式及其实例

 
 这些报文看起来是不是熟悉多了。
7.总结
现在真的只想吃现成的,越快的掌握看懂才爽,所以不写太多文字,只把比较主要的标注一下。个人学习使用。
 这个写的非常好,超级推荐更深入一点的朋友


















