【MM32F0020】- ADC 介绍

关键字 :ADCMindMotion

一、前言

MM32F0020 有一个 12 位的 ADC,最快转换速率可达 1MHz,有 8 个外部输入通道,1 个内部通道,本文介绍其使用 TIM1_CC4 作为外部触发源,使用单周期扫描模式,转换三个通道的配置过程。

二、解析

 ADC 的输入时钟最大不超过 16M,由 AHB Clock 的 pclk 产生,如下图,MM32F0020 的系统时钟最大是 48MHz,APB1_Div 默认是 1,所以需要对 pclk 进行分频,分频系数的设置需要配置 ADC 的 ADC_ADCFG 配置寄存器。

ADC_ADCFG 配置寄存器中关于时钟分频的配置如下图。其需要配置分频系数的高位和低位。



其配置转换的分辨率也在 ADC_ADCFG 配置寄存器中配置,如上图 7-9 位的描述。

接下来需要配置其转换模式,外部触发源,中断使能,以及转换数据的数据对齐方式。这些配置在 ADC_ADCR 控制寄存器中配置。

其中配置数据对齐方式是通过 ADC_ADCR 控制寄存器的第 11 位,转换模式是通过其 9-10 位去配置。

外部触发源通过其 4-6 位去配置。


使能外部触发源由其第 2 位去配置。

 本文要使能的中断是,通道序列转换结束的中断,本文要转换 3 个通道,当 3 个通道都转换完成之后,进入中断,选项如下图。

进入中断之后,需要判断通道转换是否完成,可以通过读取 ADC_ADSTA 状态寄存器的第 0 位进行判断。如下图。

注意在出中断之前要清除该位。

 

另外还可以针对每个通道配置其采样时间,ADC 转换通道的采样时间可通过ADC_SMPR1 和ADC_SMPR2 寄存器中的 SAMPCTL0~SAMPCTL8 配置。下图为 ADC_SMPR1 配置通道 0-7的采样时间,ADC_SMPR2 配置通道 8 的采样时间。



关于每个通道采样时间的计算方式如下。

单个通道的采样时间 = ADC 分频之后得到的时钟 * 采样周期

注意这里只是计算采样时间,并非转换时间,总的转换时间除了采样以外还要加上处理时间,总的转换时间的计算也在下面给出。

假设 ADC 设定的分辨率是 n,设定的采样时间是 m,ADC 分频之后的时钟是 F_adc_clk,那么转换时间就是,

T = (m+n+0.5)/  F_adc_clk

举个例子,设定的是 12bit 的分辨率,采样时间是 3.5 个周期,时钟是 16MHz,

T = (12+3.5+0.5) / 16M = 16 / 16000000 = 1us

接下来配置采样的通道,本文中需要的是任意通道转换,所以先使能任意通道转换,在 ADC_ANY_CR 任意通道控制寄存器中的第 0 位进行使能。

配置任意转换的通道个数,通过 ADC_ANY_CFG 任意通道配置寄存器进行配置,如下图,注意其提示部分。

本文中需要转换 3 个通道,所以配置其为 3 即可。

接下来需要配置任意转换的通道是哪几个通道,通过 ADC_CHANY0 或者 ADC_CHANY1 进行配置。

本文每一次周期扫描只扫描 3 个通道,所以只配置 ADC_CHANY0 的 0-11 位即可。

配置完成以后即可使能 ADC 开始工作,可以通过前面提到的 ADC_ADCFG 寄存器的第 0 位进行使能,然后开始转换。

 

三、总结

总结一下通过外部触发源去触发 ADC 任意通道转换的寄存器配置流程。

1、使能 ADC 外设时钟

2、配置 ADC_ADCFG 寄存器

3、配置 ADC_ADCR 寄存器

4、配置 ADC_SMPR1 寄存器

5、配置 ADC_ANY_CR 寄存器

6、配置 ADC_ANY_CFG 寄存器

7、配置 ADC_CHANY0 寄存器

相关文档参考放在下面参考资料中。

四、参考资料

1、MM32F0020 的用户手册

2、MM32F0020 的数据手册

技术文档

类型标题档案
操作手册User Manual

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论