嵌入式DA与AD接口的实验

更新时间:2024-06-23 19:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《嵌入式系统设计与实例开发》

(2011-2012学年第2学期)

实 验 报 告

实验四 D/A与A/D接口的试验

2.4 D/A接口和A/D接口试验

一、实验目的

1.学习D/A转换原理

2.掌握MAX504D/A转换芯片的使用方法

3.掌握不带有D/A/的CPU扩展D/A功能的主要方法。 4.熟悉ARM本身自带的八路十位A/D控制器及相应寄存器。 5.编程实现ARM系统的A/D功能。

6.掌握带有A/D的CPU编程实现A/D功能的主要方法。

二、实验内容

学习D/A接口原理,了解实现D/A系统对于系统的软件和硬件要求。阅MAX504芯片文档,掌握其使用方法,编程实现正弦波信号的输出,利用示波器实验输出。学习A/D接口原理,了解实现A/D系统对于系统的软件和硬件要求。阅读ARM芯片文档,掌握ARM的A/D相关寄存器的功能,熟悉ARM系统硬件的A/D相关接口。利用外部模拟信号编程实现ARM循环采集全部前4路通道,并且在超级终端上显示。

三、预备知识

1.用ARM SDT 2.5或ADS1.2集成开发环境,编写和调试程序的基本过程。 2.ARM应用程序的框架结构。

3.能够自己完成在LCD上显示指定参量。

4、用ARM SDT 2.5或ADS1.2集成开发环境,编写和调试程序的基本过程。 5、ARM应用程序的框架结构。

四、实验设备及工具

硬件:ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上、示波器。

软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。

五、实验原理及说明

D/A转换器

DA转换器的内部电路构成无太大差异,一般按输出是电流还是电压、能否作乘法运算等进行分类。大多数DA转换器由电阻阵列和n个电流开关(或电压开关)构成。按数字输入值切换开关,产生比例于输入的电流(或电压)。

1)电压输出型(如TLC5620)

电压输出型DA转换器虽有直接从电阻阵列输出电压的,但一般采用内置输出放大器以低阻抗输出。直接输出电压的器件仅用于高阻抗负载,由于无输出放大器部分的延迟,故常作为高速DA转换器使用。

2)电流输出型(如THS5661A)

电流输出型DA转换器很少直接利用电流输出,大多外接电流—电压转换电路得到电压输出,转换有两种方法:一是只在输出引脚上接负载电阻而进行电流—电压转换,二是外接运算放大器。用负载电阻进行电流—电压转换的方法,虽可在电流输出引脚上出现电压,但必须在规定的输出电压范围内使用,而且由于输出阻抗高,所以一般外接运算放大器使用。此外,大部分CMOS DA转换器当输出电压不为零时不能正确动作,所以必须外接运算放大器。当外接运算放大器进行电流电压转换时,则电路构成基本上与内置放大器的电压输出型相同,这时由于在DA转换器的电流建立时间上加入了运算放入器的延迟,使响应变慢。此外,这种电路中运算放大器因输出引脚的内部电容而容易起振,有时必须作相位补偿。

3)乘算型(如AD7533)

DA转换器中有使用恒定基准电压的,也有在基准电压输入上加交流信号的,后者由于能得到数字输入和基准电压输入相乘的结果而输出,因而称为乘算型DA转换器。乘算型DA转换器一般不仅可以进行乘法运算,而且可以作为使输入信号数字化地衰减的衰减器及对输入信号进行调制的调制器使用。

4)一位DA转换器

一位DA转换器与前述转换方式全然不同,它将数字值转换为脉冲宽度调制或频率调制的输出,然后用数字滤波器作平均化而得到一般的电压输出(又称位流方式),用于音频等场合。

2.DA转换器的主要技术指标:

1)分辩率(Resolution) 指最小模拟输出量(对应数字量仅最低位为‘1’)与最大量(对应数字量所有有效位为‘1’)之比。

2)建立时间(Setting Time) 是将一个数字量转换为稳定模拟信号所需的时间,也可以认为是转换时间。DA中常用建立时间来描述其速度,而不是AD中常用的转换速率。一般地,电流输出DA建立时间较短,电压输出DA则较长。

其他指标还有线性度(Linearity),转换精度,温度系数/漂移。 3.本开发板上使用的MAX504是10位D/A转换器,其特点如下:

1)由单个5V电源供电; 2)电压输出缓冲;

3)内部2.048V参考电压;

14)INL=?2LSB(MAX);

5)电压不随温度变化;

