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

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

通過STM32CubeMonitor,實現對MCU數據監控

評論