第七章 模数与数模转换_第1页
第七章 模数与数模转换_第2页
第七章 模数与数模转换_第3页
第七章 模数与数模转换_第4页
第七章 模数与数模转换_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

第七章模数与数模转换第1页,共47页,2023年,2月20日,星期三概述ARM微处理器构成一个数据采集系统或过程控制系统时,采集的外部信号与被控对象的参数通常是一些模拟量,必须把这些模拟量转换为数字量,微处理器才能接收处理;微处理器的处理结果是数字量,必须将数字信号再转换为模拟信号,才能控制被控对象。将模拟量转换为数字量的过程称为模数(A/D)转换,完成这一转换的器件称为模数转换器(简称ADC);将数字量转换为模拟量的过程称为数模(D/A)转换,完成这一转换的器件称为数模转换器(简称DAC)。第2页,共47页,2023年,2月20日,星期三嵌入式实时控制系统组成框图

第3页,共47页,2023年,2月20日,星期三一、D/A(数/模)转换介绍最常见的T形电阻网络结构图1.1D/A转换的原理D/A转换的基本原理:数字量是由1和0数值位组合起来表示的。如果要将数字量转换成模拟量,必须先把数字量中每一位数值按其权的大小转换成相应的模拟分量,然后再将各模拟分量相加,其总和就是与数字量相应的模拟量。理想的D/A转换器的转换特性:输出模拟量与数字量成正比。第4页,共47页,2023年,2月20日,星期三1.2D/A转换器的主要参数1.分辨率:表明DAC对模拟值的分辨能力,它是最低有效位所对应的模拟值,可确定由D/A产生的最小模拟值的变化,通常由二进制数的位数表示。2.转换精度:转换精度是指D/A转换器实际输出的模拟电压与理论输出模拟电压间的最大误差。3.转换时间:转换时间是指D/A转换器在输入数字信号开始转换,到输出的模 拟电压达到稳定值所需的时间。第5页,共47页,2023年,2月20日,星期三1.3常用D/A转换器名称输出类型极性通信接口位数通道数DAC0832电流双极性并行81DAC7512电压单极性串行(SPI)121DAC8574电压单极性串行(I2C)164TLC5620电压单极性串行84常用的DAC器件第6页,共47页,2023年,2月20日,星期三二、D/A转换器应用DAC7512的主要特性:微功耗,5V时的工作电流消耗为135uA(DAC7512);在掉电模式时,如果采用5V电源供电,其电流消耗为135nA,而采用3V供电时,其电流消耗仅为50nA;供电电压范围为+2.7V~+5.5V;上电输出复位后输出为0V;具有三种关断工作模式可供选择;带有低功耗施密特输入串行接口;内置满幅输出的缓冲放大器;具有SYNC中断保护机制。DAC7512是TI公司生产的具有内置缓冲放大器的低功耗单片12位数模转换器。其片内高精度的输出放大器可获得满幅(供电电源电压与地电压间)任意输出。第7页,共47页,2023年,2月20日,星期三1.1DAC7512引脚及功能DAC7512引脚定义如下:VOUT:芯片模拟输出电压;

GND:器件内所有电路的地参考点;

VDD:供电电源,直流+2.7V~+5.5V;

Din:串行数据输入;SCLK:串行时钟输入;SYNC:输入控制信号;(低电平有效)第8页,共47页,2023年,2月20日,星期三1.2DAC7512的内部结构第9页,共47页,2023年,2月20日,星期三1.3工作模式与操作时序DAC7512具有四种工作:bit13bit12工作模式00正常模式01掉电模式输出端1kΩ到地10输出端100kΩ到地11高阻DAC7512的写操作时序第10页,共47页,2023年,2月20日,星期三1.4实验内容实验1内容:给DAC7512一个确切的数值,利用表笔检测Vout引脚的电平。实验2内容:控制DAC7512产生锯齿波,利用示波器观察波形变化。第11页,共47页,2023年,2月20日,星期三1.5电路分析第12页,共47页,2023年,2月20日,星期三驱动程序设计--初始化函数#define nSYNC(1<<25) /*P1.25口为DAC7512的片选*//***************************************************************************名称:DAC7512_Init()*功能:初始化SPI接口,设置为主机。**************************************************************************/voidDAC7512_Init(void){ PINSEL2=PINSEL2&0xFFFFFFF7; //设置nSYNC(P1.25)为GPIO口

PINSEL0=(PINSEL0&0xffff00ff)|0x00005500;//设置P0.4,P0.5,P0.6 //为SPI0引脚

IO1DIR=nSYNC;

S0PCCR=0x52; //设置SPI时钟分频

S0PCR=0x30; //设置SPI接口模式,

//MSTR=1,主模式,LSBF=0,MSB在前

CPOL=0; //设置SPI0的数据传输时序与DAC7512一致

CPHA=1; }第13页,共47页,2023年,2月20日,星期三/**************************************************************************名称:DAC7512_MSendData(uint8data1,uint8data2)*功能:向SPI总线发送数据,并接收从机发回的数据。*入口参数:data1,data2待发送的数据*出口参数:无**************************************************************************/voidDAC7512_MSendData(uint8data1,uint8data2){IO1CLR=nSYNC; //DAC7512片选选中S0PDR=data1;

//发送第1个字节数据给DAC7512寄存器的高8位while(0==(S0PSR&0x80)); //等待SPIF置位,即等待数据发送完毕

S0PDR=data2;

//发送第2个字节数据给DAC7512寄存器的低8位while(0==(S0PSR&0x80)); //等待SPIF置位,即等待数据发送完毕IO1SET=nSYNC; //DAC7512片选线置1,结束数据传输}驱动程序设计--数据通信函数第14页,共47页,2023年,2月20日,星期三实验1

/***************************************************************************名称:main()*功能:主函数,控制DAC7512电平输出*************************************************************************/intmain(void){ DAC7512_Init(); //初始化 //bit11~bit0为数据位,控制Vout输出电压最大值 DAC7512_MSendData(0x0F,0xFF); }

单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速运行, 然后用表笔在DA输出端测量DAC7512输出的电压信号。第15页,共47页,2023年,2月20日,星期三实验2/***************************************************************************名称:main()*功能:主函数,控制DAC7512电平输出产生锯齿波*************************************************************************/intmain(void){ uint8 i;

uint32DAC7512_TAB[]={0x00,0x00,0x03,0x33,0x06,0x66,0x09,0x99,0x0c,0xcc,0x0f,0xff}; DAC7512_Init(); //初始化SPI接口与DAC7512输出口 while(1) { for(i=0;i<12;i=i+2) {

DAC7512_MSendData(DAC7512_TAB[i],DAC7512_TAB[i+1]);

DelayMS(50); //软件延时 } }} 单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速运行,根据数组中定义的内容,DAC7512输出锯齿波。在DA输出端口用示波器可以观察到输出的波形。第16页,共47页,2023年,2月20日,星期三三、A/D(模/数)转换介绍将现场模拟信号转变为数字信号并送入微处理器进行处理的系统称之为数据采集系统。数据采集系统由模拟信号采集、A/D转换、数字信号处理三大部分组成。1.1模拟信号的采集与处理模拟信号采集示意图第17页,共47页,2023年,2月20日,星期三1.2传感器能够将非电信号转换成电模拟信号的敏感元件叫传感器。按被测参量来分,传感器分为:被测类别被测参量热工量温度、热量、比热、压力、压差、真空度、流量、流速、风速机械量位移(线位移、角位移),尺寸、形状,力、力矩、应力,重量、质量,转速、线速度,震动幅度、频率、加速度、噪声物性和成分量气体化学成分、液体化学成分,酸碱度(PH值)、咸度、浓度、粘度,密度、比重状态量颜色、透明度、磨损量、材料内部裂纹或缺陷、气体泄漏、表面质量第18页,共47页,2023年,2月20日,星期三序号工作原理序号工作原理1234567电阻式电感式电容式阻抗式(电涡流式)磁电式热电式压电式891011121314光电式(包括红外式、光导纤维式)谐振式霍尔式(磁式)超声式同位素式电化学式微波式按被传感器的工作原理来分,传感器分为:传感器第19页,共47页,2023年,2月20日,星期三1.3信号调理电路传感器将被测信息转换成电信号输出,一般称为第一次变换。第一次变换后的电信号具有以下特点:

1、输出电信号一般较微弱,如µV~mV级或nA~mA级。2、输出电信号的信噪比较小,甚至有用信号淹没在噪声之中。3、传感器的输入/输出特性通常存在一定的非线性,并易受环境温度及周围电、磁干扰的影响。4、传感器的输出特性与电源的稳定性等有关,通常要求恒压或恒流 供电。所以,要对传感器信号进行信号调理,如:放大、滤波、线性化处理等。第20页,共47页,2023年,2月20日,星期三1.4多路模拟开关多路模拟开关是A/D、D/A转换系统中的重要器件。要求主要有以下三点:

1、多路开关接通时,要求其静态导通电阻无穷小。

2、多路开关断开时,要求开路静态电阻无穷大。

3、开关的切换速度越快越好(延时通常小于1µs)。常用的CMOS多路模拟开关有以下几种:

1、四1对1双向开关40662、三2对1单向开关40533、双4对1单向开关40524、单8对1双向开关40515、单16对1双向开关4067第21页,共47页,2023年,2月20日,星期三ADC4052包含2组4对1单向开关:X组和Y组。ADC4052引脚图 ADC4052双4对1结构图1.5多路模拟开关4052介绍第22页,共47页,2023年,2月20日,星期三ADC4052中输入引脚与输出引脚的具体对应关系:

AB输入引脚输出引脚X组Y组X组(INH=0)Y组(INH=1)00X0Y0XY01X1Y1XY10X2Y2XY11X3Y3XY多路模拟开关4052介绍第23页,共47页,2023年,2月20日,星期三1.6A/D(模/数)转换的原理--采样保持A/D转换又称模/数转换,就是把模拟信号数字化。A/D转换器首先要对模拟信号进行采样,然后量化成数字信号输出,A/D转换中要完成采样保持和量化编码两个内容。在连续变化的模拟量上按一定的规律取出其中某一些瞬时值(样点)来

代表这个连续的模拟量。这个过程就是采样。香农采样定律:如果信号是带限的,并且采样频率高于信号最高频率的一倍,那么,原来的连续信号可以从采样样本中完全重建出来第24页,共47页,2023年,2月20日,星期三量化编码: 以一定的量化单位,把数值上连续的模拟量而时间上离散的模拟信号通过量化装置转变为数值上离散的阶跃量的过程。常见的量化编码技术有:

1、计数式转换;

2、双积分式转换;

3、逐次逼近式转换;

4、并联式转换。1.7A/D(模/数)转换的原理--量化编码第25页,共47页,2023年,2月20日,星期三1.8A/D(模/数)转换的原理--计数式转换第26页,共47页,2023年,2月20日,星期三具体工作过程如下:①首先启动信号S由高电平变为低电平,使计数器的输出清0,当启动信号恢复高电平时,计数器准备计数。②转换器的输出电压为0时,运算放大器在同相端的输入电压作用下,使计数信号C=l。③计数器开始计数,在CLK时钟脉冲的驱动下,8位计数器输出的数字量不断增加,使得D/A转换器输出电压Vo不断上升。④运算放大器的输出变为低电平时,计数器停止计数,这时候的数字输出量D7~D0就是与模拟输入电压对应的数字量。A/D(模/数)转换的原理--计数式转换第27页,共47页,2023年,2月20日,星期三主要部件包括积分器、比较器、计数器和标准电压源。用标准的高频时钟脉冲测定反向积分所用的时间,就可以得到输入模拟电压所对应的数字量,实现了A/D转换。双积分式转换的优点是精度高、干扰小,但是速度较慢。1.9A/D(模/数)转换的原理--积分式转换第28页,共47页,2023年,2月20日,星期三逐次逼近式A/D转换是使用最广泛的一种A/D转换方法,A/D转换集成电路芯片通常都采用这种方式工作。2.0A/D(模/数)转换的原理--逐步逼近式转换第29页,共47页,2023年,2月20日,星期三2.1A/D转换器的主要参数分辨率 分辨率是指A/D转换器输出数字量的最低位变化一个数码时,对应输入模拟量的变化量。相对精度 相对精度是指A/D转换器实际输出数字量与理论输出数字量之间的最大差值。转换速度 转换速度是指A/D转换器完成一次转换所需要的时间。第30页,共47页,2023年,2月20日,星期三四、A/D转换器应用概述LPC2220系列自带采用逐次逼近式算法的A/D转换器,提供8个A/D转换输入脚:AIN0~AIN7。A/D转换器的特性:1、10位逐次逼近式A/D转换器2、测量范围0~3.3V3、10位转换的时间≥2.44us4、一路或多路输入的Burst转换模式5、可选择由输入引脚的跳变或定时器的匹配信号触发转换6、具有掉电模式第31页,共47页,2023年,2月20日,星期三1.1A/D转换器的内部结构第32页,共47页,2023年,2月20日,星期三1.2A/D转换器寄存器描述A/D转换器包括两个寄存器:

A/D控制寄存器(ADCR);

A/D数据寄存器(ADDR)。名称描述复位值访问ADCRA/D控制寄存器。在工作之前,必须写入ADCR控制寄存器来选择工作模式0x00000001R/WADDRA/D数据寄存器。该寄存器包含ADC的DONE标志位和10位转换结果。

NAR/W第33页,共47页,2023年,2月20日,星期三A/D控制寄存器ADCRADCR名称描述复位值7:0SEL从输入引脚AIN7-AIN0中选择采样/转换输入脚。015:8CLKDIV将VIB时钟分频得到A/D转换时钟,该时钟必须小于等于4.5MHz016BURST该位为0,转换由软件控制,需要11个是中方能完成。如果该位为1,A/D转换器以CLKS字段选择的速率重复进行转换,并从SEL为1的引脚由低位到高位开始扫描。重复转换通过清零该位而终止。019:17CLKS该字段用来选择BURST模式下每次转换使用的时钟数和所得ADDR转换结果的LS为可确保精度的位的数目。000:=11个时钟(10位);001::=10个时钟(9位);111:=4个时钟(3位)X21PDN1:正常模式;0:掉电模式23:22TEST[1:0]用于器件测试,00:正常;01:数字测试模式;10:DAC测试模式;11:一次转换测试模式X26:24START当BURST为0时,这些为控制A/D转换是否启动和何时启动。000:不启动;001:立即启动:010:P0.6/EINT0/MAT0.2/CAP0.2引脚出现ADCRbit27位选择的边沿时启动;011:P0.22/MAT0.0/CAP0.0启动;100:MAT0.1;101;MAT0.3;110:MAT1.0:111:MAT1.1027EDGE该位只有在START字段为010~111时有效,0:在选择MAT/CAP信号的下降沿有效:1:在选择MAT/CAP信号的上升沿有效第34页,共47页,2023年,2月20日,星期三A/D数据寄存器ADDRADDR名称描述复位值31DONEA/D转换结束的标志,当A/D转换结束时该位置位。该位在ADDR被读出或ADCR被写入时清0。如果ADCR在转换过程中被写入,该位置位,并启动一次新的转换030OVERUNBURST模式下,如果在转换产生LS位的结果前一个或多个转换结果被丢失或覆盖,该位置位。该位通过读ADDR寄存器清0029:27这些位读出为0。它们用于未来CHN字段的扩展,使之兼容包含更多的通道的转换器026:24CHN这些位包含的是LS位的转换通道X23:16这些位读出为0。它们允许连续A/D值的累加,而不需要使用与门屏蔽处理,使得至少有256个值不会溢出到CHN字段15:6V/VDDA当DONE为1时,该字段包含一个二进制数,用来代表SEL字段选中的Ain脚的电压。该字段根据VDDA脚上的电压对Ain脚的电压进行划分。该字段为0表明Ain脚的电压小于、等于或接近VSSA

;该字段为0x3FF表明Ain脚的电压接近于、等于或大于VDDA

X5:0这些位读出为0。用于位的扩展和功能更为强大的A/D转换器0第35页,共47页,2023年,2月20日,星期三第36页,共47页,2023年,2月20日,星期三1.3A/D转换器的操作先将测量通道引脚设置为AINx功能,然后设置ADC的工作模式,ADC转换通道,转换时钟,并启动ADC转换。ADC的时钟频率不能大于4.5MHz。ADC转换时钟频率Fadclk的计算公式为:

Fadclk=Fpclk/(CLKDIV+1)。AIN0初始化示例PINSEL1=0x00400000; //设置P0.27为AIN0功能ADCR= (1<<0) //SEL=1,选择通道0((Fpclk/1000000-1)<<8) //CLKDIV=Fpclk/1000000-1,即转换时钟为1MHz(0<<16) //BURST=0,软件控制转换操作(0<<17) //CLKS=0,使用11个时钟周期转换(1<<21) //PDN=1,正常工作模式(非掉电模式)(0<<22) //TEST[1:0]=00,正常工作模式(非测试模式)(1<<24) //START=1,直接启动ADC转换(0<<27); //EDGA=0 第37页,共47页,2023年,2月20日,星期三1.4实验内容实验内容1:手动调节电位器的大小,利用A/D转换器对电位器输出的电压进行测量,A/D测量后的结果通过数码管显示。实验内容2:对于外部的电压信号(范围为0~5V)进行测量,控制数据电位器,使数字电位器x9015输出引脚上的电平最大输出为3.3V,测量后的结果通过数码管显示。第38页,共47页,2023年,2月20日,星期三1.5电路原理分析电路图中有2路采样通道:ADC1和ADC2。第39页,共47页,2023年,2月20日,星期三/*****************************************************************************名称:AD_Init(void)*功能:AD初始化****************************************************************************/void AD_Init(void){uint32data,i; /*进行ADC模块设置,其中x<<n表示第n位设置为x(若x超过一位,则向高位顺延)*/ ADCR=(1<<0)

| //SEL=1,选择通道0((Fpclk/1000000-1)<<8)|

//转换时钟为1MHz(0<<16)|

//BURST=0,软件控制转换操作(0<<17)|

//CLKS=0,使用11clock转换(1<<21)|

//PDN=1,正常工作模式(非掉电转换模式)(0<<22)|

//TEST1:0=00,正常工作模式(非测试模式)(1<<24)|

//START=1,直接启动ADC转换(0<<27);

//EDGE=0(CAP/MAT引脚下降沿触发ADC转换) for(i=0;i<5000;i++);

//小段延时 data=ADDR;

//读取ADC结果,并清除DONE标志位}1.6

驱动程序--初始化程序第40页,共47页,2023年,2月20日,星期三/*****************************************************************************名称:AD_Read(uint8channels)*功能:数据读取AD内部数据寄存器并转换*入口参数: channels 通道。*出口参数: Data 转换结果****************************************************************************/uint32 AD_Read(uint8channels){ uint32Data;

//切换通道并进行第一次转换 ADCR=(ADCR&0xFFFFFF00)|channels|(1<<24); while((ADDR&0x80000000)==0); //等待转换结束 ADCR=ADCR|(1<<24); //再次启运转换 while((ADDR&0x80000000)==0); Data=ADDR;

//读取ADC结果 Data=(Data>>6)&0x3FF; //进行数据换算 Data=Data*3300; Data=Data/1024; return(Data);}驱动程序--AD数据读取程序第41页,共47页,2023年,2月20日,星期三//-----------引脚定义----------------#define x9015_INC (1<<29) //P2.29#define x9015_UpDown (1<<28) //P2.28#define x9015_CS (1<<18) //P1.18/*********************************************************************名称:x9015_Init()*功能:初始化x9015的引脚配置********************************************************************/voidx9015_Init(void){ //设置引脚连接x9015_CS(P1.18)为GPIO PINSEL2=PINSEL2&0xfffffff7; IO2DIR=IO2DIR|x9015_INC|x9015_UpDown; IO1DIR=IO1DIR|x9015_CS;}驱动程序--X9015的控制第42页,共47页,2023年,2月20日,星期三/*****************************************************************************名称:x9015_Step(uint8UpDown,uint8level)*功能:改变x9015数字电位器的内部档数*入口参数:UpDown 增加档数或减少档数,level

变化的档数值****************************************************************************/voidx9015_Step(uint8UpDown,uint8level){ uint8i; IO1CLR=x9015_CS; if(UpDown==1)

IO2SET=x9015_UpDown; //内部挡数增加 else IO2CLR=x9015_UpDown; //内部挡数减少 for(i=0;i<10;i++); //小段延时 for(;level>0;level--) { IO2SET=x9015_INC; for(i=0;i<200;i++); IO2CLR=x9015_INC; for(i=0;i<200;i++); } IO1SET=x9015_CS;}驱动程序--X9015的控制第43页,共47页,2023年,2月20日,星期三实验1参考#define AIN4 0x10 //AIN4引脚输入通道#define AIN5 0x20 //AIN5引脚输入通道/***************************************************************************名称:main()*功能:主函数,读取AD采样结果利用数码管显示*************************************************************************/intmain(void){ uint32data; NumbTube_Init(); //数码管初始化

AD_Init(); while(1) { data=AD_Read(AIN4); //AD转换(P2.30作AIN4引脚输入)

NumbTube_Display(data,4); //数码管显示

} return(0);} 单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速

温馨提示

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

评论

0/150

提交评论