STM32的同步規則模式使用


    由於要采集電壓、電流以計算功率、阻抗等信息,STM32的同步規則模式很適合於這種情景。使用時有幾點需要注意的:

1、選擇正確的模式:ADC_Mode_RegSimult,即DUALMOD[3:0] = 0110,ADC2在雙模式中,這些位為保留位

2、開啟ADC的DMA,在雙ADC模式里,為了在主數據寄存器上讀取從轉換數據,必須使能DMA位,即使不使用DMA傳輸規則通道數據。只有ADC1和ADC3能產生DMA請求。所以只需設置ADC1的DMA:ADC_DMACmd(ADC1, ENABLE);

3、ADC2的轉換數據存在ADC1_DR的高半字;

4、不要在2個ADC上轉換相同的通道((兩個ADC在同一個通道上的采樣時間不能重疊)。

5、ADC2的CR2寄存器的第20位——EXTTRIG:規則通道的外部觸發轉換模式必須開啟(軟件啟動的時候也要),這樣才能利用到ADC1的觸發信號。不然的話,需要手動再軟啟動一次ADC2,例如ADC_SoftwareStartConvCmd(ADC2, ENABLE);

    但是,假如你設置了這個位之后,就不需要手動軟啟動ADC2了,所以考慮到同步,這樣比較好:

//都是軟啟動ADC_ExternalTrigConv_None

 /* Enable ADC2 external trigger conversion */
  ADC_ExternalTrigConvCmd(ADC2, ENABLE);//同步規則模式,可使用ADC1的觸發信號

 ADC_SoftwareStartConvCmd(ADC1, ENABLE); /* Start ADC2 Software Conversion */ //ADC_SoftwareStartConvCmd(ADC2, ENABLE);//不需要了

ADC_SoftwareStartConvCmd(ADC2, ENABLE);為什么可以,一方面它也設置了EXTTRIG位,另一方面也設置了SWSTART。但我覺得先用ADC_ExternalTrigConvCmd(ADC2, ENABLE);的話,一會只要ADC1一啟動,兩者就同時啟動了,這樣更正確一點。

 


免責聲明!

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



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