adc 取樣時間 取樣週期數 取樣頻率計算(以stm32為例)
ADC轉換就是輸入模擬的訊號量,微控制器轉換成數字量。讀取數字量必須等轉換完成後,完成一個通道的讀取叫做取樣週期。
取樣週期一般來說=轉換時間+讀取時間。
而轉換時間=取樣時間+12.5個時鐘週期。
取樣時間是你通過暫存器告訴stm32取樣模擬量的時間,設定越長越精確
一 STM32 ADC取樣頻率的確定
1. :
先看一些資料,確定一下ADC的時鐘:
(1),由時鐘控制器提供的ADCCLK時鐘和PCLK2(APB2時鐘)同步。CLK控制器為ADC時鐘提供一個專用的可程式設計預分頻器。
(2) 一般情況下在程式 中將 PCLK2 時鐘設為 與系統時鐘 相同
/* HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* PCLK2 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* PCLK1 = HCLK/2 */
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時鐘
我們可對其進行設定 例如:
/* ADCCLK = PCLK2/4 */
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
另外 還有 ADC 時鐘使能設定
/* Enable ADC1, ADC2 and GPIOC clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2 |
RCC_APB2Periph_GPIOC, ENABLE);
(4)16.7 可程式設計的通道取樣時間
ADC 使用若干個ADC_CLK 週期對輸入電壓取樣,取樣週期數目可以通過
ADC_SMPR1和ADC_SMPR2暫存器中的SMP[2:0]位而更改。每個通道可以以
不同的時間取樣。
總轉換時間如下計算:
TCONV(轉換時間) = 取樣時間+ 12.5 個週期
例如:
當ADCCLK=14MHz 和 1.5週期的取樣時間:
TCONV = 1.5 + 12.5 = 14週期= 1μs
SMPx[2:0]:選擇通道x的取樣時間
這些位用於獨立地選擇每個通道的取樣時間。在取樣週期中通道選擇位必須保持不變。
000:1.5週期100:41.5週期
001:7.5週期101:55.5週期
010:13.5週期110:71.5週期
011:28.5週期111:239.5週期
注:
– ADC1的模擬輸入通道16和通道17在晶片內部分別連到了溫度感測器和VREFINT。
– ADC2的模擬輸入通道16和通道17在晶片內部連到了VSS。
2. 具體分析如下:
(1)我們的輸入訊號是50Hz (週期為20ms),初步定為1週期200個取樣點,(注:一週期最少採20個點,即取樣率最少為1k) ,每2個 取樣點間隔為 20ms /200 = 100 us
ADC可程式設計的通道取樣時間 我們選最小的 1.5 週期,則 ADC取樣週期一週期大小為
100us /1.5=66us 。 ADC 時鐘頻率為 1/66us =15 KHz。
ADC可程式設計的通道取樣時間 我們選71.5 週期,則 ADC取樣週期一週期大小為
(100us /71.5) 。 ADC 時鐘頻率為 7.15MHz。
(2)接下來我們要確定系統時鐘:我們 用的是 8M Hz 的外部晶振做時鐘源(HSE),估計得 經過 PLL倍頻 PLL 倍頻係數分別為2的整數倍,最大72 MHz。為了 提高資料 計算效率,我們把系統時鐘定為72MHz,(PLL 9倍頻)。則PCLK2=72MHz,PCLK1=36MHz;
我們通過設定時鐘配置暫存器(RCC_CFGR) 中 有 為ADC時鐘提供一個專用的可程式設計預分器,將PCLK2 8 分頻後作為ADC 的時鐘,則可知ADC 時鐘頻率為 9MHz
從手冊可知: ADC 轉換時間:
STM32F103xx增強型產品:ADC時鐘為56MHz時為1μs(ADC時鐘為72MHz為1.17μs)
(3)由以上分析可知:不太對應,我們重新對以上中 內容調整,提出如下兩套方案:
方案一:我們的輸入訊號是50Hz (週期為20ms),初步定為1週期2500個取樣點,(注:一週期最少採20個點,即取樣率最少為1k) ,每2個 取樣點間隔為 20ms /2500 = 8 us
ADC可程式設計的通道取樣時間 我們選71.5週期,則 ADC取樣週期一週期大小為
8us /71.5 。 ADC時鐘頻率約為 9 MHz。
將PCLK2 8 分頻後作為ADC 的時鐘,則可知ADC 時鐘頻率為 9MHz
方案二:我們的輸入訊號是50Hz (週期為20ms),初步定為1週期1000個取樣點,(注:一週期最少採20個點,即取樣率最少為1k) ,每2個 取樣點間隔為 20ms /1000= 20 us
ADC可程式設計的通道取樣時間 我們選239.5週期,則 ADC取樣週期一週期大小為
20us /239.5 。 ADC時鐘頻率約為 12 MHz。
將PCLK2 6 分頻後作為ADC 的時鐘,則可知ADC 時鐘頻率為 12MHz