基于 STM32U5 片內溫度傳感器正確測算溫度

目錄預覽

1、引言

2、問題

3、小結

01

引言

STM32 在內部都集成了一個溫度傳感器,STM32U5 也不例外。這個位于晶圓上的溫度傳感器雖然不太適合用來測量外部環境的溫度,但是用于監控晶圓上的溫度還是挺好的,以防止芯片過溫運行。

02

問題

2.1.問題詳情

某客戶在使用 STM32U575ZIT6Q 時,使用 ADC4 對內部溫度傳感器 VSENSE進行采樣計算,但是總覺得溫度值不對。那么,應該如何對內部溫度傳感器信號的 ADC 采樣進行計算以得到正確溫度值呢?

2.2. 問題分析

首先,我們應該看一下參考手冊如何描述內部溫度傳感器的。參考手冊說明了,未經校準的內部溫度傳感器更適用于對溫度變化而非絕對溫度進行測量的應用。為了提高溫度傳感器測量的準確性,ST 在生產過程中將校準值存儲在每個器件的系統存儲器中,用戶可以在應用中去讀取這些數據。?

這個校準值是寫在數據手冊的,如圖 1 所示。

圖1. 內部溫度傳感器

這張表格告訴我們,校準值 TS_CAL1 的數值位于存儲器地址 0x0BFA0710 和0x0BFA0711,也就是它是一個 16-bit 的數據;同理,校準值 TS_CAL2 的數值位于存儲器地址 0x0BFA0742 和 0x0BFA0743。?

再回過頭來看一下參考手冊是如何描述怎么讀取內部溫度傳感器的溫度的,如圖 2 所示。

圖片

圖2. 讀取溫度傳感器

這里描述的是如何讀取內部溫度傳感器的溫度,前面主要介紹 ADC 的配置和對溫度傳感器的采樣,最后根據得到的數據使用公式進行計算,得到溫度值。前面的 ADC 的配置和采樣就不說了,我們主要來看一下公式的使用。

圖片

其中,

Temperature (in ℃) 就是內部傳感器的當前溫度結果;?

TS_DATA 為內部傳感器當前溫度對應的采樣值;?

TS_CAL2_TEMP 為校準值 2 的溫度值,TS_CAL2 為對應的采樣值,對于 STM32U5來說,TS_CAL2_TEMP 為 130℃,對應的采樣值存儲在 0x0BFA0742 和 0x0BFA0743;?

TS_CAL1_TEMP 為校準值 1 的溫度值,TS_CAL1 為對應的采樣值,對于 STM32U5來說,TS_CAL1_TEMP 為 30℃,對應的采樣值存儲在 0x0BFA0710 和 0x0BFA0711;?

對于 STM32U5 來說,公式可簡化為:

圖片

那么,是不是直接讀取了 TS_CAL2 和 TS_CAL1,放到公式里,然后通過 ADC 得到TS_DATA,就可以直接算溫度了呢?接著往下看。

2.3. 問題解決

在室溫下使用 NUCLEO-U575ZI-Q 做個實驗:?

讀取 0x0BFA0742 和 0x0BFA0743 得到 TS_CAL2 為 0x155D,也就是 0d5469;讀取 0x0BFA0710 和 0x0BFA0711 得到 TS_CAL1 的值為 0x102F,也就是 0d4143。?

此時,由 ADC1 對內部溫度傳感器進行采樣轉換,得到 TS_DATA 為 0xEAA,也就是0d3754。?

那么,如果直接放進去算:

室溫下,這個 0.66℃顯然不對。

2.3.1. 使用 ADC1 測量內部溫度傳感器的溫度值?

再來看數據手冊里對校準值的描述,如圖 3 所示。

圖3. 溫度傳感器校準值重要參數

這個表格有一個非常重要的參數,就是 ADC1 的參考電壓,它是 3.0V,而 NUCLEOU575ZI-Q 板子的 ADC 參考電壓為 3.3V。所以,這兩個 TS_CAL1 和 TS_CAL2 對于NUCLEO-U575ZI-Q 中的 STM32U575ZIT6Q 的內部溫度傳感器肯定是不能直接用的,需要先換算為 3.3V 參考電壓的值才行。?

所以,新的值計算如下:?

TS_CAL2 = 5469 × 3 / 3.3 = 4972?

TS_CAL1 = 4143 × 3 / 3.3 = 3766?

再回到剛才的實驗中,計算的公式如下:

這次算出來的結果為 29℃就對了。

2.3.2. 使用 ADC4 測量內部溫度傳感器的溫度值?

那對于 ADC4 是否也是一樣的呢??

