STM32之ADC_1

STM32的ADC的简介:
ADC(Analog to Digital Converter),模/数转换器。在模拟信号需要以数字形式处理、存储或传输时,模/数转换器几乎必不可少。
STM32在片上集成的ADC外设非常强大。例如STM32F103xC 、STM32F103xD和STM32F103xE增强型产品,内嵌3个12位的ADC,每个ADC共用多达21个外部通道,可以实现单次或多次扫描转换。
(我使用的是STM32F103VET6,属于增强型CPU,有18个通道,可测量16个外部和2个内部信号源。每个通道的A/D转换模式有单次,连续,扫描,间断模式。ADC的结果可以左对齐,右对齐,存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值)

STM32的ADC主要技术指标:
对于一个ADC来说,主要关注的是它的分辨率,转换速度,ADC类型,参考电压范围。
分辨率:
12位分辨率。不能直接测量负电压,所以是没有符号位的,既其最小量化单位。
LSB = Vref+ / 212;
转换时间:
转换时间是可编程的.采样一次至少是14个ADC时钟周期,而ADC的时钟频率最高为14MHz,也就是说,它的采样时间最短是1us,这样是足以胜任中低频数字示波器的采样工作.
ADC类型:(决定了ADC的性能极限)
STM32的是逐次比较型ADC.
参考电压范围:
STM32之ADC_1_第1张图片(数据手册可以找到)

在图中看到,参考电压负极VREF- = 0V,参考电压正极范围是2.4V<= VREF+ <=3.6V.所以STM32的ADC是不能接负电压的.输入的电压信号范围是VREF-(负极电压) <= VIN <= VREF+(正极电压).

ADC工作过程:
STM32之ADC_1_第2张图片
可以带到中间有一个模拟至数字转换器部件(ADC部件),所有的器件都是围绕它展开的,它的左端为VREF+,VREF-等ADC的参考电压,ADCx_IN0~ADCx_IN15是ADC的输入信号通道,就是那些GPIO引脚.
输入信号经过这些通道被送到ADC部件,ADC部件需要受到触发信号才开始转换.**(例如:EXTI外部触发,定时器触发,也可以使用软件触发)**ADC部件收到触发信号后,在ADCCLK时钟的驱动下对输入通道的信号进行采样,并进行模数转换,其中ADCCLK是来自ADC预分频器的.
ADC部件转换后的数值是被保存到一个16位的规则通道数据寄存器(或者是注入通道数据寄存器)之中,我们可以通过CPU指令或DMA把它读取到内存(变量).模数转换之后,可以触发MDA请求,或者触发ADC的转换结束事件.
(如果配置了模拟看门狗,并且采集得的电压大于阀值,会触发看门狗中断.)

PS:使用ADC时常常需要不间断采集大量的数据,在一般的器件中会使用中断进行处理,但使用中断的效率还是不够高.在STM32中,使用ADC时很多都是采用DMA传输的方式,由DMA把ADC外设转换得的数据传输到SRAM,再进行处理,或者是直接把ADC的数据转移到串口发送给上位机.
下一篇将是DMA存储为模式ADC的实例

你可能感兴趣的:(嵌入式)