一、前言

为了正确使用STM32H7上的ADC模数转换器,必须先把CubeMX上的ADC配置梳理一遍。为此,在ADC1上开启通道IN2与通道IN6为例学习如何配置CubeMX。

二、Cloack Configuration

配置ADC的时钟源adc_ker_ck的频率为72M。有了72M的时钟源,ADC1,ADC2,ADC3就能经过异步时钟模式2分频得到36M的最高的工作频率。下面介绍Parameter Settings配置时讲到如何配置异步时钟模式2分频。
在这里插入图片描述
在这里插入图片描述

三、ADC1 Mode and Configuration

在这里插入图片描述

四、Configuration

Parameter Settings的细节有一点多,学习ADC的重点。
在这里插入图片描述

4.1、ADC_Setting

4.1.1、Clock Prescaler(时钟预分频)

目的是让ADC的工作频率达到36M(ADC工作频率超过36M会不稳定)。异步时钟模式(基于PLL2P时钟)可以选择Asynchronous clock mode divided by 1,2,4,6,8,10,12,16,32,64,128,256,同步时钟模式(基于AHB时钟)可以选择Synchronous clock mode divided by 1,2,4。在上面的时钟配置上,adc_ker_ck的时钟频率为70M,所以使用Asynchronous clock mode divided by 2就能让ADC的工作频率为36M。
在这里插入图片描述
在这里插入图片描述
值得注意,同步时钟模式任何选项都会让ADC的工作频率超过36M。STM32H743的时钟频率是480M,所以AHB时钟频率是240M。就算选择Synchronous clock mode divided by 4, ADC的工作频率也超过36M(240M/4 = 60M)。那么同步时钟模式就那么没有使用的价值吗?查看官方手册,同步模式的优点在于ADC与定时器都基于AHB时钟,那么定时器触发定时器时,ADC的同步触发能更加精确。
在这里插入图片描述

4.1.2、Resolution(分辨率)

分辨率越高,逐次逼近转换时间越长。根据实际的项目要求选择分辨率即可。
在这里插入图片描述

4.1.3、Scan Conversion Mode(扫描模式)

当使能一个以上通道时,默认开启。
在这里插入图片描述

4.1.4、Continuous Conversion Mode(连续转换模式)

选择是否使能连续转换模式。不使能相当于单次转换模式,ADC会将通道的所有转换执行一次。使能的话,相当于连续转换模式,该模式用于常规通道。在连续转换模式下,如果发生软件或者硬件触发,ADC会执行所有常规通道的转换,随后会自动重启并继续执行每一个通道的转换。若想使用ADC+DMA的话,必须先使能连续转换模式
在这里插入图片描述

4.1.5、Discontinuous Conversion Mode(不连续序列转换模式)

配置ADC规则组转换序列的不连续方式。这里的不连续含义是指每次触发进行一个子组的转换,跟Continuous Conversion Mode的连续含义不一样。例如使能了该配置,该参数的下方就立马出现Number Of Discontinuous Conversions,如果它设为2,且ADC1使能了通道1,2,5,7,10,11的话,那么第一次触发ADC1采样时,就会采样通道1与通道2的值,再一次触发ADC1采样的话,就会采样通道5与通道7值,如此类推。值得注意的是,Continuous Conversion Mode与Discontinuous Conversion Mode不能同时使能,两者不能共存

在这里插入图片描述

4.1.6、End of Conversion Selection(结束转换的选择)

选择结束转换的事件。有End of single conversion(EOC) 与 End of sequence of conversion(EOS)两种选择。这两个事件会触发中断与DMA。一般选择EOS,等所有通道转换完毕后,产生中断后将全部数据取出来,或者使用DMA将全部数据取出来。
在这里插入图片描述

4.1.7、Overrun behaviour(溢出处理行为)

选择Overrun data overwritten。ADC+DMA是很好的组合,根据安富莱的解释,有了DMA的话,不管怎样都会溢出错误。
在这里插入图片描述

4.1.8、Left Bit Shift(左移位数)

