图文教学读懂can报文

can报文协议是汽车工程最基础的知识点。


DBC协议

can有两种定义:Intel格式与Motorola格式,主要的区别是能不能跨字节,我们用主流的摩托摩拉格式

以一个报文ID 0x121为例,他的解析如下
图文教学读懂can报文
你需要列一个下面的表格
横坐标代表位(bit),使用2进制
纵坐标代表字节(byte),一个字节等于8位,它通常被写成两个16进制数的形式,即我们常见的报文数据

7 6 5 4 3 2 1 0
0 7 <- - - - - - 0
1 15 <- - - - - - 8
2 23 16
3
4
5
6
7

以电池组总电压这条来说

占16个位(bit)

即两个字节 比如电压是30v 转化成16进制就是0x0BB8 算成10进制是3000(精度0.01)二进制是0000 1011 1011 1000

填在表中就是

7 6 5 4 3 2 1 0
0 0 0 0 0 1 0 1 1
1 1 0 1 1 1 0 0 0

起始位是8,终值位是7

注意位的ID是从右往左读的! 所以从上图可以看到 从低位到高位即是从8->15,再从0->7 这就变成了所谓的8>7了
7 <-- 0
15 <-- 8