D/A与A/D转换器你要知道的都在这里了

发布时间:2016-8-25 10:22    发布者:designapp
关键词: 转换器
一、D/A转换器的基本原理及分类
T型电阻网络D/A转换器 :



二:输出电压与数字量的对应关系



三:D/A转换器的主要性能指标
1、分辨率
分辨率是指输入数字量的最低有效位(LSB)发生变化时,所对应的输出模拟量(电压或电流)的变化量。它反映了输出模拟量的最小变化值。
分辨率与输入数字量的位数有确定的关系,可以表示成FS / 2^n 。FS表示满量程输入值,n为二进制位数。对于5V的满量程,采用8位的DAC时,分辨率为5V/256=19.5mV;当采用12位的DAC时,分辨率则为5V/4096=1.22mV。显然,位数越多分辨率就越高。
2、线性度
线性度(也称非线性误差)是实际转换特性曲线与理想直线特性之间的最大偏差。常以相对于满量程的百分数表示。如±1%是指实际输出值与理论值之差在满刻度的±1%以内
3、绝对精度和相对精度
绝对精度(简称精度)是指在整个刻度范围内,任一输入数码所对应的模拟量实际输出值与理论值之间的最大误差。绝对精度是由DAC的增益误差(当输入数码为全1时,实际输出值与理想输出值之差)、零点误差(数码输入为全0时,DAC的非零输出值)、非线性误差和噪声等引起的。绝对精度(即最大误差)应小于1个LSB。
相对精度与绝对精度表示同一含义,用最大误差相对于满刻度的百分比表示。
4、建立时间
建立时间是指输入的数字量发生满刻度变化时,输出模拟信号达到满刻度值的±1/2LSB所需的时间。是描述D/A转换速率的一个动态指标。
电流输出型DAC的建立时间短。电压输出型DAC的建立时间主要决定于运算放大器的响应时间。根据建立时间的长短,可以将DAC分成超高速(


pin description:



2:DAC0832三种工作方式
1、单缓冲工作方式
此方式适用于只有一路模拟量输出,或有几路模拟量输出但并不要求同步的系统。
即:默认 CS = XFER = 0, ILE = 1; WR单独控制。 缓冲仅由WR单独控制。
1.1 单极性模拟输出



1.2:双极性模拟输出电压



双极性输出时的分辨率比单极性输出时降低1/2,这是由于对双极性输出而言,最高位作为符号位,只有7位数值位
2、双缓冲工作方式
多路D/A转换输出,如果要求同步进行,就应该采用双缓冲器同步方式 。
即:默认 CS = 0 ILE = 1 ; WR 和 XFER都单独控制, 缓冲由WR和XFER两个控制。



3、直通工作方式
当DAC0832芯片的片选信号CS、写信号WR、及传送控制信号XFER 的引脚全部接地,允许输入锁存信号ILE引脚接+5V时,DAC0832芯片就处于直通工作方式,数字量一旦输入,就直接进入DAC寄存器,进行D/A转换。
即: CS = WR = XFER = 0, ILE = 1;
A/D转换器
一、逐次逼近式ADC的转换原理



二、双积分式ADC的转换原理



三、A/D转换器的主要技术指标
1、分辨率
ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度FS的1/ 2^n 。一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V×1/ 2^12 =2.4mV。
2、量化误差
ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。实际上,要准确表示模拟量,ADC的位数需很大甚至无穷大。一个分辨率有限的ADC的阶梯状转换特性曲线与具有无限分辨率的ADC转换特性曲线(直线)之间的最大偏差即是量化误差。



3、偏移误差
偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。假定ADC没有非线性误差,则其转换特性曲线各阶梯中点的连线必定是直线,这条直线与横轴相交点所对应的输入电压值就是偏移误差。
4、满刻度误差
满刻度误差又称为增益误差。ADC的满刻度误差是指满刻度输出数码所对应的实际输入电压与理想输入电压之差。
5、线性度
线性度有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。
6、绝对精度
在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。对于ADC而言,可以在每一个阶梯的水平中点进行测量,它包括了所有的误差。
7、转换速率
ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。
四:AD080X demo




PIN5 如果采用中断方式通知CPU,则接外部中断, 否则 5可悬空,延时直接读取即可。
启动时序图如下:
code demo:
[cpp] view plain copy print?
void Launch()
{
CS = 0;
WR = 1; WR = 0; WR = 1;
/*Waiting for INTR goto 0*/
}



读取时序图:
code demo:
[cpp] view plain copy print?
void ReadAD()
{
/* INTR had goto 0*/
CS = 0;
RD = 1; RD = 0; /*delay*/ RD = 1;
/* READ */
}

本文地址:https://www.eechina.com/thread-172506-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关在线工具

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表