基于STM32H750實現(xiàn)電機控制節(jié)點維護設(shè)備設(shè)計方案


在詳述實現(xiàn)過程之前,我們先看一下 ST 專家點評。
ST專家點評
從這個評測貼中我們可以看到這位同學(xué)給我們展示了如何使用STM32H750+TouchGFX開發(fā)平臺快速開發(fā)一個使用STM32H7對電機進行控制的應(yīng)用。從UI設(shè)計的角度來看:UI的設(shè)計非常好,這位工程師對UI設(shè)計方面也是非常有心得的,由于UI設(shè)計的非常好,再加上TouchGFX Designer的布局和交互,設(shè)計出來的界面非常美觀。在UI設(shè)計方面,使用很多TouchGFX Designer自帶的控件進行UI設(shè)計,基礎(chǔ)控件:如圖片/文本/進度條控件進行基礎(chǔ)布局,使用滑動容器控件和靜態(tài)圖表控件用與實現(xiàn)子頁面滑動/圖表等功能;并通過TouchGFX 模擬器進行仿真測試,很方便的開發(fā)出一款界面美觀交互友好的嵌入式GUI產(chǎn)品。
從數(shù)據(jù)處理的角度看:UI設(shè)計好后,通過MVP機制對UI和后端數(shù)據(jù)處理進行分離對電機進行控制,前后端分離,方便未來增加和擴展更多功能。
從整體設(shè)計來看:設(shè)計的UI非常美觀,接近智能手機/手表的用戶體驗,功能實現(xiàn)比較完整. 是一個很好的的UI設(shè)計作品。
一、項目介紹
參加STM32論壇的STM32H750B-DK評測活動,利用提供的開發(fā)板做一個前期驗證項目。驗證項目是做一個手持的電機運動節(jié)點維護設(shè)備,方便攜帶到現(xiàn)場對電機進行維護,這里暫且稱為PAD。(實物演示視頻見本文上方作品展示)PAD通過UART與電機控制節(jié)點連接通訊(如下圖所示),當(dāng)檢測到設(shè)備接入,PAD獲取其設(shè)備信息狀態(tài),包括固件版本、PCB版本、運行日志等。通過PAD還可以控制電機做一些簡單的運動測試,配置電機的運動參數(shù),如加速度、速度、電流等。由于時間有限,目前僅實現(xiàn)上述功能。

