AD转换器的接口与编程应用_第1页
AD转换器的接口与编程应用_第2页
AD转换器的接口与编程应用_第3页
AD转换器的接口与编程应用_第4页
AD转换器的接口与编程应用_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

A/D转换器的接口与编程应用8.1ADC的主要特征与架构 8.2ADC的通道选择与工作模式8.3ADC的校准与数据对齐8.4ADC的寄存器与中断8.5ADC应用编程实例8.1ADC的主要特征与架构

1.ADC的主要特征

STM32F10x处理器ADC的主要特征如下:

(1) ADC供电电源为2.4~3.6 V;

(2) ADC模拟输入范围为0~3.6 V;

(3)转换分辨率为12位;

(4)内嵌数据对齐方式;

(5)通道采样间隔时间可编程;

(6)每次ADC开始转换前进行一次自校准;

(7)可设置为单次、连续、扫描和间断模式;

(8)带ADC1和ADC2两个ADC转换器,有8种转换方式;

(9)转换结束发生模拟看门狗事件时产生中断;

(10)规则通道转换期间有DMA请求产生;

(11) ADC转换时间。对于不同的STM32处理器,ADC转换时间为1 µs左右。

2.ADC的架构

STM32处理器的ADC内部结构主要由模拟输入通道、A/D转换器、模拟看门狗、ADC时钟、通道采样时间编程、外部触发转换、DMA请求、温度传感器、ADC的上电控制和中断等电路组成。电路结构如图8.1所示。图8.1STM32处理器ADC结构

需要说明的是,在外部电路连接中,VDDA和VSSA应该分别连接到VDD和VSS。

1)模拟输入通道

模拟信号通道共有18个,可测16个外部信号源和2个内部信号源。其中,16个外部通道对应ADC_IN0到

ADC_IN15,2个内部通道为温度传感器和内部参考电压。

ADC的相关引脚见表8.1所示。

2)A/D转换器

ADC为逐次逼近式A/D转换器,分为注入通道和规则通道。每个通道都有相应的触发电路,注入通道的触发电路为注入组,规则通道的触发电路为规则组;每个通道也有相应的转换结果寄存器,分别称为规则通道数据寄存器和注入通道数据寄存器。由时钟控制器提供的ADCCLK时钟和PCLK2(APB2时钟)同步。

3)模拟看门狗部分

模拟看门狗部分用于监控高低电压阈值,可作用于一个、多个或全部转换通道,当检测到的电压低于或高于设定电压阈值时,可以产生中断。

4) ADC时钟

A/D转换器的时钟(ADCCLK)由系统时钟控制器控制,与高级外设总线APB2同步。时钟控制器为ADC时钟提供了一个专用的可编程预分频器,默认的分频值为2。

5)通道采样时间编程

ADC使用若干个ADC_CLK周期对输入电压采样,采样周期数目可以通过ADC_SMPR1和ADC_SMPR2寄存器中的SMP[2:0]位更改。每个通道可以以不同的时间采样。

总转换时间可按如下公式计算:

TCONV = 采样时间 + 12.5个周期

例如,ADCCLK=14 MHz,采样时间为1.5个周期,则

TCONV = 1.5 + 12.5 = 14个周期 = 1 µs

6)外部触发转换

转换可以由外部事件触发(如定时器捕获、EXTI线)。表8.2、表8.3描述了不同通道外部触发的EXTSEL位设定值。如果设置了EXTTRIG控制位,则外部事件就能够触发转换。EXTSEL[2:0]控制位允许应用程序选择8个可能的事件中的某一个可以触发规则和注入组的采样。

7) DMA请求

因为规则通道转换的值储存在一个唯一的数据寄存器中,所以当转换多个规则通道时,需要使用DMA,这样可以避免丢失已经存储在ADC_DR寄存器中的数据。

只有在规则通道转换结束时,才产生DMA请求,并将转换的数据从ADC_DR寄存器传输到用户指定的目的地址。

8)温度传感器

温度传感器可以用来测量器件内部的温度。温度传感器在内部和ADCx_IN16输入通道相连接,此通道将传感器输出的电压转换成数字值。温度传感器模拟输入采样时间是

17.1 µs。

温度传感器的测量范围是 -40~125℃,测量精度为 ±1.5℃。

