微机原理与嵌入式接口技术课件:DA 与 AD 转换技术_第1页
微机原理与嵌入式接口技术课件:DA 与 AD 转换技术_第2页
微机原理与嵌入式接口技术课件:DA 与 AD 转换技术_第3页
微机原理与嵌入式接口技术课件:DA 与 AD 转换技术_第4页
微机原理与嵌入式接口技术课件:DA 与 AD 转换技术_第5页
已阅读5页,还剩144页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

D/A

与A/D

转换技术7.1D/A转换基础7.2STM32的DAC7.3D/A转换基础7.4STM32的ADC组习题7

本章要点

☆D/A转换器工作原理

☆D/A转换器主要技术指标

☆STM32的DAC功能和转换方法

☆STM32的DAC应用

☆A/D转换器的工作原理

☆A/D转换器的主要技术指标

☆STM32的ADC功能和工作模式

☆STM32的ADC转换方法

☆STM32的ADC应用

将模拟信号转换成数字信号的装置称为模/数转换器(简称ADC);将数字信号转换成模拟信号的装置称为数/模转换器(简称DAC)。

微型计算机完成测量与控制任务的工作过程如图7.1

所示。

在微机控制系统中,D/A转换器是计算机与被控制设备之间传输信息时必不可少的桥梁,担负着把数字量转换成模拟量的任务。D/A转换器按处理数据的位数不同,可分为8位、10

位、12

位和16

位等转换器。图7.1微型计算机完成测量与控制任务的工作过程

7.1.1转换原理

D/A转换器的作用是将数字量转换成模拟量,它的基本要求是输出电压VO

应和输入数字量成正比,即

典型的D/A转换器芯片通常由模拟开关、电阻网络以及缓冲电路组成,如图7.2

所示。电阻网络是D/A转换器的核心部件,主要有加权电阻网络和“T”形电阻网络两种结构形式。图7.2

D/A转换器结构框图

1.

加权电阻网络D/A转换器的工作原理

图7.3

所示的是加权电阻网络D/A转换器的原理图,根据运算放大器原理,放大器输入电流是通过各个电阻的电流总和。而通过各电阻的电流又是由各位二进制数字所对应的开关控制。放大器的输出电压应为

其中V

REF为参考电压,R

F=R,D

1

~D

n

为输入的二进制数字,其取值为0

时相应的开关断开,实际电路中的开关是CMOs电子开关。图7.3加权电阻网络D/A转换器原理

2.

T形电阻网络D/A转换器的工作原理

T形电阻网络采用分流的原理实现对数字量的转换。在图7.4

中只有两种电阻R和2R,用集成工艺生产较容易,精度也容易保证,因此应用比较广泛。根据运算放大器特性,运放的反向输入端看作虚地,则各节点D

1~D

n

对地的等效电阻都是R。

如果开关接入运算放大器反相输入端,则流经各个开关的电流大小满足如下关系:

取反馈电阻R

F=R,则输出电压为图7.4

T形电阻网络D/A转换器原理

实际电路中各开关由二进制输入的各位来控制。因此对于任意的二进制数字输出,对应的模拟输出电压为

其中最高位D

n

称为最高有效位,最低位D

1

称为最低有效位。

7.1.2

D/A转换器的主要性能指标

D/A转换器的主要性能指标有分辨率、转换精度、建立时间、温度系数、非线性误差等,它们都是衡量D/A转换器技术指标的重要参数。

1.

分辨率

分辨率是指D/A转换器对数字输入量变化的敏感程度的度量,它是D/A转换器所能分辨的最小的输入量,通常用数字量的位数来表示,如8

位、12

位等。

2.

转换精度

转换精度反映了D/A转换器的精确程度。它与D/A转换器芯片结构、外部电路配置、电源等因素有关。转换精度又分为绝对转换精度和相对转换精度。

绝对转换精度是以理想状态为参照,即D/A转换器的实际输出值与理论的理想值之间的差值,一般应低于1/2LsB。

3.

建立时间

