STM32 ADC 介紹
STM32 ADC 是一個12 位精度、 一種逐次逼近型模擬數(shù)字轉換器。它有多達18個通道,可測量16個外部和2個內部信號源。各通道的A/D轉換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。 ADC的結果可以左對齊或右對齊方式存儲在16位數(shù)據(jù)寄存器中。
ADC的輸入時鐘不得超過14MHz,它是由PCLK2經分頻產生。轉換時最快為1us,當ADC的輸入時鐘超過14MHz 時其會損失一些精度。當然如果可以達到我們的精度,輸入時鐘高點也沒事。
在網(wǎng)上看到一回答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)若通過定時器進行觸發(fā)啟動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個周期。
切記采樣點數(shù)必須達到要求。
采樣頻率的確定
1.首先確定ADC 的時鐘,這里需要看你的RCC的設置。在采用固件庫的基礎上,設定ADC的采樣頻率相對來說是很容易的。
(1)由時鐘控制器提供的ADCCLK 時鐘和PCLK2(APB2 時鐘)同步。CLK 控制器為ADC 時鐘提供一個專用的可編程預分頻器。
(2) 一般情況下在程序 中將 PCLK2 時鐘設為 與系統(tǒng)時鐘 相同
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
?。?)在時鐘配置寄存器(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);
?。?)采樣時間和轉換時間
ADC 使用若干個ADC_CLK 周期對輸入電壓采樣,采樣周期數(shù)目可以通過
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個周期。
評論