HC32F460 系列的模数转换器 ADC

1

摘要

本应用笔记主要介绍

HC32F460

系列

MCU

的模数转换器(以下简称

ADC

)的特点及使用方法,包括扫描模式、转换数据平均功能、模拟看门狗、可编程增益放大器和协同模式等。

2

ADC

简介

2.1

功能简介

HC32F460

系列

MCU

内部集成

ADC1

ADC2

两个

ADC

模块(系统框图如图

2-1

),挂载于

AHB-APB

APB3

)总线,可配置

12

位、

10

位和

8

位分辨率,支持最多

16

个外部模拟输入通道和

1

个内部基准电压

/8bitDAC

输出的检测通道。这些模拟输入通道可以任意组合成一个序 列(序列

A

或序列

B

),一个序列可以进行单次扫描(包括两个动作:采样和转换),或连续扫描。支持对任意指定通道进行连续多次扫描,并对转换结果进行平均。

ADC

模块还搭载模拟看门狗(以下简称

AWD

)功能,可对任意指定通道的转换结果进行监视,检测是否超出设定的阀值。

2.2

主要特性

HC32F460

系列

MCU

ADC

具有如下主要特性:

1)

高性能

Ÿ

可配置

12

位、

10

位和

8

位分辨率

Ÿ

周边时钟(数字时钟)

PCLK4

A/D

转换时钟

ADCLK

的频率比可选择:

Ÿ

PCLK4 : ADCLK = 1 : 1

2 : 1

4 : 1

8 : 1

1 : 2

1 : 4

Ÿ

ADCLK

可选与系统时钟

HCLK

异步的

PLL

时钟,此时

PCLK4 : ADCLK = 1:1

Ÿ

采样率:

2.5MSPS

PCLK4 = ADCLK = 60MHz

12

位分辨率,采样

11

周期)

Ÿ

各通道可独立设置采样时间

Ÿ

各通道独立数据寄存器

Ÿ

数据寄存器可配置数据对齐方式

Ÿ

连续多次转换平均功能

Ÿ

模拟看门狗,监视转换结果

Ÿ

不使用时可将

ADC

模块设定为停止状态

2)

模拟输入通道

Ÿ

最多有

16

个外部模拟输入采样通道

Ÿ

1

个内部基准电压

/8bitDAC

输出的检测通道

Ÿ

最多有

16

个外部模拟输入引脚,外部模拟输入引脚可与采样通道自由映射

3)

转换开始条件

Ÿ