首先,要知道在 STM32U5 中,ADC1 為 14-bit SAR ADC,而 ADC4 為 12-bit SARADC。同樣的這塊板子,同樣的室溫下,由 ADC4 對內部溫度傳感器進行采樣轉換得到的值是 0x3AA,也就是 0d938。?

要使用 0d938 計算溫度值,TS_CAL1 和 TS_CAL2 也要相應轉為 12 位的數據才行。將它們由 14 位數據轉為 12 位的數據,相當于就是右移 2 位,也相當于除以 4。?

由于參考電壓仍然是 3.3V,所以針對 ADC4 的 TS_CAL2 和 TS_CAL1 應該計算如下:?

TS_CAL2 :由讀取到的 0x155D 右移 2 位,得到 0x557,也就是 0d1367,再換算成3.3V 的 。?

TS_CAL2 = 1367 × 3 / 3.3 = 1243也可以直接使用上面 ADC1 例子的值來計算。?

TS_CAL2 = 4972 / 4 = 1243?

TS_CAL1 :由讀取到的 0x102F 右移 2 位,得到 0x40B,也就是 0d1035,再換算成3.3V 的 。?

TS_CAL2 = 1035 × 3 / 3.3 = 941?

也可以直接使用上面 ADC1 例子的值來計算。?

TS_CAL2 = 3766 / 4 = 941?

計算的公式如下:

算出來的結果也是 29℃。

03

小結

當我們使用芯片的內部溫度傳感器計算內部溫度時,需注意校準值是使用哪個 ADC、在什么參考電壓下得到的。當實際應用與內部溫度傳感器校準時所使用 ADC 及條件不一樣時,應該對存儲單元里的校準值先做計算轉化,然后才可以使用參考手冊所提供的公式進行計算,否則將會得到錯誤值。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714035.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714035.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714035.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# - 類與類之間的繼承關系判斷

Type.IsSubclassof(Type type) 作用:用來確定 一個類是否派生自另一個類/ValueType/Enum/委托 不能用于確定:接口是派生自另一個接口,還是類實現接口 class A{} class B : A{}A a; B b;var boo b.GetType().IsSubclassOf(typeof(A)) // t…

sqllabs第五關floor報錯注入

實驗環境sqllabs第五關 floor()報錯注入的原因是group by在向臨時表插入數據時,由于rand()多次計算導致插入臨時表時主鍵重復,從而報錯,又因為報錯前concat()中的SQL語句或函數被執行,所以該語句報錯且被拋出的主鍵是SQL語句或函…

go語言中的協程和Java中線程以及進程的區別

理解 Go 語言中的協程(Goroutine)、Java 中的線程和進程之間的區別可以從以下幾個方面來看: 輕量性: Goroutine(協程): 協程是非常輕量級的執行單位,創建和銷毀的成本很低。在 Go 中…

深入理解Lambda表達式:基礎概念與實戰演練【第114篇—python:Lambda表達式】

深入理解Lambda表達式:基礎概念與實戰演練 在現代編程語言中,Lambda表達式作為一種輕量級的匿名函數形式,越來越受到程序員的青睞。特別是在函數式編程興起的今天,Lambda表達式在簡化代碼、提高可讀性方面發揮著重要作用。本文將…

C++筆記(六)--- 靜態成員變量/函數(static)

目錄 C語言中靜態變量 C靜態成員變量 C靜態成員函數 C語言中靜態變量 1.函數內部用static修飾的變量,只能在此函數使用,但所修飾的變量不隨函數釋放而釋放,下次調用時的值仍為上次結束時的值2.static修飾的全局變量只能在其定義的文件使用…

華為OD技術面試案例6-2024年

個人情況:西電本,二戰某985基本寄了。知識儲備方面:無任何408基礎,學校開過數據結構課程60分過,python純靠自學,無任何刷題經驗,無項目經驗,簡歷東拼西湊。 大概是12月底和OD聯系&a…

數據可視化原理-騰訊-熱力圖

在做數據分析類的產品功能設計時,經常用到可視化方式,挖掘數據價值,表達數據的內在規律與特征展示給客戶。 可是作為一個產品經理,(1)如果不能夠掌握各類可視化圖形的含義,就不知道哪類數據該用…

CSP-201712-2-游戲

CSP-201712-2-游戲 解題思路 初始化變量:定義整數變量n和k,分別用來存儲小朋友的總數和淘汰的特定數字。然后定義了num(用來記錄當前報的數)和peopleIndex(用來記錄當前報數的小朋友的索引)。 初始化小朋…

MATLAB環境下基于離散小波變換的體外血管圖像處理

