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个通道时需要注意。
上一篇:基于STM32L431低功耗芯片制作的电子墨水屏相册
下一篇:怎样去设计一种基于STM32单片机的智能手环脉搏心率计步器呢
- 热门资源推荐
- 热门放大器推荐
- 用于 7VIN 至 16VIN、1.5V 和 1.2V 输出的 LTM4628EV DC/DC 模块稳压器的典型应用电路
- 使用 Analog Devices 的 LTC3728LIGN 的参考设计
- DER-406 - 适用于 A19 灯的 5.76 W 高 PF 非隔离降压-升压型 TRIAC 调光 LED 驱动器
- ADR5045B 5V 输出精密微功率并联模式电压基准的典型应用
- LT3970EDDB-3.42 2.5V 降压转换器的典型应用
- MC78M08BDTG 8V 电流调节器的典型应用
- LT1021DCN8-5 精密电压基准的典型应用
- DER-282 - 100W, 扁平(11 mm), LLC DC-DC转换器
- REF193 低压差开尔文连接电压基准的典型应用电路
- LT3088EM 线性稳压器用于添加软启动的典型应用

现代雷达系统的信号设计
CLC5612IMX

BFR340T






京公网安备 11010802033920号