一、ADC介绍
先看一下手册上关于ADC的介绍:
ADC 介绍12 位 ADC 是一种逐次逼近型模拟数字转换器。它有多达 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。ADC 的结果可以左对齐或右 对齐方式存储在 16 位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高 / 低阀值。ADC 的输入时钟不得超过 14MHz ,它是由 PCLK2 经分频产生。
然后是手册上ADC的框图
ADC:Analog-to-Digital Converter模数转换器,既然有模数转换,那么后面就会有DAC数模转换器。
ADC就是将引脚的模拟量转换为数字量读取。IO口一般读取只能读取高低电平,而通过ADC读取就可以将ADC引脚的电压值读取出来。比如说将IO口接到一个电位器上,就可以知道就可以调节IO口的输入电压。
二、ADC工作原理
具体的原理可以看B站江科大STM32视频,简单来说就是先对IO口电压值进行采样,然后内部通过DAC生成一个电压,反复和采样得到的电压值进行比较(比较器)。
比如说,引脚电压1.1V,内部通过DAC产生一个3.3/2=1.65V电压和采样值比较,发现采样值比较小,再生成一个1.65/2=0.825V的电压和采样值比较(逼近法),无限产生一个越来越靠近采样值的电压值,只要比较次数足够多,就可以得到一个比较精确的电压值。
具体的原理可以百度或者江科大,这里只做简单(不专业)的介绍。
三、ADC框图
从手册框图中可以看到,ADC有两个采样通道,规则和注入,这两的区别在于它们的数据寄存器。注入通道的数据寄存器是4*16位,而规则通达的数据寄存器只有16位。
注入通道一次可以采样4个通道,四个通道可以是相同引脚可以是不同引脚,然后会把四个通道的数据都保存到数据寄存器里。
规则通道一个可以采样16个通道,但是它的数据寄存器只有16位,一个通道就需要16位来保存数据,所以采样的16个通道只有最后一个数据会被保存到数据寄存器里。(这就需要DMA来帮忙存储数据了,这个环节在DMA节里讲)
模拟看门狗就是可以自动将数据和阈值进行比较,当数据超过阈值的时候产生中断,这就不需要单片机一直浪费资源去判断数据大小。比如说光敏电阻,需要在某个亮度时做些什么,可以直接设置阈值,让模拟看门狗去帮助单片机判断。
关于ADC的扫描模式、单次or连续转换,数据左右对齐还是参考江科大的视频讲得非常清楚,本文还是介绍(简单的)寄存器配置。由于江科大讲的是库函数的方法,本栏还是主要介绍寄存器的实现方法。