下面簡要介紹小波變換的部分應用。 信號去噪。小波去噪是根據有效信號和噪聲信號在小波變換后表現出的不同特性實現的,一般可用于去除語音、圖像、視頻等中的噪聲信號。小波去噪方法根據對小波系數的非線性處理方式分為三類,分別是小波變換模極大值去噪…

電子電器架構新趨勢 —— 最佳著力點:域控制器

電子電器架構新趨勢 —— 最佳著力點:域控制器 我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師(Wechat:gongkenan2013)。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師…

備戰藍橋杯---狀態壓縮DP基礎1之棋盤問題

它只是一種手段,一種直觀而高效地表示復雜狀態的手段。 我們先來看一道比較基礎的: 直接DFS是肯定不行,我們發現對某一行,只要它前面放的位置都一樣,那么后面的結果也一樣。 因此我們考慮用DP,并且只有0/…

Vue3+Element-Plus中ELMessage樣式丟失處理

Vu3Element-Plus項目中,element-plus使用按需引入有時會出現樣式失效和在vscode中使用會報錯[找不到名稱“ElMessage”。ts(2304)]錯誤 ELMessage彈框樣式丟失處理方法 使用按需引入就不能手動再引入 import { ElMessage } from "element-plus";ElMessage.success…

藍橋杯-單片機組基礎6——定時計數器與外部中斷混合使用(附小蜜蜂課程代碼)

藍橋杯單片機組備賽指南請查看這篇文章:戳此跳轉藍橋杯備賽指南文章 本文章針對藍橋杯-單片機組比賽開發板所寫,代碼可直接在比賽開發板上使用。 型號:國信天長4T開發板(綠板),芯片:IAP15F2K6…

常見的瀏覽器跨域解決方法

1. 前端方法&#xff1a;JSONP&#xff08;僅適用于GET請求&#xff09; JSONP&#xff08;JSON with Padding&#xff09;是一種利用<script>標簽的src屬性不受同源策略限制的特性來實現跨域數據請求的方法。JSONP通過在前端動態創建<script>標簽&#xff0c;并將…

4.1.CVAT——目標檢測的標注詳細步驟

文章目錄 1. 進入任務1. 創建任務2. 已創建的task3. 進入標注界面 2. 選擇標注類型2.1 選擇標注類型2.2 進行標注2.3 遮擋 2.快捷鍵3.導出標注結果 1. 進入任務 登錄后會看到如下圖界面&#xff0c;CVAT的標注最小單位是Task&#xff0c;每個Task為一個標注任務。點擊Task按鈕…

[法規規劃]國家數據局局長劉烈宏《激活數據要素價值》演講要點解析

國家數據局黨組書記、局長劉烈宏在北大光華論壇上發表了題為《激活數據要素價值》的演講&#xff0c;當時曾極大推動了市場熱度&#xff0c;引發了行業思考。現在演講過去了一段時間&#xff0c;但是溫故而知新&#xff0c;我們不妨結合演講之后的市場反應&#xff0c;回顧一下…

蚓鏈數字化快速轉型五步

數字化轉型對于許多企業來說是一個頭痛的問題&#xff0c;因為他們可能感到缺乏明確的方向和方法。不過&#xff0c;蚓鏈數字化生態系統提出了一套快速轉型五步法&#xff0c;旨在幫助企業明確目標、建立團隊、設計權益、提供思維和方法&#xff0c;并共享生態資源&#xff0c;…

【java任意文件漏洞修復,使用文件魔數解決】

java任意文件漏洞修復&#xff0c;使用文件魔數解決 背景&#xff1a; 客戶進行滲透測試&#xff0c;驗證上傳文件的程序沒有對上傳文件作任何過濾&#xff0c;導致可以上傳任意文件到服務器&#xff0c;甚至是病毒文件和Webshell木馬文件。 解決辦法&#xff1a;對于上傳的附件…

html基本標簽

<h1></h1> <p></p> h是標簽從h1~h6&#xff0c;沒用h7,h8 p是段落 <a href"https://www.educoder.net">Educoder平臺</a> href可以指定鏈接進行跳轉 <img src"https://www.educoder.net/attachments/download/2078…

【論文精讀】DALLE: Zero-Shot Text-to-Image Generation零樣本文本到圖像生成

文章目錄 一、前言二、摘要三、方法&#xff08;一&#xff09;主要目標&#xff08;二&#xff09;stage 1&#xff1a;訓練離散變分自動編碼器&#xff08;dVAE&#xff09;&#xff08;三&#xff09;stage 2&#xff1a;訓練自回歸轉換器&#xff08;四&#xff09;公式表達…