D/A转换器的建立时间也称转换时间,是对D/A转换器转换速度快慢的敏感性能描述指标,即当输入数据发生变化后,输出模拟量达到稳定数值,也即进入规定的精度范围内所需要的时间。

4.

温度系数

温度系数是D/A转换器受环境温度影响的特征。

5.

非线性误差

非线性误差也称为线性度,它是指实际转换特性曲线与理想转换特性曲线之间的最大偏差。一般要求非线性误差的绝对值不大于1/2LsB。非线性误差越小,说明线性度越好,D/A转换器输出的模拟量与理想值的偏差就越小。

7.2

STM32的DAC

7.2.1

STM32DAC功能简介

STM32的DAC模块(数字/模拟转换模块)是12

位数字输入、电压输出型DAC。可以配置成8

位或12

位模式,也可以与DMA控制器配合使用。DAC工作在12

位模式时,数据可以设置成左对齐或右对齐。DAC模块有两个输出通道,每个通道都有独立的转换器。在双DAC模式下,两个通道可以独立地进行转换,也可以同时进行转换并同步更新两个通道的输出。DAC可以通过引脚输入参考电压V

REF+

以获得更精确的转换结果。

STM32的DAC模块主要有以下特点:

·两个DAC转换器:每个转换器对应1

个输出通道;

·12

位模式下,数据左对齐或右对齐;

·三角波、噪声生成;

·两个DAC通道同时或分步转换;

·每个通道都有DMA功能;

·外部触发转换;

·外部可输入参考电压V

REF+

单个通道的DAC框图如图7.5

所示。图中V

DDA为模拟电源,V

ssA为模拟电源地,V

REF+为参考电源,DAC_OUTx为DAC通道x的模拟量输出(PA4

或PA5

引脚),EXIT_9为外部触发引脚。图7.5

STM32DAC通道模块框图

数字输入经过DAC被线性地转换为模拟电压输出,其范围为0

到V

REF+

。DAC通道引脚上的输出电压满足下面的关系:

其中V

O

是DAC输出的模拟电压,DOR

为数字量输出。

【例7.1】假设V

REF+

为3.3

V,D/A转换位数n=12,试求当DOR=2000

时,输出的模拟电压V

O

等于多少?

7.2.2

STM32DAC的工作模式

1.

DAC的触发

STM32DAC的启动方式可以设置为触发启动或非触发启动,由DAC控制寄存器(DAC_CR)中的TENx位决定(x表示DAC的通道,1

或2)。

当TENx=0

时关闭通道x的触发,存入DHRx寄存器的数据会在一个APB1

时钟周期内自动转存到DORx寄存器中,在经过时间TsETTLING之后,输出即有效,这段时间的长短依电源电压和模拟输出负载的不同会有所变化。时序图如图7.6

所示。

7.6

DAC数据转换时序图

软件触发:对DAC_ssWTRIGR寄存器中的sWTRIGx

位置1

可以使能一次软件触发,当数据传入DORx寄存器后的一个APB1

周期,该位由硬件自动置0。

定时器触发:对DAC_CR的TsEL1[2:0]位进行配置,可以选择TIM2、TIM4、TIM5、TIM6、TIM7

和TIM8

定时器触发,当选定的定时器发生事件后,产生一次定时器触发,启动一次DAC转换。

外部中断触发:对DAC_CR的TsEL1[2:0]位进行配置,可以选择外部中断线9

触发,当该线路发生指定事件后,使能一次外部中断触发,启动一次DAC转换。

2.

DAC的波形输出模式

STM32的DAC有3

种输出模式,分别是关闭波形输出、三角波输出和噪声输出。波形输出模式受DAC_CR寄存器中WAVE1[1:0]位控制,关闭波形输出时,用户可根据需要自定义波形输出。

1)三角波输出

选择三角波输出时可在一个基值上叠加一个小幅度的三角波。选择DAC的三角波生成功能,在DAC_CR寄存器MAMP1[3:0]位中设置三角波的幅度。DAC内部的三角波计数器在每次触发事件之后的3

个APB1