二、開發(fā)板STM32H750B-DK
開發(fā)板資源豐富,本項目比較關(guān)注的資源情況:
Arm? Cortex?-M7 內(nèi)核(帶雙精度浮點單元),400MHz主頻
4.3英寸RGB LCD,電容屏
外擴2 x 512Mbit Flash
擴128 Mbit SDRAM
UART接口
持Chrom-ART圖形加速
三、設(shè)計工具
STM32CubeMX
STM32CubeIDE 1.9.0
TouchGFX Designer V4.20
項目中用到的TouchGFX資源
(1)控件(Widget)
Box
Button
Image
Slider
Static Graph
Swipe Container
Text Area
Texture Mapper
(2)實現(xiàn)UI動效使用到的TouchGFX內(nèi)置的交互動作(Interactions Action)
Call new virtual function
Change screen
Move Widget
Fade Widget
Wait for
四、界面設(shè)計
不會UI設(shè)計的電子工程師不是好廚師,所以這一次親自操刀設(shè)計,整體設(shè)計風(fēng)格采用我喜歡的“毛玻璃效果”。TouchGFX Designer的模擬器非常實用,大大提高了調(diào)試效率,以下圖片均來自模擬器的截圖。實際上,模擬器的顯示效果與直接目視比較接近,視頻拍出來的效果比實際差了不少,屏幕顏色不對,還有條紋。。。截圖只能看靜態(tài)效果,動態(tài)效果請大家觀看文章上方視頻演示。目前實現(xiàn)了5個界面:開機、連接、功能選擇、信息顯示、電機控制。
4.1 開機動畫
4.2 連接界面
4.3 功能選擇界面
4.4信息顯示界面
4.5電機控制界面
五、硬件交互
使用TouchGFX的MVP框架實現(xiàn)GUI與硬件的雙向交互。MVP的全稱為Model-View-Presenter,Model提供數(shù)據(jù),View負責(zé)顯示,Controller/Presenter負責(zé)邏輯的處理。在本項目中主要是檢測用戶在觸摸屏上的操作,轉(zhuǎn)換成相應(yīng)的UART命令發(fā)送至外部電機控制板;當(dāng)外部電機控制板的狀態(tài)發(fā)生變化時,也會主動發(fā)送數(shù)據(jù)到開發(fā)板,此時GUI負責(zé)刷新界面顯示的相關(guān)內(nèi)容。MVP框架應(yīng)該是TouchGFX中不易掌握的部分,UI怎么和硬件交互?這個是根本,每個項目都會涉及到。這里以本項目中的UART為例說明一下,如何通過操作屏幕上的按鈕來控制UART發(fā)送數(shù)據(jù)。
以上述界面截圖中的STOP按鈕為例。在TouchGFX Designer中,我們給Screen1添加STOP按鈕,命名為con_stop(很多資料中介紹了這些基本操作,這里不再累述),我們要實現(xiàn)通過電擊此按鈕向UART發(fā)送數(shù)據(jù)。在界面右側(cè)的Interactions中添加con_stop按鈕的點擊事件。如圖上所示,觸發(fā)條件為按鈕點擊(序號1);觸發(fā)源選擇為con_stop按鈕(序號2);觸發(fā)執(zhí)行的動作為調(diào)用一個虛函數(shù),虛函數(shù)的名稱我們設(shè)定為con_stop_clicked(序號3)。然后按下F4執(zhí)行Generate Code生成代碼。TouchGFX Designer會自動生成這個函數(shù)的定義,在STM32cubeIDE中查看Screen1VeiwBase.hpp文件,可以看到此虛函數(shù)的聲明:
virtual void con_stop_clicked() { }
(1)手動在Screen1View.hpp文件中給Screen1View類添加此虛函數(shù):
virtual void con_stop_clicked();
手動在Screen1View.cpp中添加此虛函數(shù)的實現(xiàn)部分:
voidScreen1lView::con_stop_clicked()
{
presenter->con_stop_clicked();
}
上面這個函數(shù)調(diào)用了presenter中的con_stop_clicked()函數(shù)(函數(shù)名可以自己定),實際上這個函數(shù)我們還沒有實現(xiàn),接下來給presenter添加這個函數(shù)。
(2)手動在Screen1Persenter.hpp中,給Screen1Persenter類中添加函數(shù)con_stop_clicked:
virtual void con_stop_clicked();
手動在Screen1Persenter.cpp中添加這個函的實現(xiàn):
voidScreen1Presenter::con_stop_clicked()
{
model->con_stop_clicked();
}
(3)上面這個函數(shù)調(diào)用了model中的函數(shù)con_stop_clicked(這個函數(shù)名也可以自己定),好吧實際上這個函數(shù)我們也還沒實現(xiàn),接下來繼續(xù)。
手動在model.hpp文件中給Model類添加這個函數(shù):
void con_stop_clicked();
手動在model.cpp中添加上面函數(shù)的實現(xiàn)部分。
voidModel::con_stop_clicked()
{
uart_send_cmd_stop();
}
uart_send_cmd_stop()函數(shù)上就是發(fā)送UART數(shù)據(jù)的部分了,通常情況下是在uart.c中實現(xiàn)的,內(nèi)容類似下面這個。
HAL_UART_Transmit( huart1, (const uint8_t*) str, len, 1000);
在model.cpp中我們把uart_send_cmd_stop()這個函數(shù)作為外部函數(shù)引入:
extern"C"
{
externvoiduart_send_cmd_stop();
}
#endif
實際上這里偷懶了。項目中使用了FreeRTOS,有一個Uart_Task任務(wù),負責(zé)UART的數(shù)據(jù)收發(fā)處理。在多任務(wù)的情況下,多個任務(wù)涉及同一個硬件應(yīng)該確?;コ庠L問。所以這里應(yīng)該使用信號量,改變信號量的狀態(tài)來通知Uart_Task任務(wù)實際發(fā)送數(shù)據(jù)到UART。
一波操作下來, View ---> Presenter ---> Model ---> UART,千山萬水有點麻煩,不過MVP的優(yōu)點還是很多的,想要了解更多大家可以問問百度。
六、總結(jié)
之前一直用LVGL,做過一些項目,也算是比較熟悉了。最近半年才開始使用 TouchGFX。一番體驗下來不得不說,在 STM32上做 GUI 應(yīng)用 TouchGFX 確實很有優(yōu)勢,畢竟是 ST 親兒子,先天優(yōu)勢,生態(tài)全、控件多,實現(xiàn)各種炫酷效果不在話下。最方便的是幾乎不需要怎么優(yōu)化,不用操心什么 DMA2D、LDTC……,底層ST都幫你搞好了,跑起來效果就已經(jīng)非常流暢。ST 新出的 NeoChrom GPU 看介紹更牛X,有機會到要試試到底有多牛。
TM32H750超值系列微控制器包含Arm? Cortex?-M7內(nèi)核(具有雙精度浮點單元),工作頻率高達480 MHz。內(nèi)嵌的128 KB閃存使意法半導(dǎo)體能夠為開發(fā)人員提供一種經(jīng)濟劃算的解決方案。
性能
在480 MHz的CPU頻率下,從Flash執(zhí)行程序時,STM32H742系列能夠提供2424 CoreMark /1027 DMIPS的性能,利用其L1緩存并實現(xiàn)了零等待執(zhí)行。
內(nèi)嵌的128 KB閃存,面向用戶可信根服務(wù)、關(guān)鍵實時程序執(zhí)行和外部存儲器的簡單配置
L1緩存(16 KB的I-緩存 +16 KB的D-緩存)提高外部存儲器的執(zhí)行性能。
安全性
STM32H750集成了:
加密/哈希硬件加速
STM32H757還支持安全固件安裝(SFI)嵌入式安全服務(wù),可在執(zhí)行初始程序時執(zhí)行安全驗證并保護軟件IP。
安全啟動和安全固件升級(SBSFU)
高能效
多電源域架構(gòu)可實現(xiàn)將不同的電源域配置為低功耗模式,進而優(yōu)化功耗效率。
USB調(diào)節(jié)器提供嵌入式物理接口層(PHY)。
在內(nèi)核運行模式(關(guān)閉外設(shè))下,功耗典型值為275 μA/MHz @VDD = 3.3 V和25 °C
圖形
LCD-TFT控制器接口支持雙層圖形
Chrom-ART Accelerator?提高了圖形內(nèi)容創(chuàng)建速度,并為其他應(yīng)用節(jié)省了MCU內(nèi)核處理帶寬
JPEG硬件加速器,可進行快速JPEG編碼和解碼,從而減輕CPU編解碼負荷。
片內(nèi)外設(shè)
多達35個通信接口包括FD-CAN、USB 2.0高速/全速、以太網(wǎng)MAC、攝像頭接口。
可利用帶有32位并行接口(支持SRAM、PSRAM、NOR、NAND和SDRAM存儲器)或雙模Quad-SPI串行閃存接口的靈活存儲控制器輕松擴展外部存儲器。
模擬外設(shè):12位DAC,快速16位ADC
16位高精度定時器上的多個16位和32位定時器運行頻率高達480 MHz。
STM32H750超值系列提供128 KB的Flash存儲器,具有以下結(jié)構(gòu)的1 MB SRAM:192 KB的TCM RAM(包括64 KB的ITCM RAM和128 KB的DTCM RAM,用于時間關(guān)鍵型程序和數(shù)據(jù)),高達512 KB的用戶SRAM,以及備份域中4 KB的SRAM,可將數(shù)據(jù)保持在最低功耗模式,提供LQFP100、LQFP144、LQFP176、UFBGA176和TFBGA240封裝。
ST意法半導(dǎo)體公司的STM32H750微控制器是他們現(xiàn)有的STM32H7產(chǎn)品的價值線。通過限制產(chǎn)品中嵌入式Flash的數(shù)量,這條價值線提供了一個突破性的價格水平,在STM32H7系列中沒有提供到目前為止。STM32H7值線仍然提供了足夠的嵌入式Flash來安全地存儲引導(dǎo)代碼或?qū)崟r代碼和數(shù)據(jù)。
STM32H750設(shè)備基于高性能Arm Cortex-M7 32位RISC核心,工作頻率高達400 MHz。Cortex-M7核心具有一個浮點單元(FPU),支持Arm雙精度和單精度數(shù)據(jù)處理指令和數(shù)據(jù)類型。STM32H750設(shè)備支持全套DSP指令和內(nèi)存保護單元(MPU),以提高應(yīng)用程序的安全性。
所有的設(shè)備提供三個adc,兩個dac,兩個超低功耗比較器,一個低功耗RTC,一個高分辨率定時器,12個通用16位定時器,兩個用于電機控制的PWM定時器,五個低功耗定時器,一個真正的隨機數(shù)發(fā)生器(RNG),和一個密碼加速單元。該器件支持外部sigma-delta調(diào)制器(DFSDM)的四個數(shù)字濾波器。它們還具有標(biāo)準(zhǔn)和先進的通信接口。
STM32H750xB器件工作在-40°C至+85°C的溫度范圍內(nèi),電源為1.62 V至3.6 V。通過使用外部電源管理器并將PDR_ON引腳連接到VSS,供電電壓可以降至1.62 V。否則,電源電壓必須保持在1.71 V以上,嵌入式電源電壓檢測器啟用。除了LQFP100以外,所有包上都有USB專用電源輸入,以允許更大的電源選擇。一套全面的節(jié)能模式允許低功耗應(yīng)用程序的設(shè)計。
STM32H750xB器件提供三種封裝,范圍從100針到240針/球。外設(shè)集包括所選設(shè)備的更改。
STM32H750特性
32位Arm Cortex-M7內(nèi)核
128千字節(jié)的閃存
安全
ROP, PC-ROP,主動篡改,安全固件升級支持,安全訪問模式
通用輸入/輸出
多達168個I/O端口具有中斷能力
復(fù)位和電源管理
低功率消耗
時鐘管理
互連矩陣
4個DMA控制器卸載CPU
多達35個通信外設(shè)
11模擬外設(shè)
圖形
LCD-TFT控制器高達XGA分辨率
Chrom-ART圖形硬件加速器(DMA2D),以減少CPU負載
硬件JPEG編解碼器
多達22個計時器和看門狗
加密加速
調(diào)試模式
96位的惟一ID
所有包都是ECOPACK2兼容的
STM32H750應(yīng)用領(lǐng)域
電機驅(qū)動和應(yīng)用控制
醫(yī)療設(shè)備
工業(yè)應(yīng)用
報警系統(tǒng),視頻對講機,暖通空調(diào)
家用音響設(shè)備
移動應(yīng)用、物聯(lián)網(wǎng)
PLC)
逆變器
斷路器
打印機和掃描儀
可穿戴設(shè)備:smartwatches
來源:STM32論壇網(wǎng)友moticsoft 版權(quán)歸原作者所有
直接轉(zhuǎn)載來源:STM32公眾號
責(zé)任編輯:David
【免責(zé)聲明】
1、本文內(nèi)容、數(shù)據(jù)、圖表等來源于網(wǎng)絡(luò)引用或其他公開資料,版權(quán)歸屬原作者、原發(fā)表出處。若版權(quán)所有方對本文的引用持有異議,請聯(lián)系拍明芯城(marketing@iczoom.com),本方將及時處理。
2、本文的引用僅供讀者交流學(xué)習(xí)使用,不涉及商業(yè)目的。
3、本文內(nèi)容僅代表作者觀點,拍明芯城不對內(nèi)容的準(zhǔn)確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關(guān)結(jié)果。
4、如需轉(zhuǎn)載本方擁有版權(quán)的文章,請聯(lián)系拍明芯城(marketing@iczoom.com)注明“轉(zhuǎn)載原因”。未經(jīng)允許私自轉(zhuǎn)載拍明芯城將保留追究其法律責(zé)任的權(quán)利。
拍明芯城擁有對此聲明的最終解釋權(quán)。