STM32 ADC 是一個12 位精度、 一種逐次逼近型模擬數字轉換器。它有多達18個通道,可測量16個外部和2個內部信號源。各通道的A/D轉換可以單次、連續、掃描或間斷模式執行。 ADC的結果可以左對齊或右對齊方式存儲在16位數據寄存器中。
ADC的輸入時鐘不得超過14MHz,它是由PCLK2經分頻產生。轉換時最快為1us,當ADC的輸入時鐘超過14MHz 時其會損失一些精度。當然如果可以達到我們的精度,輸入時鐘高點也沒事。
在網上看到一回答ADC不超過14MHz 的答案:資料上的都是推薦,事實上很多晶片的設計都是有超額餘量的,很多人都會超額的利用這些資源,並且很好的工作。
若所看的程序頻率是超過14M,也沒有錯,可能作者的目的在於快速而寧願損失一些精度,ADC的解析度是12位,若是超過這個頻率也是工作的,只不過採樣到的精度可能僅到10位,若這個已到 作者的要求,也無錯誤之說了。
2、看參考手冊,確定ADC 的時鐘以及通道採樣時間:
1)ADC 時鐘 ADC 接在APB2 上,APB2的時鐘為72MHz,通過分頻的方式給ADC 提供時鐘,預分頻主要有2、4、6、8 四種分頻方式。
2)通道採樣時間 通道採樣時間會影響採樣的精度。
3、轉換時間
公式:TCONV = 採樣時間+ 12.5 個周期
例如:當
ADCCLK=14MHz和1.5周期的採樣時間
TCONV = 1.5 + 12.5 = 14
周期=1μs
例如:當ADCCLK=14MHz 和1.5 周期的採樣時間 TCONV = 1.5 + 12.5 = 14 周期 = 1μs
1)一般情況,如果是軟體啟動,那麼轉換時間即是採樣周期。
2)若通過定時器進行觸發啟動ADC,則還需要加上定時器的相關時間。
4、確定採樣率
1)如果我們的輸入信號是 20KHz (周期為 50us),若要將它恢復出來,一個周期最少採樣20個點,此時採樣率要達到400KHz,所以ADC的採樣率必須在400KHz 以上。為
了達到最好的精度,我們選取ADC時鐘為12MHz,即6分頻。在12MHz 以及保證採樣率的情況下,採樣時間越長其,準確性就越好。
可以計算 2.5us = (12.5 + 採樣時間)/ 12MHz ,可以求得採樣時間為17.5;所以採樣時間的選擇必須小於等於17.5個周期,才能保證採樣率在400KHz 以上。所以我們可以選
擇1.5、7.5、13.5,為獲得更高的精準度,我們可以選擇13.5個周期。
切記採樣點數必須達到要求。
1.首先確定ADC 的時鐘,這裡需要看你的RCC的設置。在採用固件庫的基礎上,設定ADC的採樣頻率相對來說是很容易的。
(1)由時鐘控制器提供的ADCCLK 時鐘和PCLK2(APB2 時鐘)同步。CLK 控制器為ADC 時鐘提供一個專用的可編程預分頻器。
(2) 一般情況下在程序 中將 PCLK2 時鐘設為 與系統時鐘 相同
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
(3)在時鐘配置寄存器(RCC_CFGR) 中 有 為ADC 時鐘提供一個專用的可編程預分器
位15:14 ADCPRE:ADC預分頻
由軟體設置來確定ADC時鐘頻率
00:PCLK2 2分頻後作為ADC時鐘
01:PCLK2 4分頻後作為ADC時鐘
10:PCLK2 6分頻後作為ADC時鐘
11:PCLK2 8分頻後作為ADC時鐘
我們可對其進行設置 例如:
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
另外 還有 ADC 時鐘使能設置
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2 |
RCC_APB2Periph_GPIOC, ENABLE);
(4)採樣時間和轉換時間
ADC 使用若干個ADC_CLK 周期對輸入電壓採樣,採樣周期數目可以通過
ADC_SMPR1 和ADC_SMPR2 寄存器中的SMP[2:0]位而更改。每個通道可以以
不同的時間採樣。
總轉換時間如下計算:
TCONV = 採樣時間+ 12.5 個周期
例如:
當ADCCLK=36MHz 和239.5 周期的採樣時間
TCONV = 239.5 + 12.5 = 252周期 = 7μs
若你採樣的是1KHz的正弦波信號,採樣了10000個點,則其中就有70個周期。
打開APP閱讀更多精彩內容聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