一、D/A转换器的基本原理及分类 T型网络D/A转换器 : 二:输出与数字量的对应关系 三:D/A转换器的主要性能指标 1、分辨率 分辨率是指输入数字量的最低有效位(LSB)发作变更时,所对应的输出模仿量(电压或)的变更量。它反映了输出模仿量的最小变更值。 分辨率与输入数字量的位数有肯定的关系,能够表示成FS / 2^n 。FS表示满量程输入值,n为二进制位数。关于5V的满量程,采用8位的时,分辨率为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 deion: 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的转换原理 三、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 */ } 本文欢送珍藏转发,感激您关注EEChina公众号! |