f * s = 1,時間與週期成反比。
如下引數:
以系統時鐘頻率為72mhz,adc分頻因子為rcc_pclk2_div6, adc的取樣時間為adc_sampletime_1cycles5,進行計算
adcclk(adc的時鐘頻率 ) = 72mhz(系統時鐘頻率) / 6 (adc分頻因子) = 12mhz。
乙個adc週期占用的時間 = 1 / 時鐘頻率 = 1 / 12mhz = 0.0833334 us
一次取樣總的時間 = 取樣時間 + 12.5個週期 = 1.5週期 + 12.5週期 = 14週期 = 14 * 0.0833334 = 1.166667 us
兩次取樣間隔時間 = 1.166667 us (adcclk為12mhz時的最小取樣間隔時間)
同理,計算adcclk為12mhz時的最大取樣間隔時間 = 239.5週期 + 12.5週期 = 252週期 = 21 us
場景:
例:adc基準電壓為3.3v,進行採集電壓值為1.65v。使用ad進行取樣,取樣值比應為0.5,但是實際取樣值比在0.5附近徘徊。
處理:
韌體庫使用adc_startcalibration()函式進行adc校準;
hal庫使用hal_adcex_calibration_start()函式進行adc校準。
注意:
adc校準過程應該在 adc開始函式之前,或者adc結束函式之後。
以hal為例:
hal_adcex_calibration_start(&hadc);
hal_adc_start(&hadc);
hal_adc_pollforconversion(&hadc, 0xffff);
value = hal_adc_getvalue(&hadc);
hal_adc_stop(&hadc);
場景:
例:adc基準電壓為3.3v,進行採集電壓值為1.65v。使用ad進行迴圈取樣,取樣值比應為0.5,但是實際取樣值每次都小於0.5,並且誤差較大。
處理:
由於取樣週期太小導致取樣不準確。
合理增大取樣週期,視專案功能而定。
例如將adc_sampletime_1cycles5修改為adc_sampletime_239cycles5。
覺得有用請點贊,謝謝!!!
STM32 ADC轉換時間
stm32f103xx的adc的取樣時鐘最快14mhz,最快取樣率1mhz。adc時鐘 這個adc時鐘是從哪來的呢。我們看下面這個stm32的時鐘結構圖 我們大多使用stm32的最快pclk2系統時鐘72mhz。adcclk的時鐘由72mhz的6分頻能瞞住14mhz以下的要求 為12mhz。rcc ...
STM32 ADC轉換時間
stm32f103xx的adc的取樣時鐘最快14mhz,最快取樣率為1mhz。adc時鐘 這個adc時鐘是從哪來的呢。我們看下面這個stm32的時鐘結構圖 我們大多使用stm32的最快pclk2系統時鐘72mhz。adcclk的時鐘由72mhz的6分頻能瞞住14mhz以下的要求 為12mhz。rcc...
adcclk最大 STM32 ADC轉換時間
stm32f103xx的adc的取樣時鐘最快14mhz,最快取樣率為1mhz。adc時鐘 這個adc時鐘是從哪來的呢。我們看下面這個stm32的時鐘結構圖 我們大多使用stm32的最快pclk2系統時鐘72mhz。adcclk的時鐘由72mhz的6分頻能瞞住14mhz以下的要求 為12mhz。rcc...