有人使用STM32F303VC開發(fā)電源方面的產(chǎn)品,想使用4個(gè)ADC模塊進(jìn)行同時(shí)采樣轉(zhuǎn)換,感覺不知怎么實(shí)現(xiàn)。這里簡單介紹下實(shí)現(xiàn)過程,以供參考。

現(xiàn)在希望四個(gè)ADC模塊同時(shí)進(jìn)行AD轉(zhuǎn)換。我們使用雙ADC主從模式,ADC1與ADC2成為一組,構(gòu)成主從模式。同樣,ADC3與ADC4也成為一組構(gòu)成主從模式。其中,ADC1和ADC3分別為各組中的主,并讓兩組都工作在同時(shí)轉(zhuǎn)換模式,對(duì)規(guī)則通道進(jìn)行ADC轉(zhuǎn)換。

它們的轉(zhuǎn)換使用同一定時(shí)器事件來觸發(fā),這里選擇TIM4的更新事件來觸發(fā)所有ADC的轉(zhuǎn)換。如下圖所示,主ADC的CH1與從ADC的CH16同時(shí)進(jìn)行轉(zhuǎn)換,主ADC的CH2與從ADC的CH14同時(shí)進(jìn)行轉(zhuǎn)換,就這樣依次按照紅色箭頭方向進(jìn)行。

對(duì)于工作在主從模式的雙ADC的轉(zhuǎn)換結(jié)果,可以合并成一個(gè)字放在一個(gè)公共數(shù)據(jù)寄存器里ADCx_CDR( x=12 or 34),能被CPU或DMA讀取訪問。其中高半字存放從ADC的轉(zhuǎn)換結(jié)果,低半字存放主ADC的轉(zhuǎn)換結(jié)果?!具@里各ADC的分辨率選用12位,轉(zhuǎn)換結(jié)果采用右對(duì)齊方式?!?/p>

大致原理就介紹到這里,更多細(xì)節(jié)還得看STM32參考手冊(cè)。
現(xiàn)在將4個(gè)ADC模塊用起來,同時(shí)進(jìn)行ADC轉(zhuǎn)換,通過DMA傳輸ADC結(jié)果。這里只用到規(guī)則轉(zhuǎn)換,其中,ADC1使用它的CH1/CH2,ADC2使用它的CH3/CH4, ADC3使用它的CH5/CH6, ADC4使用CH7/CH8。

各ADC模塊的采樣通道連接如下圖所示,ADC經(jīng)定時(shí)器事件觸發(fā)轉(zhuǎn)換。

現(xiàn)在基于STM32CubeMx進(jìn)行初始化配置。
先看TIM4的配置,它的更新事件作為所有ADC的轉(zhuǎn)換觸發(fā)事件。

然后根據(jù)上面的規(guī)劃,對(duì)4個(gè)ADC模塊進(jìn)行配置。

4個(gè)ADC的配置除了各自選擇的通道不一樣外,在上面頁面里的配置都相同。定時(shí)器觸發(fā),工作在雙模式同時(shí)轉(zhuǎn)換。
因?yàn)橐獙?duì)ADC結(jié)果實(shí)行DMA傳輸,根據(jù)當(dāng)前所選擇的工作模式,這里只需對(duì)ADC1和ADC3兩個(gè)主ADC的轉(zhuǎn)換事件進(jìn)行DMA配置,如下圖所示:

我這里將DMA傳輸配置成循環(huán)模式,基于ADC3事件的DMA傳輸配置跟上面一樣,只是DMA通道不同而已。
將時(shí)鐘等必要的配置完成后即可生成初始化代碼。在初始化代碼的基礎(chǔ)上添加用戶代碼。
我定義了2個(gè)數(shù)組pData12[4]、pData34[4]分別存放ADC1/2 與ADC3/4合并后的轉(zhuǎn)換結(jié)果。

基于STM32Cube HAL庫組織代碼,相關(guān)參考代碼如下:

代碼直觀明了,無須過多解釋。提醒一點(diǎn),使用雙ADC模式時(shí),從ADC要先于主ADC啟動(dòng)使能。
基于上面的規(guī)劃與代碼,測(cè)試結(jié)果如下:

結(jié)果跟實(shí)際硬件連接情況完全吻合。
上面只是基于雙ADC模塊規(guī)則通道的同時(shí)轉(zhuǎn)換模式做了簡單應(yīng)用介紹。其實(shí)對(duì)于雙ADC模式,還有其它更多轉(zhuǎn)換模式,在STM32開發(fā)應(yīng)用中可以靈活選擇使用。
責(zé)任編輯:pj
-
電源
+關(guān)注
關(guān)注
185文章
18841瀏覽量
263502 -
adc
+關(guān)注
關(guān)注
100文章
7511瀏覽量
555939 -
產(chǎn)品
+關(guān)注
關(guān)注
0文章
91瀏覽量
23875
發(fā)布評(píng)論請(qǐng)先 登錄
SA818Pro 無線數(shù)據(jù)和語音對(duì)講模塊規(guī)格書
ADC單通道的轉(zhuǎn)換
請(qǐng)問CW32F030的ADC轉(zhuǎn)換器支持哪些通道轉(zhuǎn)換?
CW32L010_ADC介紹
?ADC122S655 雙通道12位同步采樣模數(shù)轉(zhuǎn)換器技術(shù)文檔總結(jié)
?ADC122S625 雙通道12位同步采樣模數(shù)轉(zhuǎn)換器技術(shù)規(guī)格總結(jié)
CW32L010 ADC啟動(dòng)轉(zhuǎn)換后,8個(gè)通道全部開始轉(zhuǎn)換嗎?
ADS8556 630kSPS 6通道同時(shí)采樣ADC技術(shù)手冊(cè)
多通道ADC數(shù)模轉(zhuǎn)換器電池管理系統(tǒng)解決方案
NuMicro?系列微控制器中具有相同模塊的ADC的每個(gè)通道是否可以同時(shí)采樣?
Texas Instruments ADC3669EVM ADC評(píng)估模塊 (EVM)數(shù)據(jù)手冊(cè)
雙ADC模塊規(guī)則通道同時(shí)轉(zhuǎn)換的應(yīng)用介紹
評(píng)論