STM32F203ADC內部溫度實驗

fhzmWJ發表於2020-12-07

ADC
Analog-to-Digital
指模/數轉換器或者模擬/數字轉換器
是指將連續變數的模擬訊號轉換為離散的數字訊號的器件

典型的模擬數字轉換器將模擬訊號轉換為表示一定比例電壓值的數字訊號


實驗原理
STM32有一個內部的溫度感測器,可以用來測量CPU及周圍的溫度(TA)。該溫度感測器在內部和ADCx_IN16輸入通道相連線,此通道把感測器輸出的電壓轉換成數字值。溫度感測器模擬輸入推薦取樣時間是17.1μs。STM32的內部溫度感測器支援的溫度範圍為:-40~125℃,精度為±1.5℃左右。

STM32F207 ADC特點

  • STM32的ADC是12位逐次逼近型的模擬數字轉換器,(位數是ADC重要的特性,8,12,16位的,決定ADC的精度)
  • 最多帶三個ADC控制器
  • 最多支援18個通道,可最多測量16個外部和2個內部訊號源。(ADC控制器可以連線到多個通道,切換模擬開關)
  • 支援單次和連續轉換
  • 轉換結束、注入轉換結束、和發生模擬看門狗事件時產生中斷
  • 通道0到通道n的自動掃描模式(模擬開關的切換,掃描模式)
  • 取樣間隔可以按通道程式設計
  • 規則通道和注入通道均有外部觸發選項
  • 轉換結果支援左對齊或右對齊方式儲存在16位資料暫存器(暫存器是16位的,但是ADC是12位的模擬轉換,所以有左對齊右對齊之分)
  • ADC轉換時間:最大轉換速率1us。(最大轉換速度位1MHz,在ADCCLK=14M,取樣週期為1.5個ADC時鐘下得到。)
  • ADC供電要求:2.4V~3.6V
  • ADC輸入範圍:VREF<=VIN<=VREF+

ADC通道和引腳的對應:
小於144腳晶片只有16個外部通道

ADC引腳:
VREF+:輸入,模擬參考正極,ADC使用的高階/正極參考電壓,2.4V<=VREF+<=VDDA

VDDA(1): 輸入,模擬電源,等效於VDD的模擬電源且:2.4V<=VDDA<=VDD(3.6V)

VREF-:輸入,模擬參考負極,ADC使用的低端/負極參考電壓,VREF-=VSSA

VSSA:輸入,模擬電池地



參考電壓電壓和地

負參考電壓連線到地,正參考電壓連線到VDDA

規則通道相當於正常執行的程式,最多有16個通道。從上往下執行,從上往下執行。
注入通道相當於中斷,最多4個通道。規則通道跳到注入通道再轉回規則通道。

轉換結果存入暫存器

轉換結果的標誌位

如果用掃描模式需要DMA請求


ADC預分頻

注入通道和規則通道的轉換可以通過外部的一些事件來觸發。

STM32的ADC各通道可以單次,連續,掃描或者間斷模式進行。

單次轉換模式
ADC只執行一次轉換,設定ADC_CR2暫存器的ADON位(只適用於規則通道)啟動,也可以通過外部觸發啟動(適用於規則通道或注入通道),這時CONT位為0。

如果一個規則通道被轉換:
一旦選擇的通道轉換完成,轉換資料會儲存在ADC_DR暫存器裡,EOC轉換結束標誌位被設定為1,如果設定EOCIE則產生中斷。

如果一個注入通道被轉換:
轉換資料會被儲存在ADC_DRJ1暫存器中,JEOC注入轉換結束標誌被設定,如果設定了JEOCIE位,則產生中斷。

連續轉換模式
前面ADC轉換一結束馬上就啟動另一次轉換。自動轉換,如果是單次需要手動。

掃描模式
此模式用來掃描一組模擬通道。
掃描模式可通過設定ADC_CR1暫存器的SCAN位來選擇。一旦這個位置被設定,ADC掃描所有被ADC_SQRX暫存器(對規則通道)或ADC_JSQR(對注入通道)選中的所有通道。在每個組的每個通道上執行單次轉換。在每個轉換結束時,同一組的下一個通道被自動轉換。如果設定了CONT位,轉換不會在選擇組的最後一個通道上停止,而是再次從選擇組的第一個通道繼續轉換。
如果設定了DMA位,在每次EOC後,DMA控制器把規則組通道的轉換資料傳輸到SRAM中。而注入通道轉換的資料總是儲存在ADC_JDRx暫存器中。

ADC中斷
規則和注入組轉換結束時能產生中斷。都有獨立的中斷使能位。


ADC時鐘

不要讓ADC時鐘超過14MHz,否則可能不準。




SCAN:掃描模式的選擇 0關閉,1使用
JEOCIE:允許產生注入通道轉換結束中斷,0禁止JEOC中斷,1允許JEOC中斷。
EOCIE:允許產生EOC中斷 0禁止,1允許




ALIGN資料對齊,左對齊1,右對齊0
CONT連續轉換,0單次轉換模式,1連續轉換模式
ADON開/關A/D轉換器,

選擇外部事件




選擇通道的取樣時間,選擇取樣時間為多少個週期。


ADC的取樣時間
可程式設計通道的取樣時間
ADC使用若干個ADC_CLK週期對輸入電壓取樣,取樣週期數目可以通過ADC_SMPR1和ADC_SMPR2暫存器中的SMP[2:0]位更改。每個通道可以分別用不同的時間取樣。
總換算時間為:
TCONV=取樣時間+1.25個週期
比如當ADCCLK為14MHz,取樣週期為1.5週期
TCOBV=1.5+12.5=14週期=1μs 也是最小的轉換時間


規則序列暫存器

L是規則通道序列長度,由軟體定義在規則通道轉換序列中的通道數目。最多16個前面說過。


第幾個轉換對應哪個通道。


注入序列暫存器

和上面規則的差不多。


規則通道資料暫存器


狀態暫存器

一些標誌位



內部溫度感測器

溫度感測器固定連線到ADCx_IN16,並且需要使能TSVREFE位。
溫度值轉換為電壓值。

STM32有一個內部的溫度感測器,可以用來測量CPU及周圍的溫度(TA)。
溫度感測器模擬輸入推薦取樣時間是17.1μs。
STM32的內部溫度感測器支援的溫度範圍為:-40~125度。精度比較差,為±1.5攝氏度左右。
內部溫度感測器更適合於檢測溫度的變化,而不是測量絕對溫度。如果需要測量絕對溫度,應該使用一個外部溫度感測器。

相關文章