Hands-On 基於 LKS32MC453 開發板使用 ADC 讀取晶片溫度

關鍵字 :LKS32MC453開發板溫度傳感器mcu453傳感器

一、簡介

本文主要介紹如何在 LKS_EVB_MCU453_V2.0 開發板上通過 ADC 讀取晶片溫度。晶片內置溫度傳感器,在 -40~85℃ 範圍內精度為 2℃。85~105℃ 範圍內精度為 3℃。溫度傳感器信號連至 ADC2 的通道14。

硬體平台:LKS_EVB_MCU453_V2.0 開發板、LPCLINK2 Debugger

軟體平台:Keil

參考例程:LKS32MC45x_PeripDemo_v2.9

圖1 LKS 板
圖1 LKS 板


圖2  LPC

圖2  LPC

二、Demo 示例

按照如圖所示路徑雙擊打開Demo 文件。


圖3


圖4 出自 LKS32MC45x_PeripDemo_v2.9

圖4 出自 LKS32MC45x_PeripDemo_v2.9

2.1 主函數

       連續地採集溫度傳感器的數據並計算出溫度值儲存在 TEMP 這個變量中,所以我們可以在調試的時候,選擇 TEMP 這個變量到窗口就可以觀測到溫度數值的變化。ADC_Trigger(ADC2) 就是軟體觸發 ADC 採樣函數。軟體觸發寄存器 ADCx_SWT 寫入數據為 0x5AA5 時,產生一次軟體觸發。下面的式子是為 ADC 採樣結果進行轉換計算。詳情如下:

圖5 出自 LKS32MC45x_UM_v1.54

圖5 出自 LKS32MC45x_UM_v1.54

圖中 X 軸為溫度傳感器的溫度信號所對應的 ADC 值,Y 軸為傳感器所處的溫度。

        測溫時,按照如上要求配置傳感器相關寄存器,並得到 ADC 值後,將 ADC 值作為 X 代入公式:

y=-0.1398x+342.57。求得的 Y 值即為此時的溫度。

       公式中有兩個係數,a=-0.1398, b=342.57。對於不同的晶片,b 係數的值是不一樣的。晶片出廠前會經過溫度標定,將每顆晶片所對應的係數 b 寫入 flash 的 info 區,地址為 0x00000944。存儲時,會將 b 係數小數點右移一位(乘10)存入 info 區,小數點後第二位不進行保存。

       同時為方便客戶操作,係數 a 也會存入 flash info 區,地址為 0x00000940。存儲時,將 a 係數小數點右移四位(乘10000)存入 info 區。

       實際使用中,應從 flash info 區對應地址讀出 a/b 係數,同時將讀取到的 ADC 測到的當下溫度傳感器值代入公式,即可計算得到當下溫度值,單位為攝氏度。計算時,需注意係數 a/b 在保存時小數點的位移數,即a 係數應除以 10000,b 係數除以 10。

注意,上述計算公式,基於 ADC 右對齊實現。若換成左對齊,ADC 採樣值需右移 2 位後,才能代入上述公式。

2.2 函數 Hardware_init()

進入函數 Hardware_init(),配置硬體初始化相關內容

圖6出自 LKS32MC45x_PeripDemo_v2.9

圖6出自 LKS32MC45x_PeripDemo_v2.9

這段代碼是一個硬體初始化函數,主要的步驟包括:

        2.2.1中斷和使能配置:

        __disable_irq();禁用所有中斷。這是為了確保在進行硬體初始化時,不會有中斷打斷當前的初始化過程,從而避免潛在的競爭條件和不一致的狀態。SYS_WR_PROTECT = 0x7a83; 解除對系統寄存器的寫保護,以便可以對系統寄存器進行配置和初始化。依據來自以下。配置完後繼續打開寫保護和啟用中斷。

圖7 出自LKS32MC45x_UM_v1.54

圖7 出自LKS32MC45x_UM_v1.54

2.2.2 ADC初始化ADC2_init():

        用於初始化 ADC2 的自定義函數。通常涉及配置其工作模式、採樣率、輸入通道、解析度等參數。之後用 SoftDelay(100) 延時 100us 等待初始化完成。

圖8 出自LKS32MC45x_PeripDemo_v2.9



圖8 出自LKS32MC45x_PeripDemo_v2.9

因為此篇為軟體觸發,ADC中斷使能和 ADC 觸發 DMA 使能都關閉。

採樣數據對齊方式為左對齊。

ADC 高增益使能。

選擇過採樣觸發模式。

過採樣率,實際結果為 1 次採樣後的平均值。

連續採樣模式關閉。

觸發一次採樣一次。

第一段採樣一個通道,第二段採樣一個通道。

ADC 單段觸發模式。

不使用硬體觸發採樣。

ADC 模擬看門狗 0 不監測任何數據。

ADC 模擬看門狗 1 不監測任何數據。

溫度傳感器信號連至 ADC2 的通道 14。所以選擇 ADC2 DAT0 通道 14 。

三、硬體連接方式

圖9 出自LKS_EVB_MCU453_V2.0

圖9 出自LKS_EVB_MCU453_V2.0

        LKS 採用 SWD 接口方式連接,在板子上有接出 SWD 燒錄口如圖所示。SWD 的接口定義如圖所示,按照如圖進行連接。

3.1 LPC Debugger方式


圖10

       如圖所示,LPC Debugger 板和 LKS_EVB_MCU453_V2.0 板連接,通過板上接口 GND、DIO、CLK、3.3V 與 SWD 的對應接口相連。這是本文選擇的調試方式。

四、編譯和下載

 

圖11

  1. 左:構建目標文件。
  2. 右:構建所有文件。
  3. 下載代碼到閃存。
  4. 啟動調試。

先按 1 編譯,2下載到板上即可。

五、實驗現象

圖12 出自 LKS32MC45x_PeripDemo_v2.9

圖12 出自 LKS32MC45x_PeripDemo_v2.9

進入到調試界面,點擊圖 11 的 ③,然後按照圖 12 所示把 Temp 選中右鍵添加到 watch1 窗口。

圖 13 出自 LKS32MC45x_PeripDemo_v2.9

圖 13 出自 LKS32MC45x_PeripDemo_v2.9


可以看到右邊出現了 TEMP 的 Value 一欄,顯示的就是 ADC 監測到的溫度值。

圖 14 出自 LKS32MC45x_PeripDemo_v2.9

圖 14 出自 LKS32MC45x_PeripDemo_v2.9

適當增加 MCU溫度 ,可以看到 TEMP 實時監測的溫度升高了一點。

六、總結

ADC 讀取晶片溫度可以幫助我們實時監測晶片的工作溫度,確保系統的穩定性和可靠性。

七、參考文獻

[1]  LKS32MC45x_DataSheet_V1.54

[2]  SDK:LKS32MC45x_PeripDemo_v2.9

[3] 原理圖:LKS_EVB_MCU453_V2.0

[4] LKS32MC45x_UM_v1.54



歡迎在博文下方留言評論,我們會及時回復您的問題。

如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com   
作者:小梨

更多資訊,請掃碼關注我們!

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論