有人在使用STM32G0芯片的ADC模块时,往往因为扫描模式的理解不到位或选择不当导致些问题。这里就该话题做点简单分享介绍,不妨以一个实例展开。
现在共用到ADC1模块的4个ADC通道,即1个片内Vrefint通道和其它三个外部通道CH8,CH10,CH17。下面测试代码中使用DMA传输,定时器触发ADC.
它们的硬件连接情况如下,其中VRefint为内部参考电压,其电压值大概1.2V样子。
对于STM32G0系列,ADC扫描模式可以有两种,分别是不完全配置序列模式和完全配置序列模式。我们先看看不完全配置序列模式。
不完全配置序列模式
在该模式下,ADC_CFGR1寄存器中的CHESELRMOD位必须被清零。
被转换通道的扫描顺序按照ADC通道固有序号的大小顺序依次进行,扫描方向可以软件配置为向前【forward】或后退【backward】。任何ADC通道都可以配置进该序列中,总的序列长度由寄存器ADC_CHSELR中被置位的CHSELx个数决定,最多可配置18个通道。
我们以上面提到的CH8、CH10、CH17和VRefint通道【它对应ADC通道CH13】为例,若将上述4个通道配置为不完全序列模式,只需将ADC_CHSELR寄存器中的CHSELx相应位进行置1即可。如下图所示&#