读取温度的步骤是:选择ADCx_IN16输入通道,选择采样时间大于2.2µs,设置ADC控制寄存器2(ADC_CR2)的TSVREFE位,以唤醒关电模式下的温度传感器。

9) ADC的上电控制

通过设置ADC_CR1寄存器的ADON位可使ADC上电。当第一次设置ADON位时,它将ADC从断电状态下唤醒。通过调用库函数ADC_Cmd(ADCl,ENABLE)可以实现将ADON位置位。ADC上电延迟一段时间后,再次设置ADON位时开始进行转换。

通过清除ADON位可以停止转换,并将ADC置于断电模式。在这个模式中,ADC几乎不耗电(仅几个µA)。

10)中断电路

ADC的中断电路有3种情况可以产生中断,即转换结束、注入转换结束和模拟看门狗事件。

8.2ADC的通道选择与工作模式

1.ADC的通道选择

STM32处理器的每个ADC模块有16个模拟通道,可分成两组转换,即规则通道和注入通道。在任意多个通道上以任意顺序进行的一系列转换构成成组转换。例如,可以顺序完成通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15的顺序转换。

规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。规则组中转换的总数应写入ADC_SQR1寄存器的L[3:0]位中。

注入组由多达4个转换组成。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。注入组中的转换总数目必须写入ADC_JSQR寄存器的L[1:0]位中。

如果ADC_SQRx或ADC_JSQR寄存器在转换期间被更改,当前的转换被清除,一个新的转换将会启动。

温度传感器和ADCx_IN16通道相连接,内部参照电压VREFINT和ADCx_IN17通道相连接。ADC可以按注入或规则通道对这两个内部通道进行转换。

2.ADC工作模式

STM32的每个ADC模块可以通过内部的模拟多路开关切换到不同的输入通道并进行转换。

按照工作模式划分,ADC主要有4种转换模式,即单次转换模式、连续转换模式、扫描模式和间断模式。

1)单次转换

单次转换模式下,ADC只执行一次转换。该模式既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动,也可通过外部触发启动(适用于规则通道或注入通道),这时CONT位为0。

2)连续转换

在连续转换模式中,前面ADC转换一结束马上就启动另一次转换。此模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动。

对于以上两种转换方式,一旦被选通道转换完成,转换结果就被储存在16位的ADC_DR寄存器中,EOC(转换结束)标志被设置,如果设置了EOCIE位,则产生中断。

ADC转换时序如图8.2所示。ADC在开始精确转换前需要一个稳定时间tSTAB。在开始ADC转换和14个时钟周期后,EOC标志被设置,A/D结果存于16位ADC数据寄存器。

图8.2ADC转换时序

3)扫描模式

扫描模式用来扫描一组模拟通道,可通过设置ADC_CR1寄存器的SCAN位来选择。一旦这个位被设置,ADC扫描就可启动。在每个组的每个通道上执行单次转换。在每个转换结束时,同一组的下一个通道被自动转换。如果设置了CONT位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。如果设置了DMA位,在每次EOC后,DMA控制器会将规则组通道的转换数据传输到SRAM中,而注入通道转换的数据总是存储在ADC_JDRx寄存器中。

4)间断模式管理

(1)触发注入。清除ADC_CR1寄存器的JAUTO位,并且设置SCAN位,即可使用触发注入功能。利用外部触发或通过设置ADC_CR2寄存器的ADON位,启动一组规则通道的转换。如果在规则通道转换期间产生一外部注入触发,当前转换被复位,则注入通道序列以单次扫描方式被转换。

(2)自动注入。如果设置了JAUTO位,在规则组通道之后,注入组通道被自动转换。这可以用来转换在ADC_SQRx和ADC_JSQR寄存器中设置的多至20个转换序列。在此模式下,必须禁止注入通道的外部触发。

8.3ADC的校准与数据对齐

1.校准

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

通过设置ADC_CR2寄存器的CAL位可启动校准。一旦校准结束,CAL位被硬件复位,即可开始正常转换。建议在上电时执行一次ADC校准。校准阶段结束后,校准码储存在ADC_DR中。

注意:建议在每次上电后执行校准。启动校准前,ADC必须处于关电状态(ADCON=0)超过至少两个ADC时钟周期。

2.数据对齐

ADC_CR2寄存器中的ALIGN位用于选择转换后数据存储的对齐方式。数据可以左对齐,也可以右对齐,如图8.3和图8.4所示。注入组通道转换的数据值已经减去了在ADC_JOFRx寄存器中定义的偏移量,因此结果可以是一个负值。SEXT位是扩展的符号值。对于规则组通道,不需要减去偏移值,因此只有12个位有效。图8.3数据右对齐图8.4数据左对齐 8.5ADC应用编程实例

8.5.1ADC的应用基础

在ADC硬件电路设计过程中,输入电压原则上不可超过ARM芯片的供电电压。如果输入电压过大,则要减小比例,如果过小,还需放大。另外模拟电路的噪声滤除、电源隔离也很重要。

1.模拟电源的隔离

在使用ADC进行外部模拟信号检测时,模拟输入引脚的信号电平在任何时候都不能大于VREF+,否则ADC输出的结果无效。对于VREF+和VREF-两个电压基准信号,在部分电路设计中,用户会将电源电压和地信号分别与这两个引脚连接在一起。这种方法虽然可满足一般测量要求,但引脚连接的外部阻抗会通过寄生电容将更多的数字干扰(噪声)通过数字电源(V3.3、GND)耦合到ADC内部的模拟电路上,从而产生测量误差。为了降低噪声和提高转换精度,在条件允许的情况下应将数字电源与模拟电源进行隔离,如图8.5所示。图8.5模拟电源信号与数字电源信号的隔离

2.模拟输入增加缓冲器

对于不同类型的ADC而言,其内部结构性能参数有较大的差别,尤其是内部的模拟开关、输入保护电路、寄生电容等都会影响ADC的转换精度。STM32处理器内部ADC的结构见图8.6(a)。为了减小模拟通道之间的影响,可增加缓冲器电路,见图8.6(b)。

图8.6ADC输入电路

3.与ADC模块自身相关的误差

通常情况下,精度误差以LSB为单位。电压的分辨率与参考电压有关。电压误差是按照LSB的倍数计算的。了解ADC模块自身带来的误差,对分析测量结果和数据处理很有帮助。

1)偏移误差

偏移误差的定义为从第一次实际的转换至第一次理想的转换之间的偏差。当ADC模块的数字输出从0变为1时,发生了第一次转换。理想情况下,当模拟输入信号介于0.5LSB至1.5LSB范围时,数字输出应该为1。即理想情况下,第一次转换应该发生在输入信号为0.5LSB时,此时的误差以偏移误差E0标注。例如:

对于12位的A/D器件,如果VREF+ = 3.3 V,理想情况下(1 LSB = 3300/4096 = 805.6 µV)输入402.8 µV(0.5 LSB = 0.5 × 805.6 µV)时,数字输出为1。然而实际上,这时ADC模块的读数可能仍然为0。如果在输入电压达到560 µV时,数字输出才能为1,则偏移误差为:实际的转换 - 理想的转换 = 550 µV - 402.8 µV = 147.2 µV,即E0 = (147.2 µV/805.6 µV)LSB=0.18LSB。当输入的模拟电压大于0.5 LSB时,产生第一次的转换,则偏移误差是正值0.18LSB。

2)增益误差

增益误差的定义为最后一次实际转换与最后一次理想转换之间的偏差,以EG标注。最后一次实际转换是从FFEh至FFFh的变换。理想情况下,当模拟输入电压等于VREF+ - 

0.5 LSB时产生从FFEh至FFFh的变换,因此对于VREF+=3.3 V的情况,最后一次理想转换应该在3.299 597 V。当ADC数字输出为FFFh时,VAIN < VREF+ - 0.5 LSB,则增益误差为负值。

如果VREF+ = 3.3 V并且VAIN = 3.298435 V时产生了从FFEh至FFFh的变换,则

3)微分线性误差

微分线性误差的定义为实际步长与理想步长之间的最大差别,以ED表示这里的“理想”不是表示理想的转换曲线,而是表示ADC的分辨率。

ED = 实际转换步长 - 1 LSB

理想情况下,当模拟输入电压改变1 LSB时,应该在数字输出上同时产生一次改变。如果数字输出上的改变需要输入电压大于1 LSB的改变,则ADC具有微分线性误差。因此,DLE对应于需要改变一个数字输出所需的最大电压增量。例如:

一个给定的数字输出应该对应一个模拟输入的范围。理想情况下,步长应为1 LSB。假定模拟输入电压在1.9998~2.0014 V时得到了相同的数字输出,则步长宽度是2.0014 V - 1.9998 V = 1.6 mV,此时ED是高端(2.0014 V)与低端(1.9998 V)的差减去1 LSB对应的电压。