时钟周期后累加1。计数器的值与DAC_DHRx寄存器的数值相加并丢弃溢出位的数据后写入DAC_DORx寄存器。在传入DAC_DORx寄存器的数值小于设置的最大幅度时,三角波计数器逐步累加。一旦达到设置的最大幅度,则计数器开始递减,到0

后再开始累加,周而复始。三角波生成的示意图如图7.7

所示。图7.7

DAC生成三角波的示意图

2)噪声输出

可以利用线性反馈移位寄存器(LFsR)产生幅度变化的伪噪声。选择DAC噪声生成功能,在DAC_CR寄存器MAMP1[3:0]位中设置噪声的屏蔽位,可改变噪声幅度。LFsR的预装入值为0xAAA。按照特定算法,在每次触发事件后3

个APB1

时钟周期之后更新该寄存器的值。设置DAC_CR寄存器的MAMP1[3:0]位可以屏蔽部分或者全部LFsR的数据,这样得到的LsFR

值与DAC_DHRx的数值相加,去掉溢出位之后即被写入DAC_DORx寄

存器。

3.

DAC的输出缓存

STM32的DAC集成了2

个输出缓存,可以用来减少输出阻抗,无需外部运放即可直接驱动外部负载。每个DAC通道输出缓存可以通过设置DAC_CR寄存器的BOFFx

位来使能或者关闭。

7.2.3

STM32DAC的转换

1.

DAC数据格式

STM32的DAC是12

位的数字输入,它可配置为8

位和12

位,也可配置为单通道和双通道,在12

位模式下具有左对齐和右对齐两种格式以适应不同格式的用户数据。单通道和双通道数据格式如图7.8

所示,下面分别进行介绍。图7.8

DAC数据格式

1)单DAC通道

8

位数据右对齐:数据写入寄存器DAC_DHR8Rx[7:0]位(实际是写入寄存器DHRx[11:4]位)。

12

位数据左对齐:数据写入寄存器DAC_DHR12Lx[15:4]位(实际是写入寄存器DHRx[11:0]位)。

12

位数据右对齐:数据写入寄存器DAC_DHR12Rx[11:0]位(实际是写入寄存器DHRx[11:0]位)。

2)双DAC通道

8

位数据右对齐:将DAC1

数据写入寄存器DAC_DHR8RD[7:0]位(实际是存入寄存器DHR1[11:4]位),将DAC2

数据写入寄存器DAC_DHR8RD[15:8]位(实际是存入寄存器DHR2[11:4]位)。

12

位数据左对齐:将DAC1

数据写入寄存器DAC_DHR12LD[15:4]位(实际是存入寄存器DHR1[11:0]位),将DAC2

数据写入寄存器DAC_DHR12LD[31:20]位(实际是存入寄存器DHR2[11:0]位)。

12

位数据右对齐:将DAC1

数据写入寄存器DAC_DHR12RD[11:0]位(实际是存入寄

存器DHR1[11:0]位),将DAC2

数据写入寄存器DAC_DHR12RD[27:16]位(实际是存入寄存器DHR2[11:0]位)。

根据对DAC_DHRyyyD

寄存器的操作,经过相应的移位后,写入的数据被转存到DHR1

和DHR2

寄存器中(DHR1

和DHR2

是内部的数据保存寄存器x)。随后,DHR1和DHR2

的内容或被自动地传送到DORx寄存器,或通过软件触发或外部事件触发被传送到DORx寄存器。2.

DAC转

2.

DAC转换

不能直接对寄存器DAC_DORx写入数据,任何输出到DAC通道x的数据都必须写入DAC_DHRx寄存器(数据实际写入DAC_DHR8Rx、DAC_DHR12Lx、DAC_DHR12Rx、DAC_DHR8RD、DAC_DHR12LD

或者DAC_DHR12RD

寄存器)。

如果通道触发设置为禁止,用户在设置数据格式并赋值时,DAC会自动启动数模转换,输出DOR

寄存器所对应的模拟量;如果通道触发设置为定时器触发或外部中断触发,在相应事件发生后,也会自动启动数模转换,输出DOR

寄存器所对应的模拟量;如果通道触发设置为软件触发,则需要用户软件触发启动DAC进行数模转换。

