TLV5614数模转换器的原理及其与单片机的接口应用

分享到:
点击量: 215403
摘 要:本文介绍了TI公司生产的4通道12位D/A转换器TLV5614的功能特点和工作原理,结合开发实例,给出了TLV5614 与MCS-51系列单片机的应用接口电路和软件程序,*后对结果进行了分析并指出了其应用前景。

关键词:TLV5614;D/A转换器;SPI接口

概述

  TLV5614是TI公司生产的四路12位电压输出型数模转换器(DAC),具有灵活的四线串行接口,可以与TMS320、SPI、QSPI和Microwire串行口实现无缝联接。TLV5614的编程控制由16位串行字组成,即2位DAC地址、2个独立的DAC控制位和12位的DAC输入值。器件采用双电源供电:一组为串行接口使用的数字电源,即DVDD和DGND;另一组为输出缓冲器使用的模拟电源,即AVDD和AGND。两组电源相互独立且可为2.7V至5.5V之间的任何值。双电源应用的好处是DAC使用5V电源工作,而DAC的数字部分使用2.7V~5.5V电源,所以可以和多种接口连接工作。

  DAC内部电阻串的输出电压由一个2倍增益的满幅度输出缓冲器缓冲,这种缓冲器的特点是以AB类输出来增加稳定性和减少建立时间。满幅度输出和掉电模式使其能够理想地应用于单电源、电池供电的场合。DAC的建立时间是可编程的,这样允许设计者优化其速度与功耗。建立时间由16位串行输入控制字的SPD控制位来选择。

  REFINAB和REFINCD端集成了一个高阻抗的缓冲器,减少了对驱动该端基准源的低输出阻抗的要求。REFINAB和REFINCD允许DAC A、B与DAC C、D有不同的基准电压。

TLV5614的功能方框图和引脚图见图1及图2,表1为其引脚说明。

图1 内部功能方框图(略)
图2 引脚排列(略)
表1 引脚说明(略)

工作原理

  TLV5614是一种基于电阻串结构的12位DAC,器件由串行接口、速度和掉电控制逻辑、基准输入缓冲器、电阻串以及满幅度输出缓冲器组成。其输出电压由下式给出:

  满度值取决于外部基准。其中REF是基准电压,CODE是在0x000至0xFFF范围内的输入数字值。上电复位时,*初把内部锁存器复位到预定状态(所有位均为0)。

  TLV5614的16位数据字由两部分组成:控制位(D15…D12)和新DAC值(D11…D0)。如表2所示:

表2(略) 表3(略)

其中,SPD:速度控制位 1 ->快速方式; 0 ->慢速方式。
PWR:功率控制位 1 ->掉电方式;
0 ->正常工作。
在掉电方式下,TLV5614中所有放大器都被禁止。TLV5614的DAC(A、B、C、D)通道选择由输入字A1和A0控制。A1,A0与所选择的DAC通道的关系如表3所示:
在传送数据时,首先,通过把片选端设置为低电平使器件工作。然后,FS的下降沿开始,在SCLK的下降沿使数据一位接一位的移入内部寄存器(从高位开始)。在传送了16位数据后或者FS的上升沿到达后,移位寄存器的内容送至DAC锁存器,它把电压输出刷新到新的电平值。其工作时序如图3。

应用

  TLV5614具有灵活的串行接口方式,所以它与C51系列单片机的接口很方便,如图4所示。

  在实际的应用中,我们取参考电压REF为2.5V,DAC的供电为5V,由于TLV5614是满幅度输出,所以由式1可得,它的DAC输出电压范围将在0~5V之间。很显然,它的输出电压分辨率为1.22mV。在实际应用中,我们需要输出的**电压值可能在0~12V之间,或是更高,这时,只需对DAC输出电压进行直流放大,放大倍数就是我们所需*高电压与5V的比值。相比TLV5614的1.22mV分辨率,对12V电压,*终输出电压的分辨率为2.93mV,它也能够满足大多数应用场合对电压变化精度的要求。

  TLV5614的程序控制也很方便,只要按照它的工作时序进行操作,就能实现它的功能。由于我们使玫氖茿T89C55单片机,因此,其控制字只能分成两个字节来写入。其中高位字节的高四位是通道选择和控制位;高位字节的低四位和低位字节一起组成12位的DA转换代码。这样分两次依次移入TLV5614的命令寄存器,然后,FS的上升沿到达,相应的DAC通道输出新的电压值。

以下是部分程序清单:
//头文件定义
sbit LDAC5614=p1^0;
sbit DIN5614=p1^1;
sbit SCLK5614=p1^2;
sbit FS5614=p1^3;
//DA转换程序,com1和com2为控制字的高位字节和低位字节
void dac(unsigned char com1,unsigned char com2)
{ unsigned char data, i, j;
//DA输出保持即时刷新状态
LDAC5614=0;
//FS的下降沿开始逐位移入数据
FS5614=1;
FS5614=0;
data=com1;
for(i=8;i>0;i--)
{
DIN5614=(bit)(data&0x80);
data<<=1;
SCLK5614=1;SCLK5614=1;SCLK5614=1;SCLK5614=1;SCLK5614=1;
SCLK5614=0;
}
data=com2;
for(i=8;i>0;i--)
{
DIN5614=(bit)(data&0x80);
data<<=1;
SCLK5614=1;SCLK5614=1;SCLK5614=1;SCLK5614=1;SCLK5614=1;
SCLK5614=0;
}
//控制字输入完毕,时钟停止,FS的上升沿到达后刷新输出电压
DIN5614=1;
SCLK5614=1;
FS5614=1;
}

这是TLV5614的控制程序。实际应用中,按照一定的控制逻辑,比如递增、查询正弦表等等,循环调用这个控制程序,就可以得到想要的梯形波、数字正弦波,这样就可以根据TLV5614产生的控制波形来实现一些控制过程,比如扫频或波形输出。

图3 时序图(略)
图4 TLV5614与C51系列单片机接口(略)


  此程序经过实际的编译运行测试,DA输出结果**。在实际应用时应当注意,TLV5614*好采用双电源供电,DAC部分采用模拟+5V供电,逻辑控制部分采用数字+5V供电,而且数字地和模拟地要分开。这样数字部分和模拟部分的相互干扰才会得到很大的改善。这些措施已经在产品的开发中得到很好的应用。