數(shù)據(jù)可視化工具Data Visualizer的使用介紹
掃描二維碼
隨時隨地手機(jī)看文章
當(dāng)嵌入式系統(tǒng)在運(yùn)行時,去處理一些內(nèi)部數(shù)據(jù)是比較難的,一旦使用Debug工具調(diào)試斷點(diǎn),則整個系統(tǒng)便會停下來,而無法監(jiān)測到運(yùn)行中的真實(shí)情況,本文介紹一種簡單的數(shù)據(jù)可視化工具Data Visualizer的使用,如圖1所示,類似于MCC工具,可以從MPLAB XIDE的Plugins中去在線安裝此插件,此處不做詳述。安裝好的視圖如圖2所示。
圖1 數(shù)據(jù)可視化工具的作用
圖2 安裝好之后的Data Visualizer
一.嵌入式系統(tǒng)的創(chuàng)建
在使用Data Visualizer之前,我們先通過MCC建立一個工程,通過PWM1產(chǎn)生器信號PG1H信號,觸發(fā)ADC的專用通道AN0,在ADC AN0中斷中得到AN0在Demo板上的采樣值,同時在Timer1的中斷中去采用UART外設(shè)把數(shù)據(jù)發(fā)送到Data Visualizer的界面中去顯示。除此之外,我們也驗(yàn)證一下使用Data Visualizer的基本串口終端的功能。
圖3 數(shù)據(jù)顯示實(shí)驗(yàn)平臺
本文實(shí)驗(yàn)均基于dsPIC33CK256MP506 Digital Power PIM 板,MA330048,如圖3所示。
圖4 主時鐘的配置參數(shù)
主時鐘的配置參數(shù)如圖4所示,采用內(nèi)部FRC振蕩器,通過PLL適當(dāng)配置可以達(dá)到100MHz的指令時鐘頻率,這里系統(tǒng)時鐘FOSC為200M.
圖5 輔助時鐘的配置參數(shù)
輔助時鐘同樣采用內(nèi)部FRC振蕩器,通過APLL的適當(dāng)配置達(dá)到500M的時鐘輸出,作為PWM模塊的輸入時鐘。此時我們注意FVCO/4為400M, 會用它作為ADC的輸入時鐘,將ADC內(nèi)核時鐘配置為66.5MHz,以滿足小于70MHz的要求。
圖6 Timer1的配置參數(shù)
將定時器Timer1配置為2mS的周期,我們每一次中斷都會去將數(shù)據(jù)送到Data Visualizer界面。
圖7 UART的配置參數(shù)
將UART1的波特率設(shè)為230400,并且重定位Printf到UART以便在代碼中使用Printf函數(shù)打印變量輸出。
圖8 pin腳基于Demo板設(shè)置
通過參考硬件Demo板的UART端口連接,在MCC中設(shè)置相應(yīng)的端口,并使能UART的起始狀態(tài)為高。此處AN0為我們監(jiān)控的采樣數(shù)據(jù)通道,對應(yīng)板上的P2可調(diào)電阻電壓輸入。
圖9 全局中斷和ADC及Timer中斷的使能
由于我們需要在AN0中斷中得到ADC AN0的500kHz頻率的周期采樣值,因此使能AN0的中斷,并設(shè)定高優(yōu)先級,Timer1中斷設(shè)置為低優(yōu)先級,且使能中斷。
由于篇幅和主題的關(guān)系,我們這里對PWM模塊和ADC模塊的配置不做詳細(xì)介紹,后續(xù)會專門通過相應(yīng)的篇幅去介紹。
圖10 ADC中斷信號和PWM之間的關(guān)系
圖10中,我們測量得到的在500kHz的PWM(CH1)開關(guān)頻率下,每周期都觸發(fā)ADC AN0進(jìn)入AN0中斷,進(jìn)行RB12翻轉(zhuǎn)(CH2),而CH4為AN0的電壓值1.66V,此時dsPIC33CK的供電為板上的LDO輸出3.3V.
圖11 Timer1中斷的翻轉(zhuǎn)信號
在圖11中,我們測量得到Timer1中斷的翻轉(zhuǎn)信號RB11(CH3),每次中斷都會翻轉(zhuǎn),所以其翻轉(zhuǎn)周期和Timer1設(shè)定的周期2ms相同。
二.在Timer 1中斷中進(jìn)行串口終端數(shù)據(jù)的發(fā)送
圖12 Timer1中斷中將數(shù)據(jù)發(fā)送到Data Visualizer終端
圖13 串口參數(shù)設(shè)置窗口
燒錄程序后,當(dāng)接上Demo板串口數(shù)據(jù)線,拔掉編程接口線并將編程器PICkit4移除板子連接避免相互影響,由于板上自帶USB轉(zhuǎn)串口接口器件,因此會自動識別串口號為COM10,設(shè)定Baud Rate為230400和MCC配置保持一致,并檢查其它默認(rèn)配置和MCC串口配置一致,否則打印出來的可能是無意義的亂碼。
圖14 串口數(shù)據(jù)發(fā)送到終端
在上圖14中,選擇COM10右側(cè)的下拉選項中,選擇Send to Terminal,并且在右側(cè)窗口中,選擇正確的數(shù)據(jù)源COM10,設(shè)置為8bit ASCII碼,則可以觀察到如截圖中的期望的數(shù)據(jù)結(jié)果。
三.在Timer1中斷中發(fā)送數(shù)據(jù)流到Data Visualizer圖形顯示窗口
圖15 在Timer 1中斷中進(jìn)行數(shù)據(jù)流發(fā)送設(shè)置
圖16 數(shù)據(jù)流封裝的幀格式解釋
大多數(shù)數(shù)據(jù)通信界面使用字節(jié)流去做數(shù)據(jù)傳輸,當(dāng)需要傳輸多個字節(jié)的數(shù)據(jù)時,需要對數(shù)據(jù)進(jìn)行一定的封裝,Data Visualizer得到原始數(shù)據(jù)后,進(jìn)行封裝為多個數(shù)據(jù)流,數(shù)據(jù)流的格式取決于用戶的定義。
圖17 Data Visualizer目前支持的變量數(shù)據(jù)類型
目前此數(shù)據(jù)顯示工具支持的數(shù)據(jù)類型如圖17所示,這里我們用到的是16位的無符號ADC數(shù)據(jù),表示單端無符號數(shù)據(jù)采樣值。
圖18 數(shù)據(jù)流的格式說明
在具體執(zhí)行數(shù)據(jù)發(fā)送時,最低位的字節(jié)先發(fā)送,高位的字節(jié)后發(fā)送,由一個起始字節(jié)和結(jié)尾字節(jié)組成一個封裝結(jié)構(gòu),采用這個封裝結(jié)構(gòu)去幫助解釋器同步數(shù)據(jù)流。起始字節(jié)可以是任意的字節(jié),結(jié)尾字節(jié)是起始字節(jié)的反碼字節(jié)。
燒錄代碼后,連接串口USB線,移除PICkit4和板子和電腦的連接,打開Data Visualizer界面。
圖19 將數(shù)據(jù)流發(fā)送到Data Visualizer并圖形顯示
如圖19選擇COM10 右側(cè)的New Variable Streamer選項,打開數(shù)據(jù)流結(jié)構(gòu)設(shè)置界面。
圖20 數(shù)據(jù)流格式設(shè)置要求
圖21 數(shù)據(jù)流設(shè)置界面
除了給數(shù)據(jù)流命名之外,由于起始字節(jié)為0x03,則需要設(shè)置幀格式為One’s Complement,并寫入起始幀字節(jié)數(shù)據(jù),界面自動得到結(jié)束幀字節(jié)為0xFC。
圖22 添加變量名稱及類型
這里我們只傳輸一個16位無符號數(shù)據(jù)即可,并選擇相應(yīng)的數(shù)據(jù)顯示軸格式。
圖23 Data Visualizer中的數(shù)據(jù)顯示
注意左側(cè)選擇正確的數(shù)據(jù)源,此處為COM10,下面數(shù)據(jù)終端中的原有數(shù)據(jù)可以清零,并且設(shè)置為斷開數(shù)據(jù)源。此時上面窗口顯示正確的數(shù)據(jù)圖形顯示,此處由于是數(shù)字電位器設(shè)定的ADC采樣電壓,因此有一些小的波動。
圖24 數(shù)據(jù)縱縱坐標(biāo)設(shè)置合適范圍
當(dāng)從曲線左側(cè)的設(shè)置按鈕中進(jìn)入,可以設(shè)置相應(yīng)的數(shù)據(jù)顯示范圍,如圖24所示。
圖25 調(diào)整數(shù)據(jù)范圍后的數(shù)據(jù)顯示
此時顯示的數(shù)據(jù)為2.03k,很接近實(shí)際的電壓1.65V對應(yīng)的ADC采樣值2048.
圖26 鼠標(biāo)滾輪調(diào)整橫坐標(biāo)范圍及精度
當(dāng)采用鼠標(biāo)滾輪調(diào)整橫坐標(biāo)時間單位時,可以看到右側(cè)的窗口的數(shù)據(jù)同時跟隨變化,實(shí)時顯示。
相關(guān)Printf的典型轉(zhuǎn)義字符及數(shù)據(jù)說明符順便列到下面,必要時供參考,注意在使用時 #include
圖27 Printf函數(shù)轉(zhuǎn)義字符
圖28 Printf典型數(shù)據(jù)說明符
總結(jié),本文基于PWM觸發(fā)ADC采樣電壓為例,通過串口UART將數(shù)據(jù)在Timer1定時器中斷中發(fā)送到串口終端進(jìn)行數(shù)據(jù)顯示及圖形化數(shù)據(jù)顯示,方便在嵌入式系統(tǒng)中進(jìn)行系統(tǒng)數(shù)據(jù)的監(jiān)查。





