• 沒有找到結果。

MCF52233的AD转换模块

在过程控制和仪器仪表中,多数情况下是由嵌入式计算机进行实时控制及实时数据处 理的。计算机所加工的信息是数字量,而被测控对象往往是一些连续变化的模拟量(如温 度、压力、速度或流量等)。模数(A/D,Analog / Digital)转换模块是计算机与外界连接 的纽带,是大部分嵌入式应用中必不可少的重要组成部分,该部分的性能直接影响到嵌入 式设备的总体性能。

本章首先简要阐述 A/D 转换的基础知识,接着给出 MCF52233 单片机内部 A/D 转换 模块的基本编程方法,并封装了 A/D 转换构件,可供实际开发参考使用。

6.1 AD转换的基本问题

A/D 转换模块(Analog To Digital Convert Module)即模/数转换模块,其功能是将电 压信号转换为相应的数字信号。实际应用中,这个电压信号可能由温度、湿度、压力等实 际物理量经过传感器和相应的变换电路转化而来。经过 A/D 转换后,MCU 就可以处理这 些物理量。进行 A/D 转换,应该了解以下一些基本问题:第一,采样精度是多少;第二,

采样速率有多快;第三,滤波问题;第四,物理量回归等。

1.采样精度

采样精度就是指数字量变化一个最小量时模拟信号的变化量,即我们通常所说的采样 位数。通常,MCU 的采样位数为 8 位,某些增强型的可达到 10 位,而专用的 A/D 采样 芯片则可达到 12 位、14 位、甚至 16 位。设采样位数为 N,则最小的能检测到的模拟量 变化值为 1/2N。例如以 MCF52233 为例,其采样精度最高为 12 位,参考电压为 3.3V,则 检测到的模拟量变化为 3.3/212=0.8mV。

2.采样速率

采样速率是指完成一次 A/D 采样所要花费的时间。在多数的 MCU 中要花费大于 15~20 个指令周期。因而此速率和所选器件的工作频率有很大关系。

3.滤波

为了使采样的数据更准确,必须对采样的数据进行筛选去掉误差较大的毛刺。通常我 们采用中值滤波和均值滤波来提高采样精度。所谓中值滤波,就是将 M 次连续采样值按 大小进行排序,取中间值作为滤波输出。而均值滤波,是把 N 次采样结果值相加,然后 再除以采样次数 N,得到的平均值就是滤波结果。若要得到更高的精度,可以通过建立其 他误差模型分析方式来实现。

第 6 章 MCF52233 的 AD 转换模块

134 4.物理量回归

在实际应用中,得到稳定的 A/D 采样值以后,还需要把 A/D 采样值与实际物理量对 应起来,这一步称为物理量回归。A/D 转换的目的是把模拟信号转化为数字信号,供计算 机进行处理,但必须知道 A/D 转换后的数值所代表的实际物理量的值,这样才有实际意 义。例如,利用 MCU 采集室内温度,A/D 转换后的数值是 126,实际它代表多少温度呢?

如果当前室内温度是 25.1℃,则 A/D 值 126 就代表实际温度 25.1℃。实现这种对应关系 有多种方法,本章将在 6.4 节的实际应用模型中对物理量回归概念做进一步说明。

6.2 MCF52233的AD转换结构与特性

MCF52233 的 A/D 转换(ADC)由 5 个主要功能模块组成,即输入多路复用器、采 样和保持单元、转换器单元、结果寄存器和控制单元。虽然 ADC 是 MCF52233 上的一个 独立模块,包含有两个独立的转换器 A 和 B,它们共享一个公共参考电压和数字控制模 块,但各自有独立的输入多路复用器、采样和保持单元以及转换逻辑。因此,ADC 模块 可以实现两路模拟量同时采样。

ADC 的转换过程可以由同步信号(SYNCn)或者向控制寄存器的开始位 STARTn 写 1 来启动。扫描顺序由通道列表寄存器 1/2(ADLST1/ADLST2)决定,这两个寄存器共有 8 个采样槽 SAMPLEn(0 <= n <= 7),可分别对应一路采样通道 ANn(0 <= n <= 7)。

ADC 有两种基本扫描模式:顺序扫描和并行扫描。在顺序扫描过程中,从采样槽 0 到 7 依次进行扫描;在并行扫描过程中,转换器 A 从采样槽 0 到 3 依次扫描,转换器 B 从采样槽 4 到 7 依次扫描。ADC 模块还提供了采样禁止寄存器 ADSDIS,用于禁止某些 采样槽。并行扫描可以是同步的或者是非同步的。同步扫描时,A 和 B 两个转换器的扫 描是同时进行的,同时产生转换结果对。它们共享开始、停止、同步、扫描结束中断使能 控制位。当转换器 A 和 B 中的任意一个遇到被禁止的采样槽时,两个转换器都会终止扫 描。非同步扫描时,两个转换器的并行扫描是独立的,相对于同步扫描,它们有各自的开 始、停止、同步、扫描结束中断使能控制位。当转换器 A 或 B 遇到被禁止的采样槽时,