3.

DAC使能

将DAC_CR寄存器的Enx位置1

即可使DAC通道x供电。过一段启动时间,DAC通道x才会被使能。同其他外设一样,要想使用,必须先开启相应的时钟。STM32的DAC模块时钟是由APB1

提供的。

4.

DMA请求

STM32的DAC2

个通道都具有DMA功能。2

个DMA通道可分别用于2

个DAC通道的DMA请求。如果将DAC_CR寄存器中的DMAEnx位置1,一旦有外部触发(而不是软件触发)发生,则产生一个DMA请求,将指定地址中的数据存入DAC_DHRx寄存器中,随后数据被传送到DAC_DORx寄存器,启动DAC转换输出。查STM32数据手册可知,DAC通道1

与DMA2

的通道3

对应,DAC通道2

与DMA2

的通道4

对应。

7.2.4

STM32DAC的应用

1.

STM32DAC硬件电路

STM32的DAC集成在芯片内部,因此它的硬件电路非常简单,如图7.9

所示。其内部带运算放大器,具有一定的负载能力,开启输出缓冲使能可以增加带负载

能力。一旦使能DACx通道,相应的GPIO(PA4

或PA5)引脚就会自动与DAC的模拟输出相连。图7.9

DAC硬件电路

2.

开启DAC输出的步骤

要正确使用STM32的DAC,需要对相应的GPIO

引脚、系统时钟、DAC控制寄存器等进行一系列的设置,如果使用了定时器触发、外部中断触发和DMA功能,还需要对这些外设进行配置。下面以软件触发DAC通道1

产生三角波为例,讲述使用DAC的一般步骤。

1)GPIO

引脚配置

STM32的DAC通道1

模拟量输出在PA4

引脚上,因此需要先使能PORtA的时钟,并将PA4

引脚配置为模拟量输入。DAC本身是输出,将PA4

引脚配置为模拟量输入是为了避免额外的干扰和降低功耗。

3.

DAC应用的软件设计

下面通过几个应用实例,进一步了解和掌握STM32DAC应用的具体方法。

【例7.1】在DAC通道1

上自定义输出方波,通道触发关闭。

【例7.2】使用软件触发方式,在DAC通道1

上产生正弦波,DAC通道2

上产生锯齿波。

【例7.3】使用定时器2

触发,在DAC通道1

上产生三角波,通道2

上产生噪声。

【例7.4】用DMA的方式在ADC通道1

上产生正弦波,选择定时器2

触发。

7.3A∕D

转换基础

7.3.1A∕D

转换原理在A/D转换中,因为输入的模拟信号在时间上是连续的,而输出的数字信号是离散量,所以进行转换时只能按一定的时间间隔对输入的模拟信号进行采样,然后再把采样值转换为数字量输出。通常A/D转换需要经过采样、保持、量化、编码四个步骤。

1.

采样和保持

A/D转换需要一定的时间,在转换过程中,如果输入到ADC的模拟量发生变化,则不能保证转换精度。为此,需要在ADC前加入采样保持电路,最基本的采样保持器电路如图7.10

所示。采样时,V

C

为高电平,开关s

导通,模拟信号V

in通过s

向电容CH充电,如果电容CH

电容值很小,电容可以在很短的时间内完成充放电,输出电压V

O

跟踪输入模拟信号的变化。保持时,V

C

为低电平,开关s

断开,由于集成运放的输入阻抗高,电容放电缓慢,输出电压V

O

保持在模拟开关断开瞬间的输入信号值。图7.10基本的采样保持器电路图

在进行数据采集之前,需要确定采样频率:即在一段固定时间内采集数据的点数。采样频率是一个很重要的参数,采样频率越高,采样越密,单位时间内的采样值越多,采样信号就越接近输入信号的波形,如图7.11

所示。图7.11采样和保持波形示意图

2.

量化与编码

