如何通过波形解析can总线数据
来源:互联网 发布:ios屏蔽软件广告 编辑:程序博客网 时间:2024/05/14 14:02
这里的数据使用的是标准的can设备产生的can信号(扩展帧发送数据ID=0x11121181 Data=0x06 0x08)
信号的波形如图1所示,这里示波器的探头接的是CAN_H,探头的夹子接的是CAN_L:
图1 示波器显示波形
首先根据本博客中前面写的一篇如何测量can总线波特率获取总线的波特率,然后依据波特率和上面的波形读出具体的数据
从上面的波形中读取到的数据是
10111011101100011110111001111101011111001111101001111100111101111011011101
根据标准can2.0b协议可以讲该字符串解析出来,标准的扩展协议如图2所示
图2 can扩展消息格式
然后将数据根据格式划分成各个有意义的字段,如图3所示,这里我自己将高电平编码为1,低电平编码为0。但是在can协议中,他将高电平定义为显性位,逻辑上定义为0,将低电平定义为隐形位,逻辑上定义为1,我们前面先不管这个。
图3 数据分割
在can的协议中当连续出现5个高电平时就需要插入一个低电平,所以在解析的过程中需要将这些插入的数据删除,就是图3中用红线删除的那些数据。
在删除这些数据之后根据图2的格式可以将各个字段分割出来
解析信息:
29位ID:0 1110 1110 1101 1110 1110 0111 1110,从右到左每4位一个字段,这里需要将其在转换回can协议定义的逻辑电平的形式---即将0变为1,将1变为0,这样便符合我们日常的编码习惯。解析出来的ID=0x11121181,与我们发送的数据是相符合的。
DLC:1101 转换成十进制为2 表示这一帧中有两个数据,接下来的16个字节便表示2个数据
D1:11111001 = 0x06
D2:11110111 = 0x08
这样便解析出了我们需要的数据,这是和我发送的数据一致的。
这里需要注意的有两点:
1、在can的协议中当连续出现5个高电平时就需要插入一个低电平;
2、在can协议中将CAN_H和CAN_L的差值为高电平时定义为显性,逻辑上表示为0,为低电平时定义为隐形,逻辑上表示为1。这在解码的过程中需要注意。
- 如何通过波形解析can总线数据
- 如何通过波形解析can总线数据
- can总线(三)--如何通过波形解析can总线数据
- can总线(三)--如何通过波形解析can总线数据
- can总线(三)--如何通过波形解析can总线数据
- 软件生成CAN总线,RS422,ARINC429总线物理波形。
- can总线详细解析
- CAN总线帧格式解析
- CAN总线的数据校验
- can总线(二)--如何测量can总线的波特率
- STM32 CAN总线应用程序,调试通过仅供参考
- STM32 CAN总线标识符过滤器难点解析
- SylixOS CAN总线初始化流程解析
- Cotex-M3 LM9S92 CAN总线发送数据
- BeagleBone Black CAN总线读写数据操作
- CAN总线数据帧解码(示波器)
- BeagleBone Black CAN总线读写数据操作
- can 总线 intel、motorola数据填充算法
- 编程小技巧
- 天乙社区用户列表显示分析
- hadoop的集群copy
- git grep简介
- Python版的八皇后问题
- 如何通过波形解析can总线数据
- FusionCharts使用教程:为JavaScript图表提供数据
- jquery DOM使用操作
- ASP.NET页面间传值的几种方式
- 大家帮我看看这个语句怎么写?
- Win32串口编程
- git rebase简介(基本篇)
- GROUP BY 函数
- git rebase简介(高级篇)