資料視覺化一詞緣於python的流行,在python中有諸如pyecharts,matplotlib等工具庫可以呼叫,將一堆資料繪製成形象的圖表,比如條形圖,餅圖等等,可以一眼就看出資料的變化趨勢。
在嵌入式開發過程中,也有大量的感測器資料需要分析,這些資料在除錯過程中都是由串列埠傳送到串列埠助手檢視,可是,面對串列埠助手裡一行行的資料,真的可以分析出問題嗎?
串列埠傳送的資料都是以時間點為單位的,即每個時間點傳送乙個資料,這樣的資料,如何做到視覺化?顯然,波形顯示是最好的方式!
虛擬示波器功能介面如下:
該波形顯示工具的優勢如下:
這麼好用的工具,如何使用呢?接下來慢慢講述。
使用該工具時,首先在工具中開啟對應下位機的串列埠,並設定好波特率,然後對應的下位機(嵌入式系統)只需要按照規定的格式傳送資料即可,一次資料傳輸的通訊協議的格式為:
[0x03] [0xfc][…資料…][0xfc][0x03]
其中[…資料…]
是一次的波形,不同的波形數量和資料型別,資料的長度就不相同。
eg.假設現在微控制器需要傳送 5 個通道的資料顯示, 都是uint8_t 型別(unsigned char),那麼資料就是 5 個位元組,從左往右是波形 1 到波形 5 的波形資料,微控制器傳送一次資料的流程如下:
這樣就完成一次波形資料傳送,可以在波形顯示工具中看到波形。
在一次製作數字電壓表的過程中,使用stm32自帶的adc取樣直流電壓並通過串列埠傳送,但是在調節電位器變化adc所取樣的電壓時,在串列埠助手中只有單純的文字顯示,只能看到變化前的電壓值和變化後的電壓值,在變化的這個階段根本沒法分析,所以就想到了使用該工具進行視覺化分析。
根據之前所規定的協議,在傳送電壓值資料時加入了幀頭和幀尾,這樣工具裡就可以用波形顯示出adc取樣情況,果然,在adc取樣電壓資料有變化時,波形如下:
資料看似還算平穩,可是這是在0-3.3v整體範圍內的情況,再放大一下看看:
這是在+-1v
的範圍內,可以看到資料出現了劇烈抖動,如果沒有這個工具,這個問題是根本沒法診斷出來的,接下來我對adc取樣的資料進行軟體濾波,消除電位器引起的脈衝性抖動雜訊,軟體濾波演算法採用遞推平均濾波演算法,把連續取到的10個取樣值看成乙個佇列,每次取樣到乙個新的資料放入隊尾,並扔掉原來隊首的一次資料,將佇列中的10個資料進行算術平均運算,獲得濾波結果。
加入濾波演算法之後再次用波形顯示軟體觀察相同點資料,如圖所示,可以看到資料穩定在69.0,變為一條平滑的直線:
最後再觀察整個0-5v取樣範圍內的波形顯示,如圖所示,波形平滑:
以上就是我使用該工具的乙個典型案例,在嵌入式開發中還有很多的地方可以使用該工具可以幫助我們診斷一些細節問題:
說了這麼多,還沒說該工具如何獲得,老規矩:
串列埠資料視覺化
串列埠除錯工具推薦
部落格 沉澱 分享 成長,讓自己和他人都能有所收穫!在進行嵌入式開發時,總是要面對著來自終端的各種報文。不同的裝置 終端廠商都有一套自己的報文協議,如何除錯和測試是開發過程中很重要的事情,做好了事半功倍,做差了事倍功半。只有選對了工具,我們在開發過程中才能得心應手,游刃有餘。介紹ceiwei com...
示波器顯示讀取串列埠資料
波特率115200,說明每個byte 1 115200 8.6ns 示波器 1g s 示波器能夠使用的最大取樣速率為1g樣本 秒,就是說示波器在時間最小檔位是的取樣率是每秒採集1g個資料點,時間檔位越大用到的取樣率越小。100mhz 示波器模擬前端的頻寬。100m正弦波輸入示波器時,進過模擬前端後訊...
開源QT寫的串列埠除錯上位機(帶波形顯示)
為了方便pc機同微控制器 下位機 進行通訊,需要開發一款基於串列埠協議的上位機輔助除錯軟體。軟體不僅能夠向下位機傳送資料,傳送指令進而控制下位機,而且還應該能準確接收下位機發來的資料,便於對下位機的一些感測器採集的訊號進行分析。首先,在考慮到微控制器跟pc機通訊的問題時,一般的解決方案是通過一根串列...