如標題,某些時候咱們須要分析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);
顯示波形圖。