ADC模数转换器
一.ADC简介
-
ADC(Analog-Digital Converter)模拟-数字转换器
-
ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁
-
12位逐次逼近型ADC,1μs转换时间
-
输入电压范围:0~3.3V,转换结果范围:0~4095
-
18个输入通道,可测量16个外部和2个内部信号源
-
规则组和注入组两个转换单元
-
模拟看门狗自动监测输入电压范围
-
STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道
二.逐次逼近型ADC

工作原理:二分逼近
以一个4位ADC为例(参考电压为 VREF),流程如下:
-
首次猜测(MSB,最高位):SAR先假设数字值为
1000(即8)。DAC将其转为VREF/2的电压与输入比较。-
若输入电压更高,则最高位
1保留,说明结果在8-15之间。 -
若输入电压更低,则最高位设为
0,说明结果在0-7之间。
-
-
逐位逼近:接着猜测下一位。假设上一步结果为
1000,下一步会将数字设为1100(即12),对应3VREF/4,再次比较以确定第二位是1还是0。 -
循环至结束:如此反复,每一位都通过一次比较来确定。对于N位ADC,恰好需要N个比较周期才能完成一次转换。
三.ADC的基本结构

1. 输入信号源
-
16个GPIO引脚:连接外部模拟电压信号
-
2个内部信号源:温度传感器(用于测量芯片内部温度)和VREFINT(内部基准电压,通常为1.2V或1.6V,用于校准ADC测量精度)
2. 两大转换“组”
这是STM32 ADC最精妙的设计,图片中明确分为了上下两路:
-
规则组(Regular Group):
-
用于常规的、周期性的转换任务(比如连续采集电压)。
-
整个规则组共享1个数据寄存器。如果开启了多通道扫描,转换结果会不断覆盖这个寄存器,所以必须配合DMA(直接存储器访问)将数据及时搬运走,否则数据会丢失。
-
-
注入组(Injected Group):有4个独立的数据寄存器。对于4个注入通道,转换结果可以同时锁存,不需要DMA也能准确拿到一组同步数据。
3. 核心转换单元
-
AD转换器:即逐次逼近型SAR ADC的核心,负责执行二分查找算法,将模拟电压量化为12位数字值(0~4095)。
-
AD数据寄存器:存放转换完成的数字结果,供CPU或DMA读取。
4. 触发控制
-
START:软件触发,直接调用库函数启动转换。
-
触发控制(Trigger Control):接收外部定时器(如TIM1、TIM2等)的触发信号,实现硬件定时触发,这样ADC可以按照精确的时间间隔(如PWM周期)自动启动转换。
-
RCC(复位与时钟控制):提供ADC的工作时钟(必须配置为不超过14MHz)。
-
开关控制:管理ADC的“上电”和“掉电”模式,在闲置时关闭以节省功耗。
5. 事件监控与中断输出
-
EOC(End of Conversion,转换结束):规则组转换完成时,产生该标志位,可通过NVIC(嵌套向量中断控制器)触发中断,通知CPU取走数据。
-
模拟看门狗(Analog Watchdog):
-
它像一个“电压比较器”,会持续监控选定的通道电压是否超出预设的上限(High Threshold)和下限(Low Threshold)。
-
一旦超标,无需等待CPU轮询,直接通过NVIC触发中断,非常适合做“过压保护”或“欠压报警”等紧急响应。
-
四.输入通道

五.转换模式
ADC_CR1[19:16]用于设置ADC的操作模式

六.触发控制

七.数据对齐

八.采样时间
-
AD转换的步骤:采样、保持、量化、编码
-
STM32 ADC的总转换时间为:
TCONV=采样时间+12.5个ADC周期TCONV=采样时间+12.5个ADC周期 -
例如:当ADC CLK = 14 MHz,采样时间为1.5个ADC周期时:
TCONV=1.5+12.5=14个ADC周期=1 μsTCONV=1.5+12.5=14个ADC周期=1μs
更多推荐



所有评论(0)