STM32 之ADC單次轉換模式和連續轉換模式


一、背景

   在STM32中的AD的單通道采樣中可以設置成單次轉換模式和連續轉換模式,如何理解這兩個轉換模式的區別,通過程序又是怎樣實現的?

二、正文

  首先理解單次轉換模式,即ADC進行單次轉換(單樣本)的單通道X(參見圖1。)並停止轉換完成后。

 連續轉換模式,即ADC在常規信道轉換中連續地、無限地轉換單信道,如下圖所示。

在STM32的ADC庫函數中主要由 ADC_InitStructure.ADC_ScanConvMode = DISABLE; 來決定AD采集工作在單次轉換模式(DISABLE)或者是連續轉換模式(ENABLE)。而我在程序中是設置單次轉換模式,按照單次轉換模式的理解應該只轉換一次,但運行主程序后卻一直可以采集出數據。

 

//設置指定ADC的規則組通道,一個序列,采樣時間
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 ); //ADC1,ADC通道,采樣時間為239.5周期

ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的軟件轉換啟動功能

while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待轉換結束

return ADC_GetConversionValue(ADC1); //返回最近一次ADC1規則組的轉換結果

 

經過看數據手冊ADC的寄存器如下所示,

發現主程序每次循環后AD采集都會進行開始轉換通道的開啟,即這個函數ADC_SoftwareStartConvCmd(ADC1, ENABLE); 所以是采集結束后循環一次之后又開始采集。當我把這個函數ADC_SoftwareStartConvCmd(ADC1, ENABLE); 放到ADC的初始化中就到發現只采集一次。

另外,當我把這個函數ADC_SoftwareStartConvCmd(ADC1, ENABLE); 放到ADC的初始化中,並且把AD采集工作模式更改為連續轉換模式,

即是

ADC_InitStructure.ADC_ContinuousConvMode =ENABLE;可在主程序中看到AD一直是連續采集的。

以上分析在程序中可明顯區分出單次和連續轉換模式。

 

 

                                                                                           ----2017-2-9 深圳Aplex—Yang


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM