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





