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