避坑速看,STM32G0系列多通道ADC的问题

STM32G0系列单片机是ST新推出的一个系列,基于Arm Cortex-M0 +内核,在严格的功率预算内提供出色的性能。目前来说相比F系列的,价格也比较实惠。但是新东西,就意味着资料相对较少,不过还好有STM32CubeMx这个工具,使用户只关心应用层程序即可,可以像F系列一样使用,大大降低了开发难度。

当然也会有一些意想不到的问题。今天调试G070的ADC就遇到一个问题,分享给大家,使大家少走弯路。

遇到问题

项目用到多通道ADC采样,使用DMA+多通道扫描的方式,配置了以下4个通道:

fa684273564a353eea4bfa5d2e5655c0.png

使能了扫描模式、连续转换模式和DMA:

bf64fd465bb9893766786b709fe6f05a.png

但是在配置转换通道时,发现下拉菜单只有ADC_IN10和ADC_IN11,无法配置ADC_IN15和16通道:

090fd2b12626f28723f2b522d25d915b.png

原以为是我用的库版本有BUG,于是更新到了最新的库,发现还是这样。然后就试着先生成代码,手动修改为ADC_IN15和16.程序运行发现各个通道的数据都乱了。。。去掉这两个通道就正常了。

心想,难道芯片有BUG?还是看看芯片的手册吧,于是翻看了数据手册和参考手册。终于发现了问题所在,不是芯片本身的问题,而是使用的问题。

发现问题

G0系列的ADC在多通道扫描应用时有两种模式:

  • Sequencer fully configurable

转换序列号可完全配置。采用这种方式时,多通道ADC的转换顺序是可以自定义的。如下,每个通道可单独配置。

5b9531bc8da9beab487b71aa1d2f10b7.png

  • Sequencer not fully configurable

转换序列号不可配置。采用这种方式时,多通道ADC的转换顺序是固定的,按照通道号从小到大的顺序来依次转换。如下图,采用选择这种方式时,没有单独配置每个通道的选项。

69ade2066c51f2ca1aa8021519f61669.png

在Sequencer fully configurable这种方式时,参考手册中有这样两句话:

f0a779d6880ba229b964af5b957ac3bb.png

这种方式最多支持8个序列通道,只有ADC_IN0~ADC_IN14通道才可以使用这种模式。

解决问题

所以说上面配置的ADC_IN15和16通道是无法配置的,修改为Sequencer not fully configurable模式后,重新生成代码,运行采样后一切正常!

另外跟F系列不同的是,Sequencer fully configurable方式最多支持8个通道,使用超过8个通道时需要注意。

推荐阅读:

STM32三个ADC同步规则采样

怎样理解ADC的噪声、有效分辨率

STM32CubeMX之ADC采集

     欢迎关注公众号"嵌入式技术开发",大家可以后台给我留言沟通交流。如果觉得该公众号对你有所帮助,也欢迎推荐分享给其他人。

 

  • 29
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值