STM32CubeMonitor除了同樣可以提供變量監(jiān)測的功能,還有非常豐富的組件可以搭建各種風(fēng)格的圖形化界面,以及眾多免費的第三方組件可以進行功能擴展。此外,STM32CubeMonito還支持遠(yuǎn)程監(jiān)測功能。
STM32CubeMonitor變量監(jiān)測及可視化工具,支持通過ST-LINK的SWD或者JTAG接口連接到目標(biāo)MCU,可以在程序全速運行不被打斷的情況下,讀取需要檢測的變量值。非常適合那些需要在程序全速運行下進行調(diào)試的情況,是對傳統(tǒng)的通過設(shè)置斷點進行調(diào)試的方式的補充。
STM32CubeMonitor基于NODE-RED開發(fā),有豐富的圖形開發(fā)組件,可以開發(fā)出靈活多變的可視化圖形界面。
NODE-RED作為一個開源的可視化界面開發(fā)工具,有一個活躍的開發(fā)者社區(qū),里面有眾多開發(fā)者開發(fā)的各種功能的新節(jié)點,STMCubeMonitor支持導(dǎo)入這些第三方的節(jié)點來不斷擴展功能。
STM32CubeMonitor可以通過非侵入式的方式(Direct模式)檢測程序變量,對采集的數(shù)據(jù)實時分析,協(xié)助程序診斷。除了Direct模式以外,Snapshot模式下通過往應(yīng)用程序添加特定采樣代碼,可以提供更精確的采樣。變量可以根據(jù)可執(zhí)行文件導(dǎo)入,也可以直接根據(jù)變量地址進行手動添加,還可以對采集的變量進行各種后處理運算,設(shè)置采樣觸發(fā)條件等。
STM32CubeMonitor采用圖形化的編程界面,整個編程過程通過拖拽的方式就可以完成,無需寫代碼。有大量可選的圖形化組件(儀表盤,柱狀圖,點線圖……)可用。
STM32CubeMonitor有兩種工作模式:設(shè)計模式和Dashboard模式。設(shè)計模式即是編輯模式,打開STM32CubeMonitor默認(rèn)就是處在這個模式。設(shè)計模式下,最左邊一欄列出了所有當(dāng)前可用的節(jié)點,我們可以通過拖拽不同的節(jié)點來創(chuàng)建或者編輯不同的邏輯數(shù)據(jù)流(Flow),來實現(xiàn)想要的功能。比如將要檢測的變量通過點線圖進行實時顯示,或者通過一個按鈕來控制某個GPIO口的狀態(tài)等。設(shè)計模式下最右邊一欄可以看到當(dāng)前選中節(jié)點的使用說明和程序運行的調(diào)試信息等內(nèi)容。
待所有的節(jié)點都編輯完成并部署運行后,可通過右上方的DASHBOARD按鈕進入Dashboard模式。在Dashboard模式下,我們可以看到在設(shè)計模式下編輯的“流”運行的結(jié)果,看到我們之前設(shè)計的界面,通過這個界面去檢測或者控制變量的值。
STM32CubeMonitor基于Node-RED,Node-RED是一個基于“流(Flow)”的開發(fā)工具。那么何為“流”?Node-RED提供了很多功能節(jié)點,這些節(jié)點可以分為輸入節(jié)點,輸出節(jié)點和功能節(jié)點。把這些節(jié)點連接起來就是一個”流”。多個“流”的組合,我們也把它叫做“流”。比如在設(shè)計模式下的標(biāo)簽頁面我們也稱作“流”,它里面實際會包含多個不同功能的單個“流”。
上圖是通過STM32CubeMonitor進行遠(yuǎn)程監(jiān)測的連接示意圖。如我們前面所說,將STM32開發(fā)板通過ST-LINK連接到本地電腦,STM32CubeMonitor可以在本地電腦(Host PC)上運行,同時也可以在其他的電腦,平板或手機上通過瀏覽器訪問host PC的IP地址(端口號1880)打開STM32CubeMonitor的界面,進行編輯或者查看Dashboard(需要在同一個局域網(wǎng))。
實踐操作
前面我們已經(jīng)對STM32CubeMonitor有了一些基本了解,接下來就進入實踐操作部分。
在這一部分,將會通過“基本的數(shù)據(jù)采集流程”,“實時波形監(jiān)測”和“利用公有云平臺進行遠(yuǎn)程數(shù)據(jù)監(jiān)控”等三個例子,來介紹STM32CubeMonitor不同功能的使用。本課程提供有三個例程所對應(yīng)的MCU及CubeMonitor的程序,開發(fā)板使用的是Nucleo-L4R5ZI和X-NUCLEO-IKS01A2 傳感器擴展板(僅在第三個例程中用到)。你也可以使用其他的STM32開發(fā)板,按照每個例程的說明實現(xiàn)對應(yīng)MCU的功能就可以。
基本數(shù)據(jù)采集
在第一個例程中,MCU程序中定義了一個全局變量(current_var),該變量在設(shè)定好的最大值(var_max)與最小值(var_min)之間以步長1,連續(xù)變化。現(xiàn)在我們要用CubeMonitor去實時監(jiān)測這三個變量,并且還要實時改變最大值和最小值的限值。
通過這個例子,我們將學(xué)會:
? 如何搭建一個基本的“流”
? 了解“流”節(jié)點之間傳遞消息的基本數(shù)據(jù)結(jié)構(gòu)
? 調(diào)試節(jié)點的使用
? 如何保存及導(dǎo)入“流”
? 如何調(diào)整Dashboard布局
這里例程的MCU相關(guān)代碼實現(xiàn)。拷貝到任何已有的工程,重新編譯燒錄。
其中的current_var ,var_max和 var_min這三個變量就是我們要監(jiān)測的變量。
接下來就來看看CubeMonitor如何配置。
CubeMonitor配置
當(dāng)?shù)谝淮未蜷_CubeMonitor時,默認(rèn)就打開了一個“流”。你可以基于這個“流”進行開發(fā),也可以進入菜單import>Library, 選擇“STM32CubeMonitor_BasicFlow.json”,然后點擊“import”按鈕導(dǎo)入一個新的Basic流。這時,在設(shè)計模式下就會多出一個名為“Basic_Flow”的標(biāo)簽頁。這個標(biāo)簽頁,我們也稱為”流”。
在Library下,有兩類流可以選擇:BasicFlow和AdvancedFlow。你可以把它理解成STM32CubeMonitor已經(jīng)做好的兩個流模板,方便大家上手。BasicFlow只有一個標(biāo)簽頁,里面已經(jīng)預(yù)先實現(xiàn)了啟動/停止采樣,并將結(jié)果顯示在點線圖上的基本功能。只需要將其中節(jié)點的參數(shù)更新一下即可。AdvancedFlow包括兩個標(biāo)簽頁:一個標(biāo)簽頁里是和STM32節(jié)點相關(guān)的流(比如設(shè)置變量地址,讀取變量值并處理,輸出到圖表等);另一個標(biāo)簽頁里放的是用戶界面按鍵。兩個標(biāo)簽頁的節(jié)點通過Link in和Link out節(jié)點連接。在AdvancedFlow中還可以同時連接兩個ST-LINK,同時檢測兩個STM32開發(fā)板的運行。
我們再回到BasicFlow,從圖中可以看到整個BasicFlow流由兩個流組成:上面的流由兩個button節(jié)點(Start, Stop),一個variables節(jié)點和一個acq_out節(jié)點組成。這個流完成的功能是:設(shè)置要檢測的變量地址,在Dashboard上添加兩個按鍵(Start,Stop)來啟動和停止采樣。下面的流由acq_in節(jié)點,processing節(jié)點,一個button節(jié)點和一個chart節(jié)點組成。acq_in節(jié)點接收ST-LINK發(fā)來的數(shù)據(jù),processing節(jié)點接收acq_in的消息,將所選擇的變量數(shù)據(jù)發(fā)送到chart節(jié)點進行顯示。Clear button用來清除chart圖表的顯示。
接下來我們就來逐個說明BasicFlow中各個節(jié)點如何配置。
節(jié)點配置
首先我們先來看看myProbe_Out和myProbe_In這兩個節(jié)點。這兩個節(jié)點屬于STMicroeletronics節(jié)點組,就是其中的acq_out和acq_in。STM32CubeMonitor里的所有節(jié)點,都可以另外命名為其他更有意義的名字,方便我們理解每個節(jié)點的作用。acq_out節(jié)點的作用是定義或者選擇一個ST-LINK配置(通信協(xié)議,頻率等),打開或者關(guān)閉連接,向選擇的ST-LINK發(fā)送命令等。Acq_in節(jié)點的作用是定義或者選擇一個ST-LINK配置,并接收ST-LINK發(fā)來的數(shù)據(jù)。
在開始配置前,我們會發(fā)現(xiàn)在這兩個節(jié)點的右上方分別有一個紅色的三角形和藍(lán)色的圓點。紅色的三角形表示:該節(jié)點還未配置,藍(lán)色的圓點表示:該節(jié)點更新后還未部署。
在配置這兩個節(jié)點前,先連接ST-link到PC。然后按照圖中的步驟進行配置:
1.雙擊節(jié)點,打開編輯窗口,點擊“ProbeConfig”編輯按鈕
2.在下拉菜單中選擇可用的ST-LINK(如果沒有連接任何st-link,就會看到“No results found”)
3.點擊Add,添加ST-Link
4.點擊Done,完成配置,編輯窗口自動關(guān)閉
這時節(jié)點右上方的紅色三角形消失,藍(lán)色圓點還在,表示當(dāng)前節(jié)點已經(jīng)配置,但還沒有部署。
用同樣的方法,完成myProbe_Out和myProbe_In這兩個節(jié)點的配置。
接下來,配置variables節(jié)點,添加要監(jiān)測的變量。有時我們需要將不同的變量送往不同的顯示組件,或者有的變量需要更精確的采樣,需要配置成不同的采樣模式,這時為了后續(xù)處理的方便,就可以在一個flow里,放置多個variables節(jié)點將變量分組。在當(dāng)前這個例子里,我們只用了一個variables變量(myVariables)。
雙擊myVariables,打開編輯窗口,按圖中步驟進行配置:
1.點擊編輯按鈕
2.添加可執(zhí)行文件所在目錄(直接將路徑拷貝過來)
3.在File項的下拉菜單中選擇可執(zhí)行文件,CubeMonitor會自動分析并導(dǎo)入所有全局變量的列表
4. 在變量列表中列出的變量很多,可以用過濾器通過關(guān)鍵字將要監(jiān)測的變量過濾出來。比如我們輸入var,這時列表中就只剩下我們想要要監(jiān)測的這三個變量了
5.點擊變量前面的方框,選中這三個變量
6.為當(dāng)前的配置取一個名字,這個名字代表的就是當(dāng)前選擇的變量組合。在所有的variables節(jié)點中都可以通過這個名字選擇配置好的變量組合。
7.點擊Add添加變量
8.為當(dāng)前的variables組命名,之后在processing節(jié)點中就可以通過該名稱來選擇某個變量組了(見后續(xù)介紹)
9.添加好變量后,還需要配置變量采樣的參數(shù)(采樣模式和采樣速度,以及是否有采樣觸發(fā))。采樣速度一般我們選擇“sequential loop”,該配置下CubeMonitor會以最快的速度進行采樣。或者你也可以自己設(shè)定采樣頻率。采樣模式有Direct和snapshot兩種。Direct模式屬于非侵入式,通過JTAG或者SWD協(xié)議讀取存儲器的值,不需要添加任何代碼到MCU程序。Snapshot模式,需要向MCU程序添加特定的代碼,由MCU定時采樣,將結(jié)果保存在MCU的內(nèi)存中,再由CubeMonitor定期讀出。Snapshot模式可以提供更精確的采樣。在當(dāng)前的例子中,我們使用direct模式就可以了。關(guān)于snapshot模式,我們會在第二個例子中做進一步介紹。
10.最后點擊Done完成配置
Processing節(jié)點的輸入連接到acq_in節(jié)點,接收從ST-link發(fā)來的數(shù)據(jù),按不同的變量對數(shù)據(jù)進行組合,每50ms輸出一次。比如要檢測的是三個變量,那么processing節(jié)點就會每50ms輸出三條消息,里面包含了這三個變量在這段時間內(nèi)的采樣數(shù)據(jù),可能是一個,也可能是多個,跟設(shè)置的采樣速度有關(guān)。processing節(jié)點的輸出直接連接到chart節(jié)點就可以顯示了。
這個節(jié)點的配置比較簡單,只需要在GroupName的下拉列表中選擇要處理的變量組就可以了(也就是在variables節(jié)點配置的第8步設(shè)置的變量組名)。
最后我們來配置用到的Dashboard的圖形組件:chart節(jié)點和三個button節(jié)點。
雙擊chart節(jié)點(myChart),打開編輯窗口,設(shè)置整個圖的大小,類型和顯示的窗口時間等。
三個button節(jié)點在模板中已經(jīng)配置好,所以不用再配置。但我們可以打開它們的編輯窗口看看里面是如何配置的,從圖中可以看到,這三個button節(jié)點通過設(shè)置不同的topic實現(xiàn)了不同的功能。
如果想調(diào)整Dashboard的布局,可以按圖中所示步驟進入布局設(shè)計界面。在這里,可以把圖形組件進行分組,改變各個組件的大小和位置。Dashboard可以有多個標(biāo)簽頁(Home,Advanced),在Dashboard界面的左上角進行選擇。配置圖形組件時,需要選擇將其放在哪個標(biāo)簽頁下。后面的例子,我們都是放在Home標(biāo)簽頁下,就不再做特殊說明了。
現(xiàn)在所有的節(jié)點都已經(jīng)配置完畢,點擊右上方的DEPLOY按鍵,部署并運行編輯好的”流“。部署后所有節(jié)點上的藍(lán)色小圓點都消失了。
點擊右上方的DASHBOARD按鍵,打開dashboard就可以看到我們編輯的界面了。點擊START ACQUISITION鍵開始采集數(shù)據(jù),就可以看到監(jiān)測的三個變量的實時變化情況了。
現(xiàn)在已經(jīng)可以實時監(jiān)測變量的變化了,要能夠?qū)崟r修改變量的值,還需要添加圖中紅框中的inject,variables和write panel節(jié)點。
Write panel節(jié)點會在Dashboard里添加一個輸入框,而且Write panel節(jié)點與myProbe_Out節(jié)點相連,所以每次輸入的值都會通過myProbe_Out發(fā)送到ST-LINK。
Variables節(jié)點里設(shè)置需要修改的變量的地址。
Inject節(jié)點的作用是可以手動或按照設(shè)定的時間間隔自動向“流”注入消息,這里我們利用它在程序啟動時觸發(fā)一次消息發(fā)送,把Variables設(shè)定的變量地址發(fā)送給ST-LINK。
Variables節(jié)點的設(shè)置跟前面一樣。這里我們只需要將要修改的var_max, var_min這兩個變量添加進來就可以了。
配置Write panel節(jié)點,選擇放在“Home”標(biāo)簽頁,并設(shè)置尺寸大小。
Inject節(jié)點里可以配置輸出的消息負(fù)載類型(時間戳,數(shù)字,字符串等),設(shè)定消息的topic和消息發(fā)送的方式(一次性還是周期性的)。在這個例子中,我們主要是利用inject節(jié)點在程序啟動時觸發(fā)一次消息發(fā)送,所以Payload選擇timestamp即可,repeat選項設(shè)置為none,然后勾選圖中紅框標(biāo)出的選項(程序啟動后觸發(fā)一次消息發(fā)送)。設(shè)置完成后,inject節(jié)點顯示的名字就會變成“timestamp”,并且右上方有一個數(shù)字1,表示只觸發(fā)一次。
重新部署運行,進入Dashboard界面,可以看到下方多出了var_max, var_min這兩個變量值的輸入框和一個“WRITE”按鈕。在輸入框中寫入新的變量值,點擊WRITE按鈕,從上面的點線圖中就可以看到,對應(yīng)的變量立刻發(fā)生變化了。
到這里,我們已經(jīng)完成了所有的流編程內(nèi)容。
通過菜單下的Export可以將整個流保存成json文件,操作步驟見上圖。在保存的時候,可以選擇只保存選中的幾個節(jié)點(selectednodes),還是當(dāng)前選中的標(biāo)簽頁的整個流(current flow),也可以保存所有打開的標(biāo)簽頁下的流(all flows)。
保存好的json文件,通過import菜單可以再次導(dǎo)入。見上圖操作步驟。
在這個例子的最后,我們來了解一下節(jié)點之間傳遞消息的數(shù)據(jù)結(jié)構(gòu)和debug節(jié)點。
將一個節(jié)點的輸出連接到另一個節(jié)點的輸入后,這兩個節(jié)點就可以傳遞消息了。CubeMonitor節(jié)點之間的消息采用json格式,包括payload,topic,msgid等字段。在每一個節(jié)點的說明中可以看到它的輸入消息和輸出消息的字段定義,除了前面提到的這三個字段,各個節(jié)點根據(jù)所實現(xiàn)的功能不同,消息中包含的字段也有所不同。大部分節(jié)點都會用到payload和topic字段中的一個或者兩個都用。在調(diào)試時我們一般關(guān)注的也是payload和topic這兩個字段。
debug節(jié)點是一個非常好用的調(diào)試工具,它可以連接到任何節(jié)點的輸出,來觀察實際運行時消息傳遞的情況。在debug窗口(點擊右邊的小爬蟲圖標(biāo))可以看到所有Debug節(jié)點的輸出,系統(tǒng)的出錯信息也會輸出在這里。
現(xiàn)在我們用兩個debug節(jié)點分別連接到START按鍵和myVariables節(jié)點的輸出。Debug節(jié)點配置成輸出完整的消息內(nèi)容。重新部署運行,然后在debug窗口就可以看到這兩個節(jié)點的輸出信息了。按下START按鍵,此時START節(jié)點輸出了一個topic為“start”的消息來通知ST-LINK開始采樣。START節(jié)點的輸出消息先經(jīng)過myVariables節(jié)點,再送到myProbe_out節(jié)點。
myVariables節(jié)點輸出的消息包含:所有需要監(jiān)測的變量的名稱,地址,類型以及設(shè)定的采樣參數(shù)等,并將topic設(shè)置為接受到的START節(jié)點消息中的topic內(nèi)容。所有這些信息都可以通過debug節(jié)點看得清清楚楚。ST-LINK接收到消息就知道應(yīng)該對哪些變量啟動采樣了。
-
mcu
+關(guān)注
關(guān)注
146文章
17824瀏覽量
360182 -
接口
+關(guān)注
關(guān)注
33文章
8932瀏覽量
153183 -
STM32
+關(guān)注
關(guān)注
2289文章
11011瀏覽量
362275 -
JTAG
+關(guān)注
關(guān)注
6文章
403瀏覽量
72903 -
圖形界面
+關(guān)注
關(guān)注
0文章
38瀏覽量
7526
原文標(biāo)題:數(shù)據(jù)圖形化上位機軟件,STM32調(diào)試神器STM32CubeMonitor
文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
STM32應(yīng)用筆記: 使用STM32CubeMonitor實時監(jiān)測變量
STM32CubeMonitor介紹背景功能及特點
STM32CubeMonitor V1.0.0介紹
STM32CubeMonitor這個工具是干什么的呢
有什么方法才能是STM32CubeMonitor V1.2.0版本工具保持最新呢?
如何在STM32CubeMonitor中查看/顯示變量表呢
STM32CubeMonitor如何獲取 *.out 文件?
STM32CubeMonitor使用教程(持續(xù)更新)

STM32CubeProgrammer和STM32CubeMonitor的新功能
如何用STM32CubeMonitor圖形化顯示LoRa節(jié)點信息

通過STM32CubeMonitor,實現(xiàn)對MCU數(shù)據(jù)監(jiān)控

評論