STM32G0系列單片機(jī)是ST新推出的一個(gè)系列,基于Arm Cortex-M0 +內(nèi)核,在嚴(yán)格的功率預(yù)算內(nèi)提供出色的性能。目前來說相比F系列的,價(jià)格也比較實(shí)惠。
但是新東西,就意味著資料相對(duì)較少,不過還好有STM32CubeMx這個(gè)工具,使用戶只關(guān)心應(yīng)用層程序即可,可以像F系列一樣使用,大大降低了開發(fā)難度。
當(dāng)然也會(huì)有一些意想不到的問題。今天調(diào)試G070的ADC就遇到一個(gè)問題,分享給大家,使大家少走彎路。
遇到問題
項(xiàng)目用到多通道ADC采樣,使用DMA+多通道掃描的方式,配置了以下4個(gè)通道:
使能了掃描模式、連續(xù)轉(zhuǎn)換模式和DMA:
但是在配置轉(zhuǎn)換通道時(shí),發(fā)現(xiàn)下拉菜單只有ADC_IN10和ADC_IN11,無法配置ADC_IN15和16通道:
原以為是我用的庫版本有BUG,于是更新到了最新的庫,發(fā)現(xiàn)還是這樣。然后就試著先生成代碼,手動(dòng)修改為ADC_IN15和16.程序運(yùn)行發(fā)現(xiàn)各個(gè)通道的數(shù)據(jù)都亂了。。。去掉這兩個(gè)通道就正常了。
心想,難道芯片有BUG?還是看看芯片的手冊(cè)吧,于是翻看了數(shù)據(jù)手冊(cè)和參考手冊(cè)。終于發(fā)現(xiàn)了問題所在,不是芯片本身的問題,而是使用的問題。
發(fā)現(xiàn)問題
G0系列的ADC在多通道掃描應(yīng)用時(shí)有兩種模式:
- Sequencer fully configurable
轉(zhuǎn)換序列號(hào)可完全配置。采用這種方式時(shí),多通道ADC的轉(zhuǎn)換順序是可以自定義的。如下,每個(gè)通道可單獨(dú)配置。
- Sequencer not fully configurable
轉(zhuǎn)換序列號(hào)不可配置。采用這種方式時(shí),多通道ADC的轉(zhuǎn)換順序是固定的,按照通道號(hào)從小到大的順序來依次轉(zhuǎn)換。如下圖,采用選擇這種方式時(shí),沒有單獨(dú)配置每個(gè)通道的選項(xiàng)。
在Sequencer fully configurable這種方式時(shí),參考手冊(cè)中有這樣兩句話:
這種方式最多支持8個(gè)序列通道,只有ADC_IN0~ADC_IN14通道才可以使用這種模式。
解決問題
所以說上面配置的ADC_IN15和16通道是無法配置的,修改為Sequencer not fully configurable模式后,重新生成代碼,運(yùn)行采樣后一切正常!
另外跟F系列不同的是,Sequencer fully configurable方式最多支持8個(gè)通道,使用超過8個(gè)通道時(shí)需要注意。
-
dma
+關(guān)注
關(guān)注
3文章
576瀏覽量
103275 -
Cortex-M0
+關(guān)注
關(guān)注
4文章
126瀏覽量
39525 -
STM32單片機(jī)
+關(guān)注
關(guān)注
59文章
550瀏覽量
59614 -
ADC采樣
+關(guān)注
關(guān)注
0文章
134瀏覽量
13189 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
286瀏覽量
16278
發(fā)布評(píng)論請(qǐng)先 登錄
stm32 定時(shí)器觸發(fā)ADC多通道采樣+DMA提取數(shù)據(jù)相關(guān)資料下載
STM32G0系列安全手冊(cè)
STM32G0系列ADC掃描序列模式解讀

stm32 定時(shí)器觸發(fā)ADC多通道采樣+DMA提取數(shù)據(jù)

AN5145_從STM32F0系列遷移到STM32G0系列的應(yīng)用

AN5145_從STM32F0系列到 STM32G0 系列的應(yīng)用移手冊(cè)

PM0223_STM32L0和STM32G0單片機(jī)編程手冊(cè)

STM32G0開發(fā)筆記:使用ADC進(jìn)行NTC溫度采集

STM32G0開發(fā)筆記:多通道ADC與DMA的使用

使用platformio平臺(tái)和Arduino框架開發(fā)STM32G0

評(píng)論