STM32之ADC转换

来源:互联网 发布:企业网络信息平台构建 编辑:程序博客网 时间:2024/06/04 23:23

ADC转换

Stm32上有12位的逐次逼近模型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各个通道的ad转换方式可有:单次、连续、扫描或者间断模型。Adc得到的结果可以左对齐和右对齐方式存储在16位数据寄存器中。

通常使用的是右对齐方式,而如果使用左对齐的话,其值相当于(左移6位)扩大了64倍,再其处理的时候精度提高了。(例如,接5v的电压,通常算到mv的时候都整体乘以1000,精度得到提高,其左对齐相当于乘以了64,省掉了一个乘法器运算)。

Stm32的adc还具有模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高低阈值。Adc输入的时钟不能超过14MHz,它由PCLK2经分频产生。STM32F103系列最少都拥有 2 个 ADC,我们选择的 STM32F103RCT 包含有 3 个 ADC。STM32 的 ADC 最大的转换速率为 1Mhz,也就是转换时间为 1us(在 ADCCLK=14M,采样周期为 1.5 个 ADC 时钟下得到),不要让 ADC 的时钟超过 14M,否则将导致结果准确度下降。

 

ADC主要特征:

12位分辨率

转换结束、注入转换结束和发生模拟看门狗事件时产生中断

单次和连续转换模式

从通道0到通道n的自动扫描模式

自校准

带内嵌数据一致行的数据对齐

采样间隔可以按通道分别编程

规则转换和注入转换均有外部触发选项

间断模式

双重模式

ADC转换时间:

Adc供电要求:2.4到2.6v

ADC输入范围:Vref-<Vin<Vref+<=VDD(3.6v)

规则通道转换期间有DMA请求产生

 

ADC开关控制

通过设置ADC_CR2寄存器的ADON位可给ADC上电。第一次设置ADON位时,它将ADC从断电状态下唤醒。ADC上电延迟一段时间后(Tstab),再次设置ADON位时开始转换。通过清零ADON位可以停止转换,并将ADC置于断电模式。这个模式中,ADC几乎不耗电。

ADC通道选择

单次转换和连续转换模式选择,是否为扫描模式, 注入通道管理和规则通道选择

校准和数据对齐

可编程的通道采样时间

 

单次转换模式下, ADC只执行一次转换。该模式既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动也可通过外部触发启动(适用于规则通道或注入通道),这时CONT位为0。
一旦选择通道的转换完成:
● 如果一个规则通道被转换:
─ 转换数据被储存在16位ADC_DR寄存器中
─ EOC(转换结束)标志被设置
─ 如果设置了EOCIE,则产生中断。
● 如果一个注入通道被转换:
─ 转换数据被储存在16位的ADC_DRJ1寄存器中
─ JEOC(注入转换结束)标志被设置
─ 如果设置了JEOCIE位,则产生中断。

在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。此模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。每个转换后:
● 如果一个规则通道被转换:
─ 转换数据被储存在16位的ADC_DR寄存器中
─ EOC(转换结束)标志被设置
─ 如果设置了EOCIE,则产生中断。
● 如果一个注入通道被转换:
─ 转换数据被储存在16位的ADC_DRJ1寄存器中
─ JEOC(注入转换结束)标志被设置
─ 如果设置了JEOCIE位,则产生中断。

 

ADC涉及到的寄存器:ADC_CR1(控制寄存器), ADC_CR2,ADC_SMPR1(采用时间寄存器),ADC_SMPR2, ADC_JOFRX(注入通道数据偏移寄存器x), ADC_HTR(看门狗高阈值寄存器),ADC_LTR, ADC_SQR1(规则序列寄存器), ADC_SQR2, ADC_SQR1,ADC_JSQR(注入序列寄存器),ADC_JDRX(注入数据寄存器x),ADC_DR(规则数据寄存器)