如标题,某些时候咱们须要分析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
为何不用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);
显示波形图。