-
ADC介绍
12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。 ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。
-
STM32_ADC特征
● 12位分辨率
● 转换结束、注入转换结束和发生模拟看门狗事件时产生中断
● 单次和连续转换模式
● 从通道0到通道n的自动扫描模式
● 自校准
● 带内嵌数据一致性的数据对齐
● 采样间隔可以按通道分别编程
● 规则转换和注入转换均有外部触发选项
● 间断模式
● 双重模式(带2个或以上ADC的器件)
● ADC转换时间:
─ STM32F103xx增强型产品:时钟为56MHz时为1μs(时钟为72MHz为1.17μs)
─ STM32F101xx基本型产品:时钟为28MHz时为1μs(时钟为36MHz为1.55μs)
─ STM32F102xxUSB型产品:时钟为48MHz时为1.2μs
─ STM32F105xx和STM32F107xx产品:时钟为56MHz时为1μs(时钟为72MHz为1.17μs)
● ADC供电要求: 2.4V到3.6V
● ADC输入范围: VREF- ≤ VIN ≤ VREF+
● 规则通道转换期间有DMA请求产生。
-
ADC 框图
-
ADC模式
- ADC_Mode_Independent 独立模式
- ADC_Mode_RegInjecSimult 混合的同步规则+注入同步模式
- ADC_Mode_RegSimult_AlterTrig 混合的同步规则+交替触发模式
- ADC_Mode_InjecSimult_FastInterl 混合同步注入+快速交叉模式
- ADC_Mode_InjecSimult_SlowInterl 混合同步注入+慢速交叉模式
- ADC_Mode_InjecSimult 注入同步模式
- ADC_Mode_RegSimult 规则同步模式
- ADC_Mode_FastInterl 快速交叉模式
- ADC_Mode_SlowInterl 慢速交叉模式
- ADC_Mode_AlterTrig 交替触发模式
-
配置过程
①开启PA口时钟和ADC1时钟,设置PA1为模拟输入。GPIO_Init(); APB2PeriphClockCmd();
② 复位ADC1,同时设置ADC1分频因子。RCC_ADCCLKConfig(RCC_PCLK2_Div6); ADC_DeInit(ADC1);
③ 初始化ADC1参数,设置ADC1的工作模式以及规则序列的相关信息。
void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
④ 使能ADC并校准。ADC_Cmd(ADC1, ENABLE);
⑤ 配置规则通道参数:ADC_RegularChannelConfig();
⑥开启软件转换:ADC_SoftwareStartConvCmd(ADC1);
⑦等待转换完成,读取ADC值。ADC_GetConversionValue(ADC1);
-
附录
详细配置见stm32参考手册
代码:https://github.com/kks1234/STM32/tree/master/17.ADC%E5%8D%95%E9%80%9A%E9%81%93