软件启动开始转换(只支持序列

A

Ÿ

外设事件触发开始转换(支持序列

A

和序列

B

Ÿ

外部引脚触发开始转换(支持序列

A

和序列

B

4)

转换模式

Ÿ

序列

A

单次扫描

Ÿ

序列

A

连续扫描

Ÿ

双序列扫描

Ÿ

协同模式

5)

Ÿ

序列

A

扫描结束中断和事件

ADC_EOCA

Ÿ

序列

A

扫描结束中断和事件

ADC_EOCB

Ÿ

模拟看门狗通道比较中断和事件

ADC_CHCMP

,序列比较中断和事件

ADC_SEQCMP

Ÿ

上述

4

个事件输出都可启动

DMA

2.3

引脚配置

HC32F460

系列

MCU

ADC1

17

个采样通道,最多支持

16

个外部模拟输入引脚,通道

0~15

可与外部模拟输入引脚自由映射,通道

16

用于内部基准电压

/8bitDAC

的输出检测。

ADC2

9

个采样通道,最多支持

8

个外部模拟输入引脚,通道

0~7

可与外部模拟输入引脚自由映射,通道

8

用于内部基准电压

/8bitDAC

的输出检测。

3

ADC

应用

3.1

模拟输入引脚与通道

HC32F460

系列

MCU

ADC

模块模拟输入引脚等配置,

默认情况下,

ADC1

CH0

(通道

0

)对应模拟输入引脚

ADC1_IN0

CH1

对应

ADC1_IN1……

CH16

为内部模拟通道,只能用于检测内部基准电压、

8bitDAC1

8bitDAC2

。也就是,默认情况下,

ADC1

序列

A

的通道选择寄存器

ADC1_CHSELRA0

(或序列

B

的通道选择寄存器

ADC1_CHSELRB0

)的

bit0

1

,即选择了模拟输入引脚

ADC1_IN0

bit1

1

,即选择模拟输入引脚

ADC1_IN1

;序列

A

的通道选择寄存器

ADC1_CHSELRA1

(或序列

B

的通道选择寄存器

ADC1_CHSELRB1

)的

bit0

1

,即选择了内部模拟输入,用于检测内部基准电压、

8bitDAC1

8bitDAC2

。但是,

HC32F460

系列的

ADC

模块具有模拟输入引脚与通道自由映射(除用于检测内部模拟输入的通道外)的功能,可满足用户不同的应用需求。例如,可将引脚

ADC12_IN10

映射到

ADC1

的一个通道(如

CH0

,不能映射到

CH16

),或同时映射到多个通道(如

CH0

CH2

CH3

)。

ADC2

通道与引脚的默认对应关系和通道重映射与

ADC1

的类似。

关于通道重映射,固件例程

adc_11_channel_remap

给出了其具体用法。

3.2

模拟输入的采样时间和转换时间

关于

ADC

时间的详细说明,请参考用户手册

模拟输入的采样时间和转换时间

一节中,寄存器

ADC_SSTR

ADC

电气特性部分,请严格按照手册要求设置采样时间。在满足应用需求的情况下,请尽量将采样时间设置得大一些,尤其在对多个通道采样时,如果通道的采样时间设 置偏小,可能会导致相邻通道(如序列

A

配置了

CH0

CH5

CH7

,那么

CH0

CH5

CH5

CH7

都是相邻通道)之间透过采样电容发生耦合,而使转换结果不准确。

3.3

模式和功能

ADC

的通道可配置为序列

A

或序列

B

,序列

A

和序列

B

可单独设置不同的触发源。两个序列共有四种扫描方式:

Ÿ

序列

A

单次扫描;

Ÿ

序列

A

连续扫描;

Ÿ

序列

A

单次扫描,序列

B

单次扫描;

Ÿ

序列

A

连续扫描,序列

B

单次扫描。

各通道还可设置平均功能,可连续扫描设定次数后,计算转换的平均值,并将平均值保存到数据寄存器中;模拟看门狗

AWD

在通道转换结束后对转换结果进行比较,可生成通道比较中断和事件

ADC_CHCMP

,在整个序列扫描结束后,根据各通道比较结果生成序列比较中断和事件

ADC_SEQCMP

;可编程增益放大器

PGA

,可对模拟输入信号放大后再转换;协同工作模式下,

ADC1

ADC2

可同时转换或连续交替转换;模拟输入引脚可与

ADC

通道的自由映射,再结合协同模式,可实现对指定模拟输入的高频扫描。

3.4

序列

A

单次扫描模式

3.4.1

说明

在此模式下,

ADC

执行单个或多个通道的单次扫描,并在转换完成后停止.

3.4.2

应用

该模式可以设置单个或多个通道。设置多个通道时,可实现对多个通道进行依次扫描,这些通道可设置不同的采样时间,用户不必在扫描过程中停止

ADC

,即可以不同的采样时间重新扫描下一个通道,可避免额外的

CPU

负载以及繁重的软件开发。

该模式是最简单的

ADC

模式,应用方式灵活。如在系统启动前,可以用这种模式检测系统的一些状态信息,如电压、压力、温度等,以确定系统是否可以正常启动;在系统运行中,可用 这种模式,按需检测系统状态,以获取系统实时状态。

应用例程

adc_01_sa_base

给出了该模式的具体用法。

3.5

序列

A

连续扫描模式

3.5.1

说明

连续扫描模式可对单个通道或多个通道进行连续不断的扫描。连续扫描模式允许

ADC

在后台工作。因此,

ADC

可在没有任何

CPU

干预的情况下对通道进行连续(循环)扫描通道。此外,还可以在连续扫描模式下使用

DMA

,从而降低

CPU

负载。

3.5.2

应用

此模式设置单个通道时,可用于监视电池电压、测量和调节烤箱温度等应用。在用于调节烤箱温度时,系统将读取温度并与用户设置的温度进行比较。当烤箱温度达到所需温度时,关闭加热电阻器的电源。

设置多个通道时,与多通道单次扫描模式类似,只是在完成序列的最后一个通道后不会停止扫描,而是从第一个通道重新开始扫描并无限循环下去。多通道连续扫描模式,可用于监视多电池充电器中的多个电压和温度。系统在充电过程中读取每节电池的电压和温度。当电压或温度达到最大值时,将切断相应电池与充电器的连接。

应用例程

adc_01_sa_base

中有该模式的设置以及简单的应用方法。

3.6

双序列扫描模式

3.6.1

说明

此处将

序列

A

单次扫描、序列

B

单次扫描

序列

A

连续扫描、序列

B

单次扫描

两种模式整合为双序列扫描模式进行介绍。双序列扫描模式,只是在前两种模式中增加了序列

B

的扫描。双序列扫描模式下,序列

B

必须由外部引脚或内部事件触发转换,软件启动对序列

B

无 效,序列

A

可由软件启动扫描,也可由外部引脚或内部事件触发扫描。序列

B

的优先级高于 序列

A

.

配置

ADC_CR1.RSCHSEL

0

时,当序列

A

被中断后,恢复时,从被中断通道继续扫描

.

3.6.2

应用

可在前两种模式的应用中,加入需要实时响应(更高优先级)扫描的通道,将其配置为序列

B

。例程

adc_04_sa_sb_event_trigger

实现了双序列扫描的基本用法。

3.7

转换数据平均功能

3.7.1

说明

转换数据平均功能,可设置连续扫描

2

4

8

16

32

64

128

256

次后,将转换结果平均后,保存到数据寄存器。该功能可去除一定的噪声成分,使结果更加准确。该功能的优势是可以在无任何硬件变更的情况下提高

ADC

的准确度,缺点是降低了转换速度和频率(相当于降低了有效采样率)。

3.7.2

应用

针对不同的应用,可设置不同的连续扫描次数,该次数取决于需要的精度、最低转换速度等。应用笔记没有单独为该功能提供例程,在例程

adc_01_sa_base

中有该功能的配置方式。

3.8

模拟看门狗

3.8.1

说明

HC32F460

系列

MCU

的模拟看门狗,可配置为上下限比较或区间比较。用户可预先设置比较条件和相应的上下限或区间。在通道转换结束后,模拟看门狗对转换结果

进行比较,如果满足比较条件,则产生通道比较中断和事件

ADC_CHCMP

,在整个序列扫描结束后,根据各通道比较结果生成序列比较中断和事件

ADC_SEQCMP

。每个使能模拟看门狗的通道,只要其转换结果满足比较条件,都会产生一次中断和事件

ADC_CHCMP

;每个序列,只要其中一个通道的转换结果满足比较条件,都会产生中断和事件

ADC_SEQCMP

。在条件满足后,一个序列只产生一次中断和事件

ADC_SEQCMP

。也就是,一个

ADC

模块,一轮

扫描结束后,可产生多次中断和事件

ADC_SEQCMP

,最多两次(因为最多只有两个序列)中断和事件

ADC_SEQCMP

注意:

-

不推荐同时使用

ADC_CHCMP

中断和

ADC_SEQCMP

中断。

3.8.2

应用

在一些控制系统中,需要严格监测电压、压力、温度等信号的范围,使用模拟看门狗能够快速地检测到这些信号的异常状况,并做出相应的应对措施,以确保设备安全。例程

adc_08_sa_sb_awd_base

给出了模拟看门狗的配置和基本应用方法;但通常,模拟看门狗的中断用法更为高效,应用也更为普遍,例程

adc_09_sa_sb_awd_interrupt

给出了模拟看门狗的中断配置和用法。

3.9

内部模拟通道

3.9.1

说明

ADC1

ADC2

都具有一个用于检测内部模拟输入的通道,分别为通道

16

和通道

8

,用来检测三个可选择的内部模拟输入量,内部基准电压、

8bitDAC1

输出

8bitDAC2

输出。

注意:

-

只能选择

ADC1

ADC2

其中之一的内部检测通道,来检测三个内部模拟输入的其中一个,不能同时使用

ADC1

ADC2

的内部检测通道。

3.9.2

应用

在一些系统中,可能由于某些原因导致

ADC

的参考电压不稳定,从而无法知道模拟输入的实际电压值,这时,可用

ADC1

ADC2

的内部检测通道,来检测内部基准电压(在系统工作电压正常时恒为

1.1V

),来反推

ADC

当前的参考电压,从而得知模拟输入当前的实际电压值。具体实现如下:

1.

在某已知参考电压

VREF1

下测得内部基准电压的

ADC

值为

VAL1

2.

随着系统的运行,参考电压可能随着供电源(如电池)的电压降低而下降,此时测得内部基准电压的

ADC

值为

VAL2

,设此时参考电压为

VREF2

3.

由于内部基准电压是恒定的,所以有:

VAL1 × VREF1 = VAL2 × VREF2;

VREF2 = (VAL1 × VREF1) / VAL2;

由此已知当前参考电压为

VREF2

,就不难得到模拟输入的实际电压了。

例程

adc_10_internal_channel

展示了内部通道的各种配置和简单用法。

3.10

可编程增益放大器

PGA

3.10.1

说明

HC32F460

系列

MCU

集成了可编程增益放大器

PGA

,能对模拟信号进行放大处理,可节省

MCU

外接运算放大器的硬件成本。

PGA

电路先将模拟信号进行放大,然后再将放大后的模拟信号输出至

ADC

模块进行采样转换。

注意:

-

只有

ADC1

支持

PGA

-

PGA

通道直接与模拟输入引脚对应,其对应引脚映射的通道必须被

ADC1

序列

A

或序列

B

的通道选择寄存器选中,才可对该模拟输入进行放大。

3.10.2

应用

用户可根据实际的应用场景,选择合适的放大倍数,对模拟输入进行放大。模拟输入电压和放大倍数必须满足如下条件:

0.1*VCCA/Gain <= VI <= 0.9*VCCA/Gain

其中,

VCCA

是模拟电源电压,

Gain

是放大倍数,

VI

是模拟输入电压,具体请参考用户手册

PGA

相关部分。关于

PGA

的配置和用法,请参考例程

adc_12_adc1_pga

3.11

协同模式

HC32F460

系列

MCU

具有两个

ADC

模块,可使用

ADC

协同工作模式。在协同工作模式下,转换启动只能由

ADC1

的触发源触发启动,且软件启动无效。

协同模式可配置为以下四种协同模式:

Ÿ

单次并行触发模式

Ÿ

单次延迟触发模式

Ÿ

循环并行触发模式

Ÿ

循环延迟触发模式

注意:

-

协同模式只能由

ADC1

配置;

-

设置为协同工作模式的

ADC

,其配置(扫描模式、分辨率和数据对齐方式等)应尽量相同;具体通道无需相同,但是通道数量及对应采样时间应相同;

-

使用单次触发时,请将协同工作模式的

ADC

设置为序列

A

单次扫描或循环扫描;使用循环触发模式时,请设置为序列

A

单次扫描;

-

禁止多个

ADC

模块同时对一个模拟输入进行采样;

-

请严格按照用户手册协同模式相关部分的说明,来设置采样时间(

ADC_SSTR

寄存器)和协同模式控制寄存器

ADC_SYNCCR

SYNCDLY

-

请禁止序列

B

,以免打乱同步。

3.11.1

单次并行触发模式

3.11.1.1

说明

该模式下,

ADC1

序列

A

的触发条件同时触发处于协同工作模式的所有

ADC

模块,

ADC1

序列

A

的触发条件只触发处于协同工作模式的

ADC

模块一次,这些

ADC

模块在采样转换一次后,是否停止,视其序列

A

扫描模式而定。

3.11.1.2

应用

并行触发的特点是,处于协同工作模式的

ADC

能同时对各自的模拟输入进行采样转换。例如,测量单相或三相瞬时电功率并绘制其曲线:

Pn(t) = Un(t) × In(t)

。在这种情况下,应同时测量电压和电流,然后计算瞬时功率,即电压

Un(t)

与电流

In(t)

的乘积。要测量单相电功率,可将

ADC1

的一个通道和

ADC2

的一个通道配合使用,一个通道测量电压,一个通道测量电流,如图

3-9

;要测量三相电功率,可将

ADC1

的三个通道和

ADC2

的三个通道配合使用,三个通道测量电压,三个通道测量电流。

如果只需要测量某一时刻的瞬时功率,使用单次并行触发模式即可;如果要连续测量,可结合定时器使用,用定时器定时触发该协同模式,或结合序列

A

连续扫描模式,或用循环并行触发模式,具体可根据需要的扫描频率等需求选择合适的解决方法。

3.11.2

单次延迟触发模式

3.11.2.1

说明

ADC1

序列

A

的触发条件触发

ADC1

后,经过设定的延迟后触发

ADC2

启动采样转换。

ADC1

序列

A

的触发条件只触发处于协同工作模式的

ADC

模块一次,这些

ADC

模块在采样转换一次后,是否停止,视其序列

A

扫描模式而定。

3.11.2.2

应用

结合序列

A

连续扫描模式,可实现对同一模拟输入的高频采样。例如,如果要转换的信号的最大频率为

2.5MHz

,则采样率应该大于或等于该信号频率的二倍(符合香农采样定理)。

由于一个

ADC

的最大采样率为

2.5MSPS

,达不到采样定理的要求。此时,可通过这种方式将采样率提高到

5MSPS

。关键设置如下:

1.

设置

ADC

时钟为

60MHz

2.

ADC1

ADC2

设置扫描模式为序列

A

连续扫描;

3.

ADC1

ADC2

配置同一个模拟输入,并设置相同的采样周期数

ADC_SSTR = 11

4.

配置同步模式为单次延迟触发,并设置同步延迟时间

ADC_SYNCCR.SYNCDLY = 12

注意:

-

不要为了更高的采样率而缩减采样时间

ADC_SSTR

,采样时间过短可能会使转换结果的

误差超出误差值的设计范围。

建议:强烈建议使用

DMA

而非中断,以免数据丢失。

3.11.3

循环并行触发模式

3.11.3.1

说明

该模式下,

ADC1

序列

A

的触发条件同时触发处于协同工作模式的所有

ADC

模块。若设置为单次并行触发,那么所有

ADC

模块在转换一次后就停止转换(如果扫描模式是序列

A

单次扫描);若设置为循环并行触发,在

ADC1

序列

A

的触发条件同时触发处于协同工作模式

的所有

ADC

模块后,每经过指定延迟之后,所有

ADC

模块会再次同时触发转换,如此循环,直到用户主动软件停止

ADC1

模块或禁止协同模式。

3.11.3.2

应用

如果需要连续测量某模拟信号,可使用该模式,比如前面的测量电功率的应用。

3.11.4

循环延迟触发模式

3.11.4.1

说明

ADC1

序列

A

的触发条件触发

ADC1

之后,每经过设定的延迟后,依次循环不断触发

ADC2

ADC1

ADC2……

,直到用户主动软件停止

ADC1

模块或禁止协同模式。

3.11.4.2

应用

该模式适用用于一些,需要对模拟输入进行循环交替采样而对采样率要求不是很高的应用。这里简单介绍下循环延迟触发模式采样率的计算方法。

假设如下条件:

1.

ADC

时钟为

60MHz

2.

采样时间

ADC_SSTR

设置为

11

3.

17.3.8

节和

17.4.16

节相关要求,

SYNCDLY

可设置为

17

4

总结

本应用笔记简要介绍了

HC32F460

系列

ADC

模块的各种功能以及可能的应用场景,并给出了

ADC

模块应用的基本流程,还提供了一种测试高频采样率的方法,在实际开发中,用户可根据具体应用场景按需配置和应用

ADC

模块。

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,请读者仅作参考,并自行核实相关内容。如发现有害或侵权内容,请联系邮箱:jubao@pinlue.com,我们将在第一时间进行核实处理。

http://image95.pinlue.com/image/84.jpg
分享
评论
首页