如何通过波形解析can总线数据

这里的数据使用的是标准的can设备产生的can信号
(扩展帧发送数据ID=0x11121181 Data=0x06 0x08)

信号的波形如图1所示,这里示波器的探头接的是CAN_H,探头的夹子接的是CAN_L:
在这里插入图片描述
从上面的波形中读取到的数据是
10111011101100011110111001111101011111001111101001111100111101111011011101

根据标准can2.0b协议可以讲该字符串解析出来,标准的扩展协议如图2所示
在这里插入图片描述
然后将数据根据格式划分成各个有意义的字段,

如图3所示,这里我自己将高电平编码为1,低电平编码为0。
但是在can协议中,他将高电平定义为显性位,逻辑上定义为0,将低电平定义为隐形位,逻辑上定义为1,我们前面先不管这个。
在这里插入图片描述在can的协议中当连续出现5个高电平时就需要插入一个低电平,
所以在解析的过程中需要将这些插入的数据删除,
就是图3中用红线删除的那些数据。


解析信息:


29位ID

0 1110 1110 1101 1110 1110 0111 1110 从右到左每4位一个字段,
这里需要将其在转换回can协议定义的逻辑电平的形式—即将0变为1,将1变为0,
这样便符合我们日常的编码习惯。
解析出来的ID=0x11121181,与我们发送的数据是相符合的。

DLC

1101 ( 0010 )
转换成十进制为2 表示这一帧中有两个数据,接下来的16个字节便表示2个数据

D1

11111001 ( 0000 0110 ) = 0x06

D2

11110111 ( 0000 1000 ) = 0x08

这样便解析出了我们需要的数据,这是和我发送的数据一致的。



这里需要注意的有两点:

1、在can的协议中当连续出现5个高电平时就需要插入一个低电平;
2、在can协议中将CAN_H和CAN_L的差值为高电平时定义为显性,逻辑上表示为0,为低电平时定义为隐形,逻辑上表示为1。这在解码的过程中需要注意。



本文学自 《如何通过波形解析can总线数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值