单片机-STM32 ADC应用(五)
1.ADC模数转换
模拟数字转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件。通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号。由于数字信号本身不具有实际意义,仅仅表示一个相对大小。故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号大小。而输出的数字量则表示输入信号相对于参考信号的大小。
模拟信号:连续的,不可突变的
模拟量是指变量在一定范围连续变化的量;也就是在一定范围(定义域)内可以取任意值(在值域内)。
数字信号:不连续,间断的
数字量是分立量,而不是连续变化量,只能取几个分立值,如二进制数字变量只能取两个值。
精度:也成为分辨率,我们当前使用的AD转换精度是12位,
12位的精度:值得是转换的数据2进制位数,区间:0--4095
AD转换的本质:将电压进行转换,转换为数字量
设备正常供电:3.3v
将3.3V分成4096份,精度:3.3/4096;(变化的步进值)
参考模拟量:用于比较的,参考电压也是3.3V
通道数量:16个外部通道
AD转换的框图:
STM32F103ZET6单片机中的ADC控制器总共:3个
注入组和规则组:
2.AD转换的特性
AD转换的时钟:
ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生;
AD转换的精度和转换时间有关系的,如果频率过高,会导致转换时间太短,精度降低了。
通道选择:
转换方式:
单次转换 :单次转换模式下, ADC只执行一次转换
连续转换:在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。
扫描模式
此模式用来扫描一组模拟通道。
主要是用于多通道中,用于扫描不同的通道
扫描模式可通过设置ADC_CR1寄存器的SCAN位来选择。一旦这个位被设置, ADC扫描所有被ADC_SQRX寄存器(对规则通道)选中的所有通道。
间断模式:
数据对齐:
我们主要使用的是右对齐。
可编程的通道采样时间
ADC使用若干个ADC_CLK周期对输入电压采样,采样周期数目可以通过ADC_SMPR1和ADC_SMPR2寄存器中的SMP[2:0]位更改。每个通道可以分别用不同的时间采样
总的转换时间:
TCONV = 采样时间+ 12.5个周期(转换需要时间)
校准:
ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。
通过设置ADC_CR2寄存器的CAL位启动校准。一旦校准结束, CAL位被硬件复位,可以开始正常转换。建议在上电时执行一次ADC校准。
AD转换中的校准不是必须的,校准会增加数据的准确度。
3.AD转换的使用
原理图:
光敏--PF8
电位器---PF7
IO口的复用功能:
程序配置:
1.时钟--ADC3时钟,F端口
2.配置--PF7--输入
模拟输入--AD转换
3.ADC工作方式
时钟分频处理、通道选择、单次\连续 、校准、对齐方式、中断(可选)使能
时钟的分频处理:
具体的应用:
校验部分:
软件启动转换:
单次转换需要每次开启转换
设置规则转换通道:
规则组中用于设置使用的通道号
获取结果:
读取数据:
得到的结果是一个数字量:
对于我们的滑动变阻器:
电压值=(3.3/4096)*1800;