首頁 > 評測 > 【STM32U599J-DK測評】工業(yè)溫度儀表盤
【STM32U599J-DK測評】工業(yè)溫度儀表盤
- [導(dǎo)讀]
- 本帖最后由 HonestQiao 于 2024-3-5 17:00 編輯 #申請原創(chuàng)# 在 STM32U599J-DK 開發(fā)板上,提供了一個MEMS溫度傳感器: 1875965df296401640.png (33.07 KB )下載附件2024-2-28 20:38 上傳 這篇評測分享,就是
本帖最后由 HonestQiao 于 2024-3-5 17:00 編輯
#申請原創(chuàng)# 在 STM32U599J-DK 開發(fā)板上,提供了一個MEMS溫度傳感器:
這篇評測分享,就是使用X-CUBE-MEMS,獲取溫度傳感器數(shù)據(jù),并在屏幕上進行顯示,最終的效果如下:
一、功能設(shè)計
這個工業(yè)溫度儀表盤要顯示當(dāng)前的溫度數(shù)據(jù),每秒刷新一次。
同時,還要累計歷史數(shù)據(jù),顯示5分鐘的平均值,以及15分鐘的平均值。
二、硬件了解
從開發(fā)板的手冊,可以了解到溫度傳感器的具體位置(U18):
從官方提供的原理圖中,可以看到具體的型號為STTS22H:
關(guān)于其詳細信息,可以從ST官網(wǎng)查看:https://www.st.com/zh/mems-and-sensors/stts22h.html
從上面的電路原理圖可知,其連接到了I2C3,對應(yīng)的引腳為PH7-SCL、PH8-SDA。
三、TouchGFX界面設(shè)計
1. 圖片準(zhǔn)備:
首先,準(zhǔn)備好一張背景圖:
這張圖是經(jīng)過仔細挑選的,搭配STM32U599J-DK的屏,完美。
并在TouchGFX項目中,添加該圖片:
2. 字體文件準(zhǔn)備
另外,還需要準(zhǔn)備一個LED字體:
并將該字體文件,放置到項目對應(yīng)的目錄下:
3. 字體設(shè)置:
對界面中,要顯示的字號設(shè)置對應(yīng)的字體規(guī)格:
對于顯示數(shù)值的部分,還有從特殊處理:
然后,在Config進行如下設(shè)置,確保最后字體能夠正常調(diào)用:
4 界面設(shè)計:
參考小圖,進行界面的設(shè)計:
對于要動態(tài)顯示數(shù)值的元素,需要做wildcard設(shè)置:
設(shè)計完成后,可以點擊預(yù)覽,查看效果:
四、STM32CubeMX配置
ST官方提供了X-CUBE-MEMS,其中已經(jīng)對STTS22H溫度傳感器提供了支持,可以很方便的通過配置集成,然后在程序中讀取數(shù)據(jù)。
1. 安裝X-CUBE-MEMS1
通過包管理,安裝需要的模塊:
2. MEMS模塊傳感器安裝:
從上述界面,點擊X-CUBE-MEMS1,進入包管理:
安裝其中的STTS22H和ENV_SENSOR兩個即可。
3. I2C3啟用:
因為STTS22H連接到了I2C3,對應(yīng)的引腳為PH7-SCL、PH8-SDA,在I2C3配置中開啟并進行設(shè)置:
4. 設(shè)置STTS22H
默認情況下,需要將STTS22H的Addr腳接地:
因此需要做如下的配置:
并設(shè)置使用I2C3:
設(shè)置完成后,關(guān)閉STM32CubeMX,自動生成最新的代碼。
五、代碼編寫
代碼部分,分為兩個部分,分別是初始化STTS22H,以及在MPV代碼中獲取溫度傳感器的數(shù)據(jù),并進行呈現(xiàn)。
1. 初始化STTS22H
在main.c中,使用如下的代碼完成初始化:
2. 溫度傳感器數(shù)據(jù)讀取
這個部分的處理,參考了ST官方TouchGFX手冊的后端通信部分:https://support.touchgfx.com/zh-CN/docs/development/ui-development/touchgfx-engine-features/backend-communication#sampling-from-gui-task
在MVP架構(gòu)中:
幀率為60Hz,也就是1秒刷新60次。
在這個分享中,溫度讀取不需要太高的速度,所以直接在幀刷新的過程中,進行溫度傳感器數(shù)據(jù)的讀取。
在Model的預(yù)定一種,添加對應(yīng)的屬性:
其中,counter用于計數(shù),每60次進入一次讀取。
temperature用于當(dāng)前溫度數(shù)據(jù)的測量,temps使用了向量vector來存儲歷史的數(shù)據(jù)。
tick()調(diào)用中,添加對應(yīng)的代碼:
在上述代碼中,會調(diào)用SENSOR接口,讀取STTS22H的數(shù)據(jù),然后存放到temps中,并計算5分鐘和15分鐘的平均值。
計算完畢后,通過modelListener->notifyTemperatureChanged(temp1, temp2, temp3),通知監(jiān)聽其的控制器,進行數(shù)據(jù)的更新處理。
在ModelListener中,有一個空的virtual函數(shù)定義:
其實際定義在對應(yīng)的控制器中:
最終,調(diào)用關(guān)聯(lián)的view,進行溫度值的設(shè)置。
在View中,做最終的呈現(xiàn)處理:
在上述代碼中,需要將要顯示的數(shù)據(jù),使用字符串的模式,存入對應(yīng)的Buffer中。
而這些Buffer,通過之前的界面設(shè)計,自動生成到代碼中,具體在ScreenViewBase中查看:
將上面的處理流程總結(jié)一下:
- 屏幕每秒刷新60次,也就是幀率為60Hz
- 在Model中,判斷刷新的次數(shù),每60次,也就是間隔1秒,進行一次溫度數(shù)據(jù)的讀取,并將讀取到的數(shù)據(jù)進行存儲
- 在Model中,根據(jù)存儲的數(shù)據(jù),取得當(dāng)前值,以及計算5分鐘平均值和15分鐘平均值
- 在Model中,計算完畢,通過ModelListener發(fā)出通知,要更新數(shù)據(jù)
- 在Presenter中,接收到通知,并調(diào)用自己當(dāng)前關(guān)聯(lián)的View的接口,進行溫度值的設(shè)置
- 在View中,進行實際的界面處理。
六、實際效果
編譯上述代碼,下載到開發(fā)板,最終的效果如下:
七、參考資料
在研究學(xué)習(xí)過程中,參考了很多資料,以下為還記得的部分。
對所有的資料,特此表示感謝:
- STTS22H 精度為0.5°C的低壓、超低功耗I2C/SMBus 3.0溫度傳感器
- C++ vector計算數(shù)組之和
- C++ vector 容器淺析
- C++浮點數(shù)組(vector, valarray)的二進制存取/讀寫
- 【STM32H750B-DK評測】6.傳感器數(shù)據(jù)讀取及TouchGFX界面顯示實戰(zhàn)
- TouchGFX后端通信
- TouchGFX之文本和字體
- 測評匯總:STM32U599J-DK
- TouchGFX: 第二部分TextArea外觀和通配符
- 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!
網(wǎng)友評論
- 聯(lián)系人:巧克力娃娃
- 郵箱:board@21ic.com
- 我要投稿
-
歡迎入駐,開放投稿
-
人均百萬?英偉達中國員工收入曝光! 2024-08-29
-
《黑神話:悟空》玩家硬盤升級攻略:提升游戲體驗,暢享3A大作 2024-08-29
-
數(shù)睿數(shù)據(jù)參加《系統(tǒng)與軟件工程 低代碼開發(fā)平臺通用技術(shù)要求》國家標(biāo)準(zhǔn)編制 2024-08-29
- NRF52810藍牙數(shù)字耳機找人定制
預(yù)算:¥30005天前
- 125KW模塊式PCS軟硬件外包開發(fā)
預(yù)算:¥1100000015小時前
- 12V汽車啟動電源項目BMS設(shè)計
預(yù)算:¥50000023小時前
- 數(shù)據(jù)可視化軟件 開發(fā)
預(yù)算:¥5000023小時前
- PLC項目調(diào)試修改
預(yù)算:¥100001天前
- 起動電機控制器開發(fā)
預(yù)算:¥1100001天前