就会终止自身的扫描,但不会影响另一个转换器的扫描。

ADC 可以配置为执行单次扫描和停止,触发时执行一次扫描,或重复的扫描采样槽 序列直到手动停止。在单次扫描中,触发器必须为每次扫描进行重新装备,装备可以在前 一个出发后,甚至在前一个扫描还在进行中随时进行。在扫描采样槽序列结束时会产生一 些可选的中断,包括表明一次扫描结束、采样结果超出范围或者满足了一些不同的过零条 件。

ADC 的输入模式分为单端输入模式和差分输入模式,由控制 1 寄存器(CTRL1)的 通道配置域 CHNCFG 决定。在单端输入模式下,设 VIN是某一路 ANn 单端输入模拟电压,

VREFH是 ADC 模块的正参考电压(3.3V),VREFL是 ADC 模块的负参考电压(0V),那么该 路 12 位 AD 转换结果是:((VIN-VREFL)/(VREFH-VREFL))*4095。所以,当单端输入电压为 3.3V 时,AD 转换有最大值 4095;而如果输入 0V,则有最小值 0。在差分模式下,8 路模拟量

135

输入分成 AN0-1、AN2-3、AN4-5 和 AN6-7 共 4 个差分对。序号为偶数的模拟量输入 ANn

(n = 0,2,4,6)作为差分信号的正端,序号为奇数的模拟量输入 ANn(n = 1,3,5,7)作为差 分信号负端。设 VIN1和 VIN2分别是差分对中的正端和负端模拟电压,那么相应差分模拟输 入的 12 位转换结果是:((VIN1- VIN2)/(VREFH-VREFL))*4095。所以,当差分信号正负端的压差为 3.3V 时,AD 转换有最大值 4095;当压差为-3.3V,则有最小值 0;而压差为 0 时,对应 的 AD 值是 2048。

以上计算得到的是扫描每个采样槽 SAMPLEn 的原始转换结果,该结果是一个无符号 数,由于 MCF52233 ADC 模块的转换精度为 12 位,所以它的范围是 0~4095,该结果要 经由 ADC 的加法器进行偏移量修正,即要减去对应偏移量寄存器 ADOFSn 中的偏移值,

得到一个有符号数,存入对应的结果寄存器 ADRSLTn 中。如果偏移量设为 0,那么修正 后的结果就是一个无符号数(正数,符号位为 0)。同时,原始转换结果要与上限和下限 寄存器中的值比较,结果寄存器中的值要进行过零检验。要注意的是,结果、偏移量、上 限和下限寄存器都是 16 位的,它们的后 3 位不能写,且读出总是 0, 因此,实际上 12 位的原始结果要先向右移 3 位,才能进行偏移量修正等操作。

MCF52233 ADC 的主要特性总结如下:

(1)12 位的转换精度。

(2)A/D 转换的时钟频率最高为 5MHz。

(3)采样速率高达每秒 1.66 百万次。

(4)一次一路 A/D 转换时间为 8.5 个 ADC 时钟周期(1.7µs),后续每路为 6 个 ADC 时钟周期(1.2µs)。

(5)在并行模式下,8 路 A/D 转换总时间只要 26.5 个 ADC 时钟周期(5.3µs)。

(6)有并行和顺序两种采样模式。

(7)内部的多路复用器可以选择 8 路输入中的 2 路。

(8)电源节省模式可以自动关闭/启动整个或部分 ADC 模块。

(9)没有被选择的输入口能够容纳电流的流动而不会影响到 ADC 性能,并且能够 在工业噪声环境中工作。

(10)在一次扫描结束后可以允许超限或过零中断。

(11)可以对采样进行修正,即将最初的 ADC 值减去预先编程设定的偏移量从而得 到最终的 ADC 转换结果。

(12)ADC 结果可以是有符号数或无符号数。

(13)这些输入引脚可以是单端输入、差分输入,或是两种输入方式兼有。

6.3 MCF52233的AD模块编程寄存器

MCF52233 单片机的 8 路 12 位 A/D 转换模块引脚为 AN7/PAN7~AN0/PAN0,每一个 引脚都可以实现模拟量(ANx)/数字量(PANx)的复用输入。

MCF52233 的 A/D 转换模块有 43 个寄存器,它们是:2 个控制寄存器(CTRL1~

CTRL2)、1 个过零控制寄存器(ADZCC)、2 个通道列表寄存器(ADLST1 和 ADLST2)、

第 6 章 MCF52233 的 AD 转换模块

136

1 个采样禁止寄存器(ADSDIS)、1 个状态寄存器(ADSTAT)、1 个限制状态寄存器

(ADLSTAT)、1 个过零状态寄存器(ADZCSTAT)、8 个结果寄存器(ADRSLTn)、8 个 下限寄存器(ADLLMTn)、8 个上限寄存器(ADHLMTn)、8 个偏移量寄存器(ADOFSn)、

1 个电源控制寄存器(POWER)、1 个电压参考寄存器(CAL)。通过对这些寄存器的编程,

就可以获取 A/D 转换数据。