输入的模拟电压信号经过采样和保持后,得到的是阶梯波,而阶梯波仍是一个模拟信号。量化就是用基本量化单位的个数来表示采样到的模拟信号的幅值,从而实现模拟量到数字量的转换,这个过程也称为量化过程。编码是把已经量化的模拟值用二进制、BCD或其他码来表示,这个过程称为编码。

例如,一个12

位的A/D转换器,把输入电压分成了4096

等份,若量程为0~3.3

V,则量化单位Δ为

由于模拟电压信号在数值上是连续的,不一定被量化单位Δ整除,所以在量化过程中就可能引入误差量。A/D转换器的位数越多,量化的误差就越小。例如10

位的A/D转换器最小量化误差为

由此可见,A/D转换器的位数越多,量化等级越细,量化误差越小。量化时对误差有两种处理方法:只舍不入和有舍有入。只舍不入是将不足一个量化单位的尾数去掉,取原整数,误差相对较大。有舍有入是当尾数小于Δ/2

时用舍尾取整法得其量化值,当尾数大于Δ/2

用舍尾入整法得其量化值。

7.3.2A∕D

转换器分类

随着大规模、超大规模集成电路技术的飞速发展,A/D转换器的设计思想和制作技术层出不穷。为了满足不同检测和控制任务的需求,大量结构不同、性能各异的A/D转换器应运而生。尽管A/D转换器的种类很多,但目前应用较为广泛的主要有三种类型:逐次逼近型A/D转换器、双积分型A/D转换器和V/F变换型A/D转换器。下面简要介绍这三种A/D转换器的基本原理。

1.

逐次逼近型A/D转换器的基本原理

逐次逼近型A/D转换器是较为常用的一种A/D转换器。它由比较器、参考电源、D/A转换器、逐次逼近寄存器与控制逻辑等部分组成。图7.12逐次逼近型A/D转换器的基本原理

2.

双积分型A/D转换器的基本原理

双积分型A/D转换器是一种高精度、低速度的转换器件,在各种实时性要求不高的测量仪表中有广泛应用。其基本原理是:把待转换的模拟电压V

A

变换成与之成比例的时间,并在此时间内用恒定频率的脉冲去计数,这样就将其转换为数字n;n

和V

A

也成正比,也称为模拟电压—时间间隔—数字量转换原理。双积分型A/D转换器的电路结构如图7.13

所示,它由积分器、计数器、比较器和逻辑控制电路组成。图7.13双积分型A/D转换器的电路结构图

双积分型A/D转换器的工作原理如图7.14

所示。转换器先将计数器复位,积分电容C完全放电后,其工作分为两个阶段:

在第一阶段,首先对输入模拟电压进行固定时间的积分,积分结束后积分器的输出电压为V;然后在此基础上对该电压按照一个固定的斜率(取决于参考电压)进行第二阶段的反向积分,并记录积分器输出由V

降为0

的时间。图7.14双积分型A/D转换器的工作原理

双积分型A/D转换过程中进行两次积分,具有如下优点:

·抗干扰能力强。尤其对工频干扰有较强的抑制作用,只要选择定时器积分时间为20ms

的整数倍即可。

·具有较高的转换精度。这主要取决于计数脉冲周期,计数脉冲频率越高,计数精度也就越高。

·电路结构简单。对积分元件R、C参数精度要求不高,只要稳定性好即可。

·编码方便。数字量输出既可以是二进制,也可以是BCD码,仅取决于计数器的计数规律。

3.

V/F变换型A/D转换器的基本原理

V/F变换是把电压信号转变为频率信号,其核心部件是电压—频率(V/F)变换器。它是将待转换的模拟电压信号先变换为脉冲信号,该脉冲信号的频率与信号幅值成正比,然后在一段标准时间内,用计数器累计所产生的脉冲数,从而实现A/D转换,这就是电压—频率—数字转换原理。

V/F变换器内部电路图如图7.15(a)所示。图7.15

V/F变换器

图7.16

给出了完整的V/F变换型A/D转换器的工作原理图。时基电路产生若干精确的时间间隔,即时基信号,通常取10

s、1

s

或0.1

s

等。计数器的计数值经锁存器锁存后输出,完成A/D转换全部过程。图7.16

