有人使用STM32芯片做產(chǎn)品開發(fā),需用到多個(gè)通道的ADC轉(zhuǎn)換。大致需求是這樣的:
有2個(gè)ADC通道需要每10ms啟動(dòng)一次轉(zhuǎn)換,另外5個(gè)通道希望50ms啟動(dòng)一次轉(zhuǎn)換。試問如何實(shí)現(xiàn)上述功能比較好。
這里不妨以STM32F302芯片為例,來介紹兩種實(shí)現(xiàn)上述功能的大致方案以供參考。方案里涉及到ADC規(guī)則通道、注入通道的使用、DMA的使用、定時(shí)器的靈活使用,具備一定綜合性。下面介紹以貼圖為主,沒法一點(diǎn)一滴做解釋了。
第一種方案,我們使用ADC1模塊的CH1到CH7連續(xù)的7個(gè)通通來做AD轉(zhuǎn)換,其中CH6/CH7配置為注入通道【我將其戲稱之為插隊(duì)通道】,另外5個(gè)通道配置為規(guī)則通道。
其中,規(guī)則通道的觸發(fā)選用TIM1的觸發(fā)輸出信號【TRGO】,注入通道的觸發(fā)選擇TIM1通道4的比較事件。我們將TIM1的計(jì)數(shù)模式選擇向上單向計(jì)數(shù)模式,計(jì)數(shù)周期設(shè)置為10ms,并開啟TIM1_CH4的PWM輸出功能,周期也是10ms,這樣就可以實(shí)現(xiàn)每10ms觸發(fā)一次注入通道的轉(zhuǎn)換動(dòng)作。
另外,我們將RCR重復(fù)計(jì)數(shù)寄存器設(shè)置為4,即每溢出4+1次則產(chǎn)生一次定時(shí)器更新事件,并將其將做為TIM1的TRGO信號,這樣就保證了每50ms觸發(fā)一次規(guī)則通道的ADC動(dòng)作。【注:RCR寄存器只有高級定時(shí)器才有】
規(guī)則通道的ADC結(jié)果通過DMA取走送到指定內(nèi)存單元,DMA配置為Normal模式。
利用STM32CubeMx進(jìn)行配置后,添加必要的用戶代碼。
兩個(gè)數(shù)組分別存放規(guī)則通道和注入通道的轉(zhuǎn)換結(jié)果。
開啟TIM1以及通道4的PWM輸出;
開啟ADC規(guī)則通道/注入通道,只待觸發(fā)信號。
在規(guī)則通道的DMA傳輸完成中斷里重啟ADC的轉(zhuǎn)換。
編譯運(yùn)行查看結(jié)果【下表中分別為規(guī)則通道和注入通道結(jié)果】:
一路下來,只要各個(gè)環(huán)節(jié)都弄清楚、做到位了還是挺簡單的。
當(dāng)然,TIM1作為高級定時(shí)器有時(shí)可能有它用,沒法用在這里。我們知道,STM32芯片的定時(shí)器往往較多,而且很多都可以產(chǎn)生ADC的觸發(fā)事件,此時(shí)我們不妨稍加調(diào)整即可得出新方案。
比方還是開篇的應(yīng)用需求和STM32F3芯片,我們可將規(guī)則通道和注入通道的觸發(fā)事件分別調(diào)整為TIM6的觸發(fā)輸出和TIM15的觸發(fā)輸出,時(shí)間參數(shù)各種獨(dú)立配置即可。
好,本示例就介紹到這里,文筆不佳,但求行文簡捷。實(shí)現(xiàn)方案也不是唯一的,最終要結(jié)合具體應(yīng)用場景和所選擇的芯片型號。在此只希望能帶給大家一些相關(guān)應(yīng)用方面的啟示或借鑒。
-
芯片
+關(guān)注
關(guān)注
462文章
53235瀏覽量
454939 -
adc
+關(guān)注
關(guān)注
100文章
6851瀏覽量
552566 -
STM32
+關(guān)注
關(guān)注
2301文章
11087瀏覽量
369825
原文標(biāo)題:基于STM32多通道ADC綜合應(yīng)用示例
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
IPA1299低噪聲多通道人體生物電信號測量ADC芯片

STM32多通道FFT運(yùn)算異常的原因?怎么解決?
EEPROM芯片內(nèi)部的1路14bit ADC, ADC精度受使用通道數(shù)和采樣率是怎么樣的?

無線采發(fā)儀多通道 巖脈 在結(jié)構(gòu)健康與地質(zhì)災(zāi)害監(jiān)測中的應(yīng)用 VS-Box振弦、溫度及多信號采發(fā)儀
為什么在“PWM Adc Dma 344 S32CT”示例中使用ISR塊來讀取dma adc通道?
STM32G030F6 ADC+DMA多通道非連續(xù)采樣無法正常工作怎么解決?
STM32G474 ADC多通道采集結(jié)果為同一通道結(jié)果是怎么回事?
STM32采集ADC128S022選擇4路通道電壓值就不對了,采集一路0通道是對的,精度0.0幾個(gè)毫伏,為什么?
多通道的adc在切換通道的時(shí)候需要注意些什么?
多通道ADS8168每個(gè)通道的采樣速率是多少?
FPGA的多通道數(shù)據(jù)采集傳輸系統(tǒng)

評論