目录
ADC简介:
- ADC模拟-数字转换器
- ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁
- 12位主次逼近型ADC,1us转换时间
- 输入电压范围:0~3.3V,转换结果范围:0~4095
- 18个输入通道,可测量16个外部和2个内部信号源
- 规则组(常规使用)和注入组(突发使用)两个转换单元
- 模拟看门狗自动监测输入电压范围
- STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道
stm32的ADC原理基本与下图逐次逼近型ADC原理一致
stm32的ADC结构图:
ADC基本结构:
ADC规则组四种转换模式:
ADC初始化的结构体函数里有两个参数,一个是选择单次转换还是连续转换的,另一个是选择扫描模式还是非扫描模式的,所以这两个组合一下就有四种模式
分别是:
- 单次转换,非扫描模式
- 连续转换,非扫描模式
- 单次转换,扫描模式
- 连续转换,扫描模式
1.单次转换,非扫描模式:
由于没有选择扫描模式,所以用不上图中的序列列表,只有第一个序列1的位置有效,可以在序列1的位置指定自己想转换的通道,然后触发转换,过一段时间后转换完成,转换结果放到数据寄存器里,同时EOC标志位置1,整个转换过程结束,如果想再启动转换则需要再触发一次
2.连续转换,非扫描模式
在上一个模式的基础上添加了连续转换的功能,一次转换结束后不会停止而是会立刻开始下一轮转换,一直转换下去,好处是第一次转换后不需要手动进行转换了
3.单次转换,扫描模式
因为是单次转换所以每转换一次都会停止,但在扫描模式下可以在序列里依次指定通道,指定的通道可以是重复的,在初始化结构体里可以指定通道数目,如图通道数目为7则只有前面7个序列能指定通道。每次触发后依次对前7个位置进行AD转换,转换结果都放在数据寄存器里,这里为了防止数据被覆盖就需要用DMA将数据及时挪走,7个通道都转换完成后EOC置1
4.连续转换,扫描模式
在上面两个模式的基础上理解即可
触发控制:
数据对齐:
我们的ADC是12位的它的转换结果是一个12位的数据,但是数据寄存器是16位的所以存在一个对齐问题,一般都选右对齐,用左对齐得到的数据会比实际大
转换时间:
- AD转换的步骤:采样,保持,量化,编码
- STM32 ADC的总转换时间为: TCONV = 采样时间 + 12.5个ADC周期
- 例如:当ADCCLK=14MHz,采样时间为1.5个ADC周期 TCONV = 1.5 + 12.5 = 14个ADC周期 = 1μs
校准:
- ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。校准期间,在每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差
- 建议在每次上电后执行一次校准
- 启动校准前, ADC必须处于关电状态超过至少两个ADC时钟周期