一、簡介
本文主要介紹如何在 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 板
圖2 LPC
二、Demo 示例
按照如圖所示路徑雙擊打開Demo 文件。

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

圖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
這段代碼是一個硬體初始化函數,主要的步驟包括:
2.2.1中斷和使能配置:
__disable_irq();禁用所有中斷。這是為了確保在進行硬體初始化時,不會有中斷打斷當前的初始化過程,從而避免潛在的競爭條件和不一致的狀態。SYS_WR_PROTECT = 0x7a83; 解除對系統寄存器的寫保護,以便可以對系統寄存器進行配置和初始化。依據來自以下。配置完後繼續打開寫保護和啟用中斷。

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

圖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
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下載到板上即可。
五、實驗現象

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

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

圖 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 作者:小梨
更多資訊,請掃碼關注我們!
評論