V/F变换型A/D转换器的工作原理图

V/F变换型A/D转换器具有以下优点:

·由于应用了积分电容,具有很好的抗干扰性。V/F变换本身是一个积分过程,用V/F变换器实现A/D变换就是频率计数过程,相当于在计数时间内对频率信号进行积分,因而具有较强的抗干扰能力。

·具有良好的线性度和较高的分辨率。数字位数与时基信号持续时间T有关,T越长,则转换数字量的位数就越多。

·电路结构简单。对外接电容C要求不高,只要求保持良好的稳定性即可。

·接口简单、占用计算机硬件资源少。频率信号可输入CPU的任一个I/O端口或作为中断及计数输入等。

·便于远距离传输。由于频率量是开关信号,因此可以长距离传输而不受干扰。

由于以上这些特点,V/F变换器应用于一些非快速而需进行较长距离信号传输的A/D转换过程,此外还可以简化电路、降低成本、提高性价比。

上述三种A/D转换方法各有特点,不同的性能使它们各自适用于不同的应用场合。双积分型ADC属于间接转换,其特点是精度高、价格便宜,抗干扰能力强,但转换速率较低。由于双积分型ADC是利用平均值转换,因此对于常态干扰的抑制能力较强,常用于数字电压表等低速场合。

7.3.3

A/D

转换性能指标

A/D

转换可以有多种实现方式,但它们的性能特点和价格有很大差异。因此在选用时应注意各种A/D转换器的主要性能是否满足应用要求,以及在价格上是否合理。AD

转换器的性能指标主要有以下几个方面。

1.

分辨率

ADC的分辨率是指能分辨的输入模拟量的最小值,即输出数字量最低位LSB

由1→0或由0→1

变化时输入模拟量变化的最小值,是A/D输出的二进制或十进制数的位数,也是A/D转换器理论上能达到的精度。分辨率通常用二进制位数来表示。

2.

转换速率

ADC的转换速率就是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需要的时间,则是转换速率的倒数。ADC的转换速率与A/D转换原理相关,双积分型ADC转换速率较慢,而逐次逼近型ADC转换速率较快。

3.

量化误差

量化误差是由ADC的有限分辨率所引起的误差。A/D转换的结果只能是有限数量的定值,而模拟信号的取值则是无限的。一个分辨率有限的ADC的阶梯状输入输出特性曲线与具有无限分辨率的ADC输入输出特性曲线(直线)之间的最大偏差,称为量化误差,如图7.17

所示。

图7.17

ADC的输入输出特性与量化误差

4.

转换精度

ADC的转换精度有绝对精度和相对精度之分。

所谓绝对精度是指在ADC的整个量程范围内,所对应的模拟信号值与实际值之差的最大值,也就是ADC输出数值偏离线性最大的距离,单位是LSB,它包括所有的误差。相对精度是绝对精度与满量程输入信号的百分比。

应当注意,精度和分辨率是两个不同概念。精度是指转换后所得到的实际值相对于理论值的误差或接近程度;而分辨率则是指能够对转换结果发生影响的最小输入量。

引起ADC误差的原因除了量化误差以外,还有设备误差。由ADC各种元件的非理想特性造成的误差称为设备误差,主要有以下几种。

(1)偏移误差。偏移误差指ADC的最低有效位为1

时,其实际输入电压与理论输入电压之差。

(2)满刻度误差。满刻度误差又称为增益误差。

(3)线性度。线性度有时也称为非线性度,它是指ADC实际的输入输出特性曲线与理想直线的最大偏差。

7.3.4多通道数据采集

在计算机测量和控制系统中,很多时候需要对多种参数进行采集和控制,为了节省硬件,可以共用同一个A/D或D/A转换器,实现多个回路的多参数的采集、转换和控制。解决多个回路和A/D或D/A转换器之间的切换问题的硬件设备称作多路模拟开关。

图7.18

