STM32F4----ADC模拟量转换成数字量
基本原理
当需要测量和记录外部电压的变化,或者根据外部电压的变化量来决定是否触发某个动作时,我们可以使用ADC(模拟—数字转换器)功能。这个功能可以将模拟的电压信号转换为数字信号,方便我们进行测量、记录或判断。例如,假设有一个温度传感器,它的输出是一个与温度成正比的模拟电压信号,可将这个模拟信号连接到F4的ADC输入端,然后通过ADC功能将这个模拟信号转换为数字信号,并读取这个数字信号获取温度的信息。进一步的可根据这个数字信号的变化,来决定是否要触发某个动作,例如温度超过了设定的阈值,即会触发一个报警动作。
STM32F4内置的ADC简介。
1)转换类型:STM32F4的ADC是基于逐次逼近原理工作的,这是一种常用的模数转换方法,它通过逐次比较来逼近输入信号的电压值。
2)通道数量:STM32F4微控制器配备有3个ADC,每个ADC都可以独立使用,或者可以配置为双重或三重模式以提高采样率。它们提供多达19个复用通道,这意味着可以同时测量来自多个源的信号,包括16个外部源、2个内部源以及Vbat通道。
3)转换模式:这些通道的A/D转换支持多种模式,包括单次转换、连续转换、扫描转换和间断转换,使微控制器能够灵活应对不同的应用场景。
4)数据存储:转换结果可以以左对齐(4-15位)或右对齐(0-11位)的方式存储在16位的数据寄存器中,这为用户提供了不同的数据存储选项。
5)分辨率设置:STM32F4的ADC可以设置为6位、8位或12位的模式,位数越高,分辨率越高,从而能够更精确地表示模拟信号的细节。
6)保护机制:STM32F4的ADC还具有模拟看门狗特性,允许应用程序检测输入电压是否超出了用户自定义的阈值上限或下限,这为系统提供了额外的保护机制。
7)电源供应:ADC模块的输入电压范围是由VREF-(参考负电压)和VREF+(参考正电压)这两个外部引脚决定的。在设计电路时,通常会将VSSA(模拟电源负端)和VREF-接地,而将VREF+和VDDA(数字电源正端)连接到3.3V,这样就得到了ADC的输入电压范围为0-3.3V。此外,12位的ADC意味着有4096个(0-4095)不同的数值可以表示0-3.3V之间的电压,可以理解为把3.3V分成了4096份,因此每个单位(ADC转换值0-4095)的增加代表着3.3V/4096的电压增加。
转换公式:
ADC的通道选择很重要,在STM32F4的ADC19个通道中,外部16个通道对应着不同的IO口(见表1.1)。这些通道可以用来测量外部的模拟信号,通过采样并将其转换为数字值供微控制器处理。
要注意的是,为了保证转换结果准确性,不要让ADC的时钟超过36MHz,而STM32F4ADC模块的时钟频率取决于APB2总线的基础时钟和分频系数。例如,APB2总线的基础时钟是84MHz,选择分频系数为4(分频系数有2、4、6、8),则ADC时钟频率为21MHz。
采样时间是根据实际需要设置的,它表示ADC采集模拟信号的时间长度。理论上,采样时间越长,得到的结果越精确,但同时也会增加转换时间。转换时间等于采样时间加上12个ADC时钟周期(也称固定时钟周期),其中12个固定时钟周期是因为12位ADC