(KEILv5)使用matlab绘制从KEIL memory导出的内存数据

使用matlab绘制从KEIL memory导出的内存数据

如标题,某些时候咱们须要分析keil调试过程当中的数据,好比从I2S、SPI、I2C或者UART获取到的波形数据,这些数据时数字流,经过逻辑分析仪是没有办法直观的观察其波形,所以,咱们须要把数据导出来,经过合适的工具使数据可视化,好比一些规律的波形图。
下面我将提供一种方法供参考数组

高潮来了

第一步:导出数据到本地

KEIL经过ULINK调试STM32时,咱们能够经过keil的memory窗口定位到某一数组的内容,可是数字化的内容没有办法分析,所以咱们能够先把数据导出到本地。
好比以下数组编辑器

uint16_t DATA[1024];//内存地址为0x20000ABC

咱们能够使用以下命令把他导出到本地并保存,须要打开keil的command窗口,在其中输入以下命令:函数

:SAVE D:\DATA.HEX 0X20000ABC,0X20000ABC+1024

SAVE:为命令
D:\DATA.HEX: 保存路径
0X20000ABC:须要导出数组开始地址
0X20000ABC+1024:须要导出数组结束地址工具

这样就能够导出数组数据到本地了,须要注意导出数据的格式是hex386.ui

第二步:处理数据

由于KEIL导出的数据是hex386格式,而且转换后的数据也是不常见的小端模式,须要处理成常见的数据,这儿推荐使用sublime文本编辑器的列编辑快捷键,它能够很方便的进行数据列处理。
其快捷键为:Ctrl+A 而后 ctrl+shift+l,最后就能够经过shift+'<-'键进行复制、粘贴和移动了。调试

第三步:把十六进制数据转换成十进制数据

到此为止,处理的数据都是十六进制,所以须要使用xls转换成十进制数据,须要使用xls自带函数HEX2DECcode

第四步:使用MATLAB绘制波形图

为何不用xls显示波形图呢?数据只有几行的话用xls很方便,可是若是数据量很大并且有几百上千行,你有xls处理将花费很是多的时间。所以用matlab更方便。
matlab首先须要导入数据:内存

data = xlsread('data.xlsx',1,'A1:H254')

原始数据放在data.xlsx中,数据大小为从A到H有254行,8列。参数1表示是第一个sheet.数据可视化

tmp = data(:);

这一句是为了把多维数组转化为一维数组并保存在tmp中。可视化

L = length(tmp);x = 1:L;

获取数据长度。

I = plot(x,tmp);

显示波形图。

以上即完成从keil原始数据到波形图的显示。

相关文章
相关标签/搜索