江科大学习笔记
stm32是12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。这里主要介绍单次、连续、扫描的组合,对间断模式不进行介绍。
ADC编程主要思路:
1)选择输入通道,可能初始化使用到的GPIO端口
2)选择AD转化器并设置ADC的工作参数和初始化
3)选择触发控制信号,一般包括软件触发和硬件触发
4)配置ADC时钟
5)使能ADC
ADC单通道模式的详细代码介绍
使用ADC1的channel11端口号为PC11
1)配置时钟,打开GPIOC和ADC1时钟
2)配置ADC1时钟为APB2的六分频,12Mhz
3)配置GPIO初始化,端口模式为模拟输入
4)调用ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime),rank选择 规则组序列器里面的次序,rank= 1 表示选择的ADC_Channel为选择 规则组的通道1的位置上,为设置指定 ADC 的规则组通道,设置它们的转化顺序和采样时间
5)初始化ADC结构体 , 配置为单AD模式 ,单次转化,非扫描模式,数据为右对齐 ,软件触发,规则组转化列表通道数目为1(该参数只对扫描模式下生效,对于非扫描模式只对规则组转化列表的第一个通达有效)
6)开启ADC
7)开始校准,等待开始校准完成 , 复位校准 , 等待复位校准完成
8)传输ADC转化的值 ,①开启软件触发 ②等待转化完成(读取EOC标准)③调用ADC_GetConversionValue(ADC_TypeDef* ADCx)函数,获取转化结果(不需要清除标志位,在读取ADC数据寄存器时,自动清除标志位)
ADC多通道模式的详细代码介绍(多通道使用的是单次 ,非扫描模式,通过手动改变规则组转化列表的第一个通道为ADC的通道)
1)配置时钟,打开GPIOC和ADC1时钟
2)配置ADC1时钟为APB2的六分频,12Mhz
3)配置GPIO初始化,端口模式为模拟输入
4)初始化ADC结构体 , 配置为单AD模式 ,单次转化,非扫描模式,数据为右对齐 ,软件触发,规则组转化列表通道数目为1(该参数只对扫描模式下生效,对于非扫描模式只对规则组转化列表的第一个通达有效)
5)开启ADC
6)开始校准,等待开始校准完成 , 复位校准 , 等待复位校准完成
7)传输ADC转化的值 ,①开启软件触发 ②调用ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime),选择ADC_Channel为规则组转化列表的第一位③等待转化完成(读取EOC标准)③调用ADC_GetConversionValue(ADC_TypeDef* ADCx)函数,获取转化结果(不需要清除标志位,在读取ADC数据寄存器时,自动清除标志位)