如果VREF+ = 3.3 V,模拟输入1.9998 V(9B1h)可以产生的输出结果介于9B0h和9B2h之间;同样,模拟输入

2.0014 V(9B3h)可以产生的输出结果介于9B2h和9B4h之间。

这样对应9B2h的综合电压变化范围是9B3h - 9B1h,即对应电压变化范围是2.0014 V - 1.9998 V = 1.6 mV(1660 µV)。

这里假定高于2.0014 V的电压都不能得到9B2h的数字输出结果。当步长宽度小于1 LSB时,误差ED是负值。

4)积分线性误差

积分线性误差是所有实际转换点与终点连线之间的最大差别,以EL标注。终点连线可以理解为在A/D转换曲线上,第一个实际转换与最后一个实际转换之间的连线,是每一个转换与这条线之间的偏差。因此,终点连线对应于实际转换曲线,而与理想转换曲线无关。例如:

如果第一次转换(从0至1)发生在550 µV,而最后一次转换(从FFEh至FFFh)发生在3.298435 V(增益误差),则在转换曲线上,实际数字输出1h~FFFh的连线就是终点连线。

5)总未调整误差

总未调整误差(TUE)的定义为实际转换曲线和理想转换曲线之间的最大偏差。这个参数表示所有可能发生的误差,导致理想数字输出与实际数字输出之间的最大偏差。这是在对ADC的任何输入电压在理想数值与实际数值之间所记录到的最大偏差。

TUE不是E0、EG、ED、EL之和,偏移误差反映了数字结果在低电压端的误差,而增益误差反映了数字结果在高电压端的误差。8.5.2热电阻温度的测量应用

1.温度传感器

温度传感器,按其测量方式的不同可分为接触式和非接触式两种。

通常,接触式温度的测量相对比较简单可靠,具有较高的测量精度,但接触式测量需要与被测介质进行充分的热交换,两者之间需要一定的时间才能达到热平衡,所以会存在温度反应延迟现象。同时,受到耐高温材料的限制,接触式温度的测量不能应用于温度特别高的场合。同时,接触式的测量方式还会破坏原有的温度场,在一定程度上降低温度测量的精度。

非接触式仪表测量是通过热辐射原理来测量温度的,测温元件不需与被测介质接触,测温范围广,不受测量范围上限的限制,也不会破坏被测物体的温度场,反应速度一般也比较快;但非接触式测量方式容易受到物体的发射率、测量距离、烟尘和水汽等外界因素的影响,其测量误差较大。

1)热电偶测温

热电偶是工业上最常用的温度检测元件之一,具有以下优点。

(1)测量精度高。因热电偶直接与被测对象接触,不受中间介质的影响。

(2)测量范围广。常用的热电偶从 -50~+3000℃均可连续测量,某些特殊热电偶最低可测到 -300℃(如金铁镍铬),最高可达+2800℃(如钨-铼)。

(3)构造简单,使用方便。热电偶通常是由两种不同的金属丝组成的,而且不受大小和长度的限制,外有保护套管,使用起来很方便。

热电偶是将两种不同材料的导体A和B连接在一起构成的。但构造分“测量端”和“参考端”。精确的测量不仅要测试“测量端”,还要考虑“参考端”的影响。

2)热电阻测温

热电阻是中低温区最常用的一种测温传感器,它的主要特点是测量精度高,性能稳定。其中铂材料的热电阻是测量精确度中最高的,它不仅广泛应用于工业测温,而且被制成标准的基准仪器使用。

热电阻测温是基于金属导体的电阻值随温度的增加而增加这一特性来进行温度测量的。热电阻大都由纯金属材料制成,目前应用最多的是铂和铜材料等。

由于被测温度的变化是直接通过热电阻阻值的变化来测量的,因此,热电阻体的引出线等各种导线电阻的变化会给温度测量带来影响。为消除引线电阻的影响,一般可采用三线制或四线制平衡的方法解决。

3)半导体测温

半导体测温的原理是利用“二极管PN结”的反偏电阻随周围温度的变化而变化的原理制作(实现)的。常见的半导

体温度传感器有恒流式、恒压式和数字式等多种。

这类传感器测量精度较高,容易实现接口

温馨提示

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

评论

0/150

提交评论