DAC,英文全称是digital-to-analog converter,即数字模拟转换器,简称数模转换。与ADC刚好相反,DAC是把数字量转变成模拟量的器件。
我们处在一个数字时代,而我们的视觉、听觉、感觉、嗅觉等所感知的却是一个模拟世界。如何将数字世界与模拟世界联系在一起,正是模拟数字转换器(ADC)和数字模拟转换器(DAC)大显身手之处。任何一个信号链系统,都需要传感器来探测来自模拟世界的电压、电流、温度、压力等信号。这些传感器探测到的信号量被送到放大器中进行放大,然后通过ADC把模拟信号转化为数字信号,经过处理器、DSP或FPGA信号处理后,再经由DAC还原为模拟信号。所以ADC和DAC在信号链的框架中起着桥梁的作用,即模拟世界与数字世界的一个接口。
DAC的原理稍微有点复杂,下面我列出一段话,如果无法理解,可以暂时跳过,不理解原理不一定会影响我们对DAC的简单应用:
DAC主要由数字寄存器、模拟电子开关、位权网络、求和运算放大器和基准电压源(或恒流源)组成。用存于数字寄存器的数字量的各位数码,分别控制对应位的模拟电子开关,使数码为1 的位在位权网络上产生与其位权成正比的电流值,再由运算放大器对各电流值求和,并转换成电压值。
我讲点个人的理解,不准确但是有助于建立一个思维模型:上述的模拟电子开关都分别接着一个分压的器件,比如说电阻。模拟开关的个数取决于DAC的精度。那么N个电子开关就把基准电压分为N份(并不是平均分哦),而这些开关根据输入的二进制每一位数据对应开启或者关闭,把分压的器件上的电压引入输出电路中。
但是如果无论如何你都不明白的话,请保持参考电压的值符合器件要求,并且尽可能的稳定。
DAC有几个必须要懂得的参数:
1.转换精度 :
在DAC中一般用分辨率和转换误差来描述转换精度。
1>.分辨率
一般用 DAC 的位数来衡量分辨率的高低,因为位数越多,其输出电压V的取值个数(2^n个)就越多,也就越能反映出输出电压的细微变化,分辨能力就越高。
此外,也可以用DAC能分辨出来的最小输出电压1 LSB与最大输出电压FSR之比定义分辨,即:
1.jpg (5.37 KB)
2010-3-21 20:31
该值越小,分辨率越高。
2>.转换误差
转换误差是指实际输出的模拟电压与理想值之间的最大偏差。常用这个最大偏差与FSR之比的百分数或 若干个LSB表示。实际上它是三种误差的综合指标。
2.转换速度
转换速度一般由建立时间决定。从输入由全0突变为全1时开始,到输出电压稳定在FSR±½ LSB范围(或以FSR±x%FSR指明范围)内为止,这段时间称为建立时间,它是DAC的最大响应时间,所以用它衡量转换速度的快慢。
CEPARK AVR开发板上集成了TLC5615数字模拟转换器,10位精度,两倍参考电压输出,支持SPI协议,只需要外接三个IO口便可以控制。以下是原理图:
2.jpg (25.49 KB)
2010-3-21 20:31
如图所见:
DIN:串行数据输入口,在这个引脚输入我们想要输出的模拟电压的数字量;
SCLK:时钟信号输入口,在这个引脚产生数据传输时钟,每一次下降沿写入数据
CS:片选端,低电平有效。
DOUT:串行数据输出口,用于级联,本例不使用,所以不做论述。
时序图:
3.jpg (45.42 KB)
2010-3-21 20:31
首先说这个时序图并不是非常的清晰,我一开始看的时候也看不太明白,于是找来下面这样一段话:
“由时序图可以看出,当片选CS为低电平时,输入数据DIN由时钟SCLK同步输入或输出,而且最高有效位在前,低有效位在后。输入时SCLK的上升沿把串行输入数据DIN移入内部的16位移位寄存器,SCLK的下降沿输出串行数据DOUT,片选CS的上升沿把数据传送至DAC寄存器。
当片选CS为高电平时,串行输入数据部能由时钟同步送入移位寄存器;输出数据DOUT保持最近的数值不变而不进入高阻态。由此想要串行输入数据和输出数据必须满足两个条件:第一时钟SCLK的负跳变;第二片CS为低电平。这里,为了使时钟的内部馈通最小,当片选CS为高电平时,输入时钟SCLK应当为低电平。” |