所示是一个多回路分时共用A/D、D/A转换器的多路模拟开关框图。图中,在模拟量输入端和模拟量输出端都分别用到了多路模拟开关,但是两个多路模拟开关作用不同。在模拟量输入通道中实现的是“多选一”形式,即多路模拟开关的输入是多路待转换的模拟量,每次只能选其中的一路,该通路经采样保持器,送到A/D转换器进行转换后,送入计算机进行处理。在模拟量输出通道中实现的是“一到多”形式,即D/A转换器输出的模拟控制信号,经过多路模拟开关变换,被送到多个控制对象中的某一个上。图7.18多回路分时共用A/D、D/A转换器框图

7.4

STM32的ADC

STM32芯片内部集成有12

位的A/D转换器,该ADC是一种逐次逼近型模/数转换器。它有多达18

个通道,可测量16

个外部和2

个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式储存在16

位的寄存器中。ADC的输入时钟不得超过14

MHZ,它是由PCLK2

经分频产生的。

7.4.1

STM32ADC功能简介

·12

位分辨率

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

·单次和连续转换模式

·从通道0

到通道n

的自动扫描模式

·自校准

·带内嵌数据一致性的数据对齐

·采样间隔可以按通道分别设置

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

·间断模式

·双重模式(带2

个或以上ADC的器件)

·ADC转换时间:1μs~2μs

·ADC供电要求:2.4~3.6

V;

·ADC输入范围:V

REF-≤V

in≤V

REF+

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

图7.19

所示为一个ADC模块的框图,其引脚说明见表7.1。图7.19

ADC模块框图

根据STM32产品不同,ADC转换器个数不等,最多有3

个,分别是ADC1、ADC2和ADC3。每个ADC转换器都可以独立工作,分配了与之对应的通道和I/O引脚,如表7.2

所示。例如通道0,描述为ADC123_In0,引脚PA0,表示使用PA0

引脚作为模拟量输入的ADC通道0,ADC1、ADC2

和ADC3

都可以使用。通道16

为内部温度传感器输入,通道17为V

REFINT内部参考电压输入,温度传感器和V

REFINT只能使用ADC1

进行转换。

所有输入通道被分成规则通道(最多16

通道)和注入通道(最多4

通道)两类,注入通道的转换结果分别存放于4

个16

位数据寄存器中,而所有的规则通道则共用一个16

位的数据寄存器。除此以外,两通道的触发控制和转换结束的标志信号都有不同,注入组的控制和状态信号一般都以字母J开头。

需要注意ADC3

的规则转换和注入转换与ADC1

和ADC2

的不同;TIM8_CH4

和TIM8_TRGO

及它们的重映射位只存在于大容量产品中。

7.4.2

STM32ADC的工作模式

STM32的ADC有多种转换工作模式,功能十分强大。如图7.20

所示,单通道单次转换可用于系统初始时检测某些外部条件是否满足,从而决定系统是否启动。而多通道连续转换则在ADC初始化完成后经一次触发后自动连续转换,CPU只需要在转换完成后从ADC的数据寄存器中取走结果。在这些工作方式的支持下,STM32的ADC将许多原来由应用软件完成的工作变成由硬件实现,大大简化了应用程序,节约了CPU的运行时间。

特别是在连续转换工作模式下,配合DMA控制器可将A/D转换结果自动搬运到指定的内存空间,CPU不参与A/D转换结果的读取和转换的启动,让ADC全自动化地工作,把CPU的负荷降到最低。图7.20

STM32ADC的基本工作模式

1.

独立ADC和双ADC模式

含有2

个或以上ADC模块的STM32产品,可以采用双ADC模式,也可以采用独立ADC模式。在独立ADC模式下,每个ADC模块可以独立工作,但不能同步。在双ADC模式下,可实现同步触发和交替触发等很多种不同模式。这些模式在STM32参考手册中有详细介绍。本节只讨论独立ADC模式。

2.

规则通道和注入通道

STM32的每个ADC模块都是通过内部的模拟多路开关,切换到不同的输入通道进行采样与转换。为了避免在程序中频繁切换通道的麻烦,STM32引入了成组转换的工作原理,可以由程序预先设置好待转换的通道后,对多个模拟通道自动地进行逐个采样和转换。按照功能不同将输入通道分成了规则通道组和注入通道组。

