STM32的同步规则模式使用
??? 由于要采集電壓、電流以計(jì)算功率、阻抗等信息,STM32的同步規(guī)則模式很適合于這種情景。使用時(shí)有幾點(diǎn)需要注意的:
1、選擇正確的模式:ADC_Mode_RegSimult,即DUALMOD[3:0] = 0110,ADC2在雙模式中,這些位為保留位
2、開啟ADC的DMA,在雙ADC模式里,為了在主數(shù)據(jù)寄存器上讀取從轉(zhuǎn)換數(shù)據(jù),必須使能DMA位,即使不使用DMA傳輸規(guī)則通道數(shù)據(jù)。只有ADC1和ADC3能產(chǎn)生DMA請(qǐng)求。所以只需設(shè)置ADC1的DMA:ADC_DMACmd(ADC1, ENABLE);
3、ADC2的轉(zhuǎn)換數(shù)據(jù)存在ADC1_DR的高半字;
4、不要在2個(gè)ADC上轉(zhuǎn)換相同的通道((兩個(gè)ADC在同一個(gè)通道上的采樣時(shí)間不能重疊)。
5、ADC2的CR2寄存器的第20位——EXTTRIG:規(guī)則通道的外部觸發(fā)轉(zhuǎn)換模式必須開啟(軟件啟動(dòng)的時(shí)候也要),這樣才能利用到ADC1的觸發(fā)信號(hào)。不然的話,需要手動(dòng)再軟啟動(dòng)一次ADC2,例如ADC_SoftwareStartConvCmd(ADC2, ENABLE);
??? 但是,假如你設(shè)置了這個(gè)位之后,就不需要手動(dòng)軟啟動(dòng)ADC2了,所以考慮到同步,這樣比較好:
?ADC_SoftwareStartConvCmd(ADC1, ENABLE);/* Start ADC2 Software Conversion */ //ADC_SoftwareStartConvCmd(ADC2, ENABLE);//不需要了
用ADC_SoftwareStartConvCmd(ADC2, ENABLE);為什么可以,一方面它也設(shè)置了EXTTRIG位,另一方面也設(shè)置了SWSTART。但我覺得先用ADC_ExternalTrigConvCmd(ADC2, ENABLE);的話,一會(huì)只要ADC1一啟動(dòng),兩者就同時(shí)啟動(dòng)了,這樣更正確一點(diǎn)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/TrueElement/archive/2012/09/13/2683540.html
總結(jié)
以上是生活随笔為你收集整理的STM32的同步规则模式使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 反编译Apk (Mac)
- 下一篇: 微博html5版不能登录界面,爬取微博信