选择No bit shift即可。可以选择0 ~ 15bit shift,一般不使用它。
在这里插入图片描述

4.1.9、Conversion Data Managerment Mode(转换数据管理模式)

不使用DMA的话,不使用DFSDM数字滤波器做后期处理的话,选择Regular Conversion data stored in DR register only即可。其实就是选择存放转换完成的模拟量数据的地方而已。
在这里插入图片描述

4.1.10、Low Power Auto Wait(低功耗自动等待)

有低功耗要求的话,就使能。
在这里插入图片描述

4.2、ADC Regular ConversionMode

4.2.1、Enable Regular Conversions(使能规则转换)

使能它才能采集各个通道上的模拟量。
在这里插入图片描述

4.2.2、Enable Regular Oversamping(使能规则过采样)

使能过采样。有一些细节稍微需要注意一下。
在这里插入图片描述

4.2.3、Oversamping Right Shift(过采样位右移)

过采样器能将累加的采样值进行右移。有什么用?比如过采样设置15,那么将采集16个值进行累加。接着配置右移动4位的话,相当于将刚才的累加值除以16,得到平均值。不需要在程序里求平均了。当然,如果大家喜欢在程序里求平均值也是可以的。
在这里插入图片描述

4.2.4、Oversamping Ratio(过采样率)

过采样器会进行数据预处理,以减轻CPU的负担。例如过采样设置15,将采样16个值,将16个值进行累加。一般的单片机可能不支持过采样,那么只能用程序实现累加了。总得来说,Oversamping Ratio帮助CPU累加采样值,Oversamping Right Shift帮助CPU求平均值。
在这里插入图片描述
在这里插入图片描述

4.2.5、Regular Oversamping Mode(规则过采样模式)

一般使用Oversampling Continued Mode。另外一个Oversamping Resumed Mode不知道是什么意思,后续继续研究。
在这里插入图片描述

4.2.6、Triggered Regular Oversampling(规则过采样捕捉)

选择捕捉的方式,捕捉等待所有过采样转换结束(Signal Trigger for all oversampled conversions)。另外一个是捕捉每一个过采样转换结束。
在这里插入图片描述

4.2.7、Numer of Conversion(转换通道的数量)

转换通道的数量(支持1 - 16)。
在这里插入图片描述

4.2.8、External Trigger Conversion Soure(触发转换的外部来源)

选择触发转换的来源:

  1. Regular Conversion launched by software (软件触发)
  2. Timer 1 Capture Compare 1 event (定时器1捕获比较事件1)
  3. Timer 1 Capture Compare 2 event(定时器1捕获比较事件2)
  4. Timer 1 Capture Compare 3 event(定时器1捕获比较事件3)
    … (各种定时器触发来源)
    除软件触发外,其他基本都是定时器触发。关于定时器的使用笔记如下:
    STM32H743+CubeMX-定时器TIM输出PWM(PWM Generation模式)
    STM32H743+CubeMX-定时器TIM输出PWM(Output Compare模式)
    在这里插入图片描述

4.2.9、External Trigger Conversion Edge(触发转换的外部沿)

选择定时器触发时,需要进一步选择触发的沿。选择软件触发时,该项为None。

  • Trigger detection on the rising edge(上升沿)
  • Trigger detection on the falling edge(下降沿)
  • Trigger detection on the rising and falling edge(上升与下降沿)
    在这里插入图片描述

4.2.10、Rank

  • Channel
    选择采样的通道
  • Sampling Time
    过采样的时间。ADC的采样速度 = 过采样时间 + 逐次逼近时间
    在这里插入图片描述
  • Offset Number
    摘自安富莱教程
    在这里插入图片描述
  • Offset Signed Saturation
    摘自安富莱教程
    在这里插入图片描述

4.3、ADC Injected Conversion Mode ( ADC注入转换模式)

先不管。

4.4、Analog Watchdog

比如使用模拟窗口看门狗监控CPU的温度,超过设定的阀值就产生看门狗中断,防止CPU的温度过高。在监控CPU的温度上有一定的使用价值。
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