6)可变的输出范围:0V~VDD,VSS~VDD; 7)上电复位; 8)串行输出。

MAX504的管脚定义如表2-23所示。

表2-23 MAX504的管脚定义

PIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 名称 BIPOFF DIN CLR SCLK CS DOUT DGND AGND REFIN REFOUT VSS VOUT VDD RFB 双级性偏移/增益寄存器 串行数据输入 清零。异步使 DAC 寄存器所有位数设置为0 串行时钟输入 片选,低电平有效 菊花链串行数据输出 数字地 模拟地 参考输入 参考输出,2.048V,不使用时连接到VDD 负电源供电 DA输出DAC 正电源供电 反馈电阻 功能 4.MAX504在开发板中的连接

图2-14 Max504与ARM的连接

图2-14中,RFB连接VOUT、BIPOFF连接AGND,使得输出电压范围为0~2VREFIN,即0~4.069V。时钟和输入、输出信号分别与同步串口的时钟、发送和接收端相连。可以通过

WriteSDIO(data)函数(Uhal.h)向MAX504发送数据。发送数据时要注意,MAX504可接受12位的数据,但低两位不起作用。WriteSDIO(data)函数一次只能发送8位的数据,所以发送数据时应先将数据左移两位,然后先发送高八位,再发送低八位数据。CLR和CS分别由MAX504_CLEAR()和MAX504_ENABLE()、MAX504_DISABLE()函数(Max504.c)控制。

A/D转换器

A/D转换器是模拟信号源和CPU之间联系的接口,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。在工业控制和数据采集及许多其他领域中,A/D转换是不可缺少的。

A/D转换器有以下类型:逐位比较型、积分型、计数型、并行比较型、电压-频率型,主要应根据使用场合的具体要求,按照转换速度、精度、价格、功能以及接口条件等因素来决定选择何种类型。常用的有以下两种:

1)双积分型的A/D转换器

双积分式也称二重积分式,其实质是测量和比较两个积分的时间,一个是对模拟输入电压积分的时间T0,此时间往往是固定的;另一个是以充电后的电压为初值,对参考电源Vref反向积分,积分电容被放电至零所需的时间T1。模拟输入电压Vi与参考电压VRef之比,等于上述两个时间之比。由于VRef 、T0固定,而放电时间T1可以测出,因而可计算出模拟输入电压的大小(VRef与Vi符号相反)。

由于T0、VRef为已知的固定常数,因此反向积分时间T1与输入模拟电压Vi在T0时间内的平均值成正比。输入电压Vi愈高,VA愈大,T1就愈长。在T1开始时刻,控制逻辑同时打开计数器的控制门开始计数,直到积分器恢复到零电平时,计数停止。则计数器所计出的数字即正比于输入电压Vi在T0时间内的平均值,于是完成了一次A/D转换。

由于双积分型A/D转换是测量输入电压Vi在T。时间内的平均值,所以对常态干扰(串模干扰)有很强的抑制作用,尤其对正负波形对称的干扰信号,抑制效果更好。

双积分型的A/D转换器电路简单,抗干扰能力强,精度高,这是突出的优点。但转换速度比较慢,常用的A/D转换芯片的转换时间为毫秒级。例如12位的积分型A/D芯片ADCETl2BC,其转换时间为lms。因此适用于模拟信号变化缓慢,采样速率要求较低,而对精度要求较高,或现场干扰较严重的场合。例如在数字电压表中常被采用。

2)逐次逼近型的A/D转换器

逐次逼近型(也称逐位比较式)的A/D转换器,应用比积分型更为广泛,其原理框图如图2-17所示,主要由逐次逼近寄存器SAR、D/A转换器、比较器以及时序和控制逻辑等部分组成。它的实质是逐次把设定的SAR寄存器中的数字量经D/A转换后得到电压Vc与待转换模拟电压V。进行比较。比较时,先从SAR的最高位开始,逐次确定各位的数码应是“1”还是“0”,其工作过程如下:

转换前,先将SAR寄存器各位清零。转换开始时,控制逻辑电路先设定SAR寄存器的最高位为“1”,其余位为“0”,此试探值经D/A转换成电压Vc,然后将Vc与模拟输入电压Vx比较。如果Vx≥Vc,说明SAR最高位的“1”应予保留;如果Vx

越能准确逼近模拟量,但转换所需的时间也越长。

逐次逼近式的A/D转换器的主要特点是:

转换速度较快,在1—100/μs以内,分辨率可以达18位,特别适用于工业控制系统。转换时间固定,不随输入信号的变化而变化。抗干扰能力相对积分型的差。例如,对模拟输入信号采样过程中,若在采样时刻有一个干扰脉冲迭加在模拟信号上,则采样时,包括干扰信号在内,都被采样和转换为数字量,这就会造成较大的误差,所以有必要采取适当的滤波

措施。

图2-17 逐次逼近式A/D转换原理图

2.A/D转换的重要指标

1)分辨率(Resolution):

分辨率反映A/D转换器对输入微小变化响应的能力,通常用数字输出最低位(LSB)所对应的模拟输入的电平值表示。n位A/D能反应1/2n满量程的模拟输入电平。由于分辨率直接与转换器的位数有关,所以一般也可简单地用数字量的位数来表示分辨率,即n位二进制数,最低位所具有的权值,就是它的分辨率。

值得注意的是,分辨率与精度是两个不同的概念,不要把两者相混淆。即使分辨率很高,也可能由于温度漂移、线性度等原因,而使其精度不够高。

2)精度(Accuracy)

精度有绝对精度(Absolute Accuracy)和相对精度(Relative Accuracy)两种表示方法。 ① 绝对误差

在一个转换器中,对应于一个数字量的实际模拟输入电压和理想的模拟输入电压之差并非是一个常数。我们把它们之间的差的最大值,定义为“绝对误差”。通常以数字量的最小有效位(LSB)的分数值来表示绝对误差,例如:?1LSB等。绝对误差包括量化误差和其它所有误差。

② 相对误差

是指整个转换范围内,任一数字量所对应的模拟输入量的实际值与理论值之差,用模拟电压满量程的百分比表示。

例如,满量程为10V,10位A/D芯片,若其绝对精度为?1/2LSB,则其最小有效位的量

化单位:9.77mV,其绝对精度为=4.88mV,其相对精度为0.048%。

3)转换时间(Conversion Time)

转换时间是指完成一次A/D转换所需的时间,即由发出启动转换命令信号到转换结束信号开始有效的时间间隔。

转换时间的倒数称为转换速率。例如AD570的转换时间为25us,其转换速率为40KHz。 4)电源灵敏度(power supply sensitivity)

电源灵敏度是指A/D转换芯片的供电电源的电压发生变化时,产生的转换误差。一般用电源电压变化1%时相当的模拟量变化的百分数来表示。

5)量程

量程是指所能转换的模拟输入电压范围,分单极性、双极性两种类型。 例如,单极性 量程为0~+5V,0~+10V,0~+20V; 双极性 量程为-5~+5V,-10~+10V。 6)输出逻辑电平

多数A/D转换器的输出逻辑电平与TTL电平兼容。在考虑数字量输出与微处理的数据总线接口时,应注意是否要三态逻辑输出,是否要对数据进行锁存等。

7)工作温度范围

由于温度会对比较器、运算放大器、电阻网络等产生影响,故只在一定的温度范围内才能保证额定精度指标。一般A/D转换器的工作温度范围为(0~700C),军用品的工作温度范围为(-55~+1250C)。 3.ARM自带的十位A/D转换器

S3C440BX芯片自带一个8路10位A/D转换器,该转换器可以通过软件设置为Sleep摸式,可以节电减少功率损失,最大转换率为500K,非线性度为正负1位,其转换时间可以通过下式计算:如果系统时钟为66MHz,比例值为9,则为

66MHz/2 (9+1)/16 (完成转换至少需要16个时钟周期)=205.25KHz(相当于4.85us) ARM芯片与A/D功能有关的引脚为以下几个,其中AIN[7:0]为8路模拟采集通道,AREFT为参考正电压,AREFB为参考负电压,AVCOM为模拟共电压。

表2-24 S3C44B0自带A/D功能有关的引脚 信号 ADC

AIN[7:0] AREFT AREFB AVCOM AI ADC 输入[7:0] AI ADC Vref AI ADC Vref AI ADC Vref I/O 描述

在电路中,对上述引脚需要按照图2-18所示加上电容。

图2-18 外部引脚配置参考

与AD相关的寄存器主要是以下三个:

1)ADCPSR:采样比率寄存器。

通过设置该寄存器,可以设置采样率,最后得到的除数因子=2(寄存器值+1)。 参考:ADCPSR=20。

2)ADCCON:采样控制寄存器。

该寄存器的0位是转换使能位,写1表示转换开始。1位是读操作使能转换,写1表示转换在读操作时开始。2、3、4位是通道号。5位为睡眠模式设定,6位为转换标志位(只读)。

通过该寄存器设置A/D转换开始可以参见下例: rADCCON=0x11(通道4开始转换)。

3)ADCDAT:转换结果数据寄存器。该寄存器的十位表示转换后的结果,全为1时为满量程2.5伏。

4.AD转换器在开发平台的接法如下:

即前四路通过分压电位器接到2.5v电源上,如下图2-19所示。

图2-19 AD转换器在扩展版的接法

六、实验步骤

D/A接口实验

1.新建工程,将“Exp4 D/A实验”中的文件添加到工程。 2.定义宏(Max504.c)

#define MAX504_CS #define MAX504_CLR #define SIOLSB

0x2 0x1

//EXIO1 //EXIO0

0x40

do{CLREXIOBIT(MAX504_CS);}while(0)

#define MAX504_ENABLE()

#define MAX504_DISABLE() do{SETEXIOBIT(MAX504_CS);}while(0) #define MAX504_CLEAR() do{CLREXIOBIT(MAX504_CLR);Delay(1); SETEXIOBIT(MAX504_CLR);}while(0) #define Max504_FULL

4.096f

3.编写D/A输出函数(Max504.c),如图2-15所示。

将数据左移两位关闭MAX504MAX504_DISABLE()将DAC寄存器设为0MAX504_CLEAR()发送低8位SendSIOData()延时开启MAX504MAX504_ENABLE()发送高8位SendSIOData()

图2-15 D/A输出函数流程图

4.编写主函数(main.c),输出方波信号。主函数流程图如图2-16所示。

开发板初始化ARMTargetInit()是Flag==0?否输出0V输出满量程Flag=1Flag=0延时

图2-16 主函数流程图

D/A接口实验main.c程序:

#include\#include\#include\#include

#pragma import(__use_no_semihosting_swi) // ensure

no functions that use semihosting

int main(void) {

int flag=0;

ARMTargetInit(); //开发版初始化 while(1) {

if(flag==0) {

Max504_SetDA(0);//输出0v flag=1; } else {

Max504_SetDA(1023);//输出满量程 flag=0; }

Delay(10); } return 0; }

A/D接口实验

1.新建工程,将“Exp5 ARM A/D接口实验”种的文件添加到工程。 2.编写获取转换结果函数(main.c),程序流程图如图2-20所示。

启动指定通道延时否转换结束?是返回转换结果

图2-20 获取转换结果函数程序流程图

3.主函数(main.c)程序流程图如图2-21所示。

开发版初始化ARMTargetInit()初始化AD转换器采样前4路显示结果延时

图2-21 主函数程序流程图

D/A接口实验main.c程序:

#include \#include\#include \#include\

#pragma import(__use_no_semihosting_swi)

#define ADCCON_FLAG 0x40 #define ADCCON_SLEEP 0x20

#define ADCCON_ADIN0 (0x0<<2) #define ADCCON_ADIN1 (0x1<<2) #define ADCCON_ADIN2 (0x2<<2) #define ADCCON_ADIN3 (0x3<<2) #define ADCCON_ADIN4 (0x4<<2) #define ADCCON_ADIN5 (0x5<<2) #define ADCCON_ADIN6 (0x6<<2) #define ADCCON_ADIN7 (0x7<<2)

#define ADCCON_READ_START 0x2 #define ADCCON_ENABLE_START 0x1

void init_ADdevice() {//初始化

rADCPSR=20;

rADCCON=ADCCON_SLEEP; }

int GetADresult(int channel) {

rADCCON=(channel<<2)|ADCCON_ENABLE_START; Delay(10);

while(!(rADCCON&ADCCON_FLAG));//转换结束 return rADCDAT;//返回采样值 }

Main.c:

int main(void) {

int i; float d;

ARMTargetInit(); //开发版初始化 init_ADdevice(); Uart_Printf(\

while(1) {

//for(i=0; i<=3; i++) //{//采样0~3路A/D值

d=GetADresult(4)*2.5/1023; // 数据 采集,处理 Uart_Printf(\ Delay(3000); //}

Uart_Printf(\ }

return 0; }

七、实验心得:

实验中,我了解了A/D和D/A借口的原理,掌握了ARM的

相关寄存器的功能以及ARM系统硬件的相关借口。这个实验关键点

在于这个开发板中的直流电机的运用。实践检验真理,让理论更加容易的让人理解。

本文来源:https://www.bwwdw.com/article/iiv3.html

Top