例子:
Req:88 18 DA 00 F0 03 22 F1 90 00 00 00 00
001:88 18 DA F0 00 10 14 62 F1 90 57 4D 41
Req:88 18 DA 00 F0 30 00 00 00 00 00 00 00
002:88 18 DA F0 00 21 30 36 58 5A 5A 39 45
003:88 18 DA F0 00 22 4D 36 35 31 33 39 35
CAN BUS报文数据收发的一般格式
设备发命令
byte0(帧信息)
bit7(帧格式)
0 标准帧
1 扩展帧
bit6(帧类型)
0 数据帧
1 远程帧
低四位
数据帧实际的数据长度
byte1/2/3/4(报文识别码,即ID)
byte5(LEN)
此字节后跟着的有效数据有几位
ECU回首帧
1x xx 多帧回复
如 10 14 0x14个数据
11 14 0x0114个数据
设备回流控帧
30 00 00 ... 全部收(第二个00这个字节表示发送多帧时各帧之间最小的时间间隔)
30 01 收一帧
30 02 收两帧
ECU回续发帧
21开始,一直到2F;如果还没发完,就从20重新开始
一直收,直到你发完
现在分析例子数据
Req:88 18 DA 00 F0 03 22 F1 90 00 00 00 00 设备发命令
88:1000 1000(扩展帧,数据帧,8位实际数据长度)
18 DA 00 F0:报文识别码
03:三个字节有效数据
22 F1 90:22(读 ) F1 90(VIN)
001:88 18 DA F0 00 10 14 62 F1 90 57 4D 41 ECU回首帧
88,18 DA F0 00,10 14(0x14),62(0x22 + 0x40) F1 90,57 4D 41
注意:10 14 后的 62 为第一个数据,这里的数据是(标示符 + 真正的数据)
Req:88 18 DA 00 F0 30 00 00 00 00 00 00 00 设备回流控帧
002:88 18 DA F0 00 21 30 36 58 5A 5A 39 45 ECU回续发帧
003:88 18 DA F0 00 22 4D 36 35 31 33 39 35