can报文解析
简要说明
需要查看can通信的报文,并且为了测试方便,需要自己查手册编辑报文进行下发配置测试,因此需要先进行报文的解析,需要结合说明文档对报文内容进行配置,一下是对0x186通道进行说明,该通道的刹车功能的配置通道,我们只需要配置其中的三个关键元素即可使车辆刹车。
#控制通道0x186:
有使用的控制节点如下(Not used in A12除外)
#信号值:
LongCtrlTargetAccel
LongCtrlTargetAccelJerkMinValue
LongCtrlTargetAccelJerkMaxnValue
LongCtrlAccelCtrlReq
LongCtrlModeForBrkSys
MsgCounter
#发送的一帧数据
::uint8_t data[] = {0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //led on
#信号数据位说明
LongCtrlTargetAccel start:0 len:8 data=-1.0F
IFC_MRR_2_MsgCounter start:48 len:4 data=1U-FU
LongCtrlModeForBrkSys start:52 len:3 data=3U
LongCtrlAccelCtrlReq start:55 len:1 data=1U
Checksum start:56 len:8 data=
#数据比特位解析
data[0] [7:0] LongCtrlTargetAccel[7:0]:-1U
data[1] [15:8]
data[2] [23:16] ACCRecpDecel[23:16]
data[3] [31:24] LongCtrlTargetAccelJerkMinValue[30:24]:0 PriCANAvailableSt[31]:1U
data[4] [39:32] LongCtrTargetAccelJerkMaxnValue[38:32]:0 PriCANErrorSt[39]:0
data[5] [47:40]
data[6] [55:48] IFC_MRR_2_MsgCounter[51:48] LongCtrlModeForBrkSys[54:52]=3U LongCtrlAccelCtrlReq[55]
data[7] [63:56] Checksum
#数据配置对比说明
LongCtrlAccelCtrlReq LongCtrlModeForBrkSys IFC_MRR_2_MsgCounter
1 011 1111
0xB1-0xBF
177-191
#配置后的报文
50 00 64 E4 19 00 Bx xx
#数据计算公式
[0] 50:0100 0000 (LongCtrlTargetAccel:-1+5)*20 = 80 = 0x50
[2] 64:0110 0100 (ACCRecpDecel: 100/20)-5 = 0
[3] E4:1110 0100 (LongCtrlTargetAccelJerkMinValue:0+5)*20 =100 = 0x64
[4] 19:0001 1001 (LongCtrTargetAccelJerkMaxnValue:0+5)*5 = 25 = 0x19
#canoe接收报文:
28 00 64 E4 19 00 B0 C6
#代码显示发送报文:
data[0]40
data[1]0
data[2]100
data[3]228
data[4]25
data[5]0
data[6]176
data[7]198
#小端序号:
1100 0110
#大端序号:
0010 0011 1001