STM32G0系列單片機是ST新推出的一個系列,基于Arm Cortex-M0 +內(nèi)核,在嚴(yán)格的功率預(yù)算內(nèi)提供出色的性能。目前來說相比F系列的,價格也比較實惠。
但是新東西,就意味著資料相對較少,不過還好有STM32CubeMx這個工具,使用戶只關(guān)心應(yīng)用層程序即可,可以像F系列一樣使用,大大降低了開發(fā)難度。
當(dāng)然也會有一些意想不到的問題。今天調(diào)試G070的ADC就遇到一個問題,分享給大家,使大家少走彎路。
遇到問題
項目用到多通道ADC采樣,使用DMA+多通道掃描的方式,配置了以下4個通道:

使能了掃描模式、連續(xù)轉(zhuǎn)換模式和DMA:

但是在配置轉(zhuǎn)換通道時,發(fā)現(xiàn)下拉菜單只有ADC_IN10和ADC_IN11,無法配置ADC_IN15和16通道:

原以為是我用的庫版本有BUG,于是更新到了最新的庫,發(fā)現(xiàn)還是這樣。然后就試著先生成代碼,手動修改為ADC_IN15和16.程序運行發(fā)現(xiàn)各個通道的數(shù)據(jù)都亂了。。。去掉這兩個通道就正常了。
心想,難道芯片有BUG?還是看看芯片的手冊吧,于是翻看了數(shù)據(jù)手冊和參考手冊。終于發(fā)現(xiàn)了問題所在,不是芯片本身的問題,而是使用的問題。
發(fā)現(xiàn)問題
G0系列的ADC在多通道掃描應(yīng)用時有兩種模式:
- Sequencer fully configurable
轉(zhuǎn)換序列號可完全配置。采用這種方式時,多通道ADC的轉(zhuǎn)換順序是可以自定義的。如下,每個通道可單獨配置。

- Sequencer not fully configurable
轉(zhuǎn)換序列號不可配置。采用這種方式時,多通道ADC的轉(zhuǎn)換順序是固定的,按照通道號從小到大的順序來依次轉(zhuǎn)換。如下圖,采用選擇這種方式時,沒有單獨配置每個通道的選項。

在Sequencer fully configurable這種方式時,參考手冊中有這樣兩句話:

這種方式最多支持8個序列通道,只有ADC_IN0~ADC_IN14通道才可以使用這種模式。
解決問題
所以說上面配置的ADC_IN15和16通道是無法配置的,修改為Sequencer not fully configurable模式后,重新生成代碼,運行采樣后一切正常!
另外跟F系列不同的是,Sequencer fully configurable方式最多支持8個通道,使用超過8個通道時需要注意。
-
dma
+關(guān)注
關(guān)注
3文章
582瀏覽量
105960 -
Cortex-M0
+關(guān)注
關(guān)注
4文章
127瀏覽量
40585 -
STM32單片機
+關(guān)注
關(guān)注
59文章
553瀏覽量
60632 -
ADC采樣
+關(guān)注
關(guān)注
0文章
134瀏覽量
13591 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
290瀏覽量
17377
發(fā)布評論請先 登錄
stm32 定時器觸發(fā)ADC多通道采樣+DMA提取數(shù)據(jù)相關(guān)資料下載
STM32G0系列安全手冊
STM32G0系列ADC掃描序列模式解讀
stm32 定時器觸發(fā)ADC多通道采樣+DMA提取數(shù)據(jù)
AN5145_從STM32F0系列遷移到STM32G0系列的應(yīng)用
AN5145_從STM32F0系列到 STM32G0 系列的應(yīng)用移手冊
STM32G0開發(fā)筆記:使用ADC進(jìn)行NTC溫度采集
使用platformio平臺和Arduino框架開發(fā)STM32G0
STM32G0系列多通道ADC的問題避坑速看!
評論