1)规则通道

规则通道组最多可以安排16

个通道,最少要安排1

个通道,多于1

个通道的称为多通道数据采集,只有1

个通道的称为单通道数据采集。规则通道组个数要写入ADC_SQR1

寄存器的L[3:0]位中,而它们的转换顺序要写入ADC_SQR1~ADC_SQR3

寄存器中,规则通道的触发方式在ADC_CR2

寄存器中的EXTSEL[2:0]位中配置。

2)注入通道

注入通道组最多可以安排4

个通道,如果启用注入通道,最少要安排1

个通道。注入通道的个数要写入ADC_JSQR寄存器的L[1:0]位中,而它们的转换顺序要写入ADC_JSQR

寄存器中,注入通道的触发方式在ADC_CR2

寄存器中的JEXTSEL[2:0]位中配置。

3.

单次转换模式

在单次转换模式下,ADC只执行一次转换。将ADC_CR2

寄存器中的CONT位置0

可选择单次转换模式。该模式既可通过软件启动(只使用规则通道),也可以通过外部触发启动(适用于规则通道和注入通道),启动一次转换一次,一旦转换完成,则:

(1)如果是规则通道被转换:转换结果存储在16

位的寄存器ADC_DR

中,置转换结束标志位EOC=1,如果使能了中断EOCIE,则产生中断,然后ADC停止工作。

(2)如果是注入通道被转换:转换结果存储在16

位的寄存器ADC_CRJ1

中,注入转换结束标志位JEOC=1,如果使能了中断JEOCIE,则产生中断,然后ADC停止工作。

4.

连续转换模式

在连续转换模式中,当前面一次ADC转换结束后,马上启动另一次转换。将ADC_CR2

寄存器中的COnT位置1

可选择连续转换模式,此模式可通过外部触发启动或软件触发启动,一旦启动后,ADC执行转换,转换结果存入ADC_DR

寄存器中,如果使能中断则产生中断信号,ADC会继续启动下一次的ADC转换,一直循环往复。由于规则通道共用一个结果数据寄存器,如果规则通道的ADC_DR

寄存器中的数据没有及时取走,数据会被下一次的转换结果替换。

5.

扫描模式

扫描模式用来扫描一组模拟通道,该模式可通过设置ADC_CR1

寄存器中SCAN

位设置,SCAN=0

表示关闭扫描模式,SCAN=1

表示开启扫描模式。

6.

间断模式

间断模式是对多通道转换序列的一个补充,间隔长度为n(n≤8),它必须由外部事件触发。

7.4.3

STM32ADC的转换

1.

ADC数据格式

1)规则通道

在规则通道模式下,ADC转换结果存放在ADC_DR

中。

2)注入通道

在注入通道模式下,ADC转换结果要减去存放在ADC_JOFRx寄存器中定义的偏移量,最终结果写入ADC_JDRx寄存器(x=1~4

对应选择的注入通道号)。

2.

可编程采样时间

ADC使用若干个ADC_CLK

周期对输入电压进行采样,采样周期数目可以通过ADC_sMPR1

和ADC_sMPR2

寄存器中的SMP[2:0]位更改。每个通道可以分别用不同的时间采样。总转换时间计算如下:TCONV

=采样时间+12.5

个周期。

3.

校准

ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。在校准期间,每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差。通过设置ADC_CR2

寄存器的CAL

位启动校准。一旦校准结束,CAL

位被硬件复位,可以开始正常转换。建议在上电时执行一次ADC校准。校准阶段结束后,校准码存储在ADC_DR

中。

4.

转换启动

ADC启动可以由软件触发,也可以由外部事件触发(例如定时器捕获、EXTI

线)。如果设置了EXTTRIG

控制位,则外部事件就能够触发转换。EXTTSEL[2:0]和JEXTSEL[2:0]控制位允许应用程序选择8

个可能事件中的某一个,EXTSEL[2:0]位设置规则通道组触发源,JEXTSEL[2:0]位设置注入通道组触发源的采样。规则通道和注入通道触发源清单如表7.3

所示,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论