7 ADC
ADC简介
ADC(Analog-Digital Converter)模拟-数字转换器
ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁
12位(0-2^(12-1))逐次逼近型ADC,1us转换时间(1MHz,32ADC最快转换率)
输入电压范围:0~3.3V,转换结果范围:0~4095
18个输入通道,可测量16个外部(GPIO口)和2个内部信号源(内部温度传感器,内部参考电压1.2V)
规则组(常规使用)和注入组(突发事件)两个转换单元
模拟看门狗自动监测输入电压范围(高于或低于阈值时,看门狗会触发中断)
STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道
逐次逼近型ADC
逐次逼近型ADC的工作原理基于二分搜索算法,每次比较都会将待测信号范围逐渐逼近。
7.1 ADC模拟转换器
ADC框图
ADC基本结构
第一步:RCC开启时钟,开启GPIO和ADC的时钟,ADCCLK分频器配置
第二部:配置GPIO,把需要用的GPIO口配置成输入模式
第三步:配置多路开关,把左边的通道接入到右边的规则组列表里
第四步:配置ADC转换器,用结构体来配置(AD转换器、AD数据寄存器、触发控制等)
第五步,调用ADC_Cmd(),开启ADC
1)输入通道(GPIO、温度、电压)
2)四种转换模式(点菜模式)
•单次转换,非扫描模式
•连续转换,非扫描模式
•单次转换,扫描模式
•连续转换,扫描模式
3)触发控制
4)数据对齐
一般采用右对齐
5)转换时间
AD转换的步骤:采样,保持,量化,编码
STM32 ADC的总转换时间为:
TCONV = 采样时间 + 12.5个ADC周期
例如:当ADCCLK=14MHz,采样时间为1.5个ADC周期
TCONV = 1.5 + 12.5 = 14个ADC周期 = 1μs
- 采样:将模拟信号按照一定的时间间隔采集成离散的数字信号,即将连续的信号转换成离散的信号。
- 保持:将采样得到的数字信号保持在一个电容或者存储器中,以便于后续的处理。
- 量化:将保持的数字信号按照一定的规则进行量化,即将连续的信号离散化为一定数量的离散值。量化的过程会引入误差,这个误差被称为量化误差。
- 编码:将量化后的数字信号编码成为二进制数,以便于数字系统的处理和传输。常见的编码方式有二进制补码编码、格雷码编码等。
ADC周期越短,转换速度越快,但是精度可能会有所降低
6)校准
ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。校准期间,在每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差
建议在每次上电后执行一次校准
启动校准前, ADC必须处于关电状态超过至少两个ADC时钟周期
硬件电路