12位单通道串行D/A转换器X79000
X79000是Xicor公司推出的12位单通道串行D/A转换器。其建立时间仅为6s。该芯片内置参考电压,且内带56字节的EEPROM,可用于保存用户数据。它可与MCU通过SPI进行接口,最高速度可达5MHz。一个MCU系统最多可以同时连接8个X79000器件,从而可以实现8路相互独立的高精度D/A输出。另外,X79000还可通过IO引脚直接增加或减少输出值,且每次的变化量都可以编程控制。X79000具有上电自动恢复断电前设定值的功能,它可在上电过程保持输出高阻,待上电完成后自动从非易失存储器中读出用户的设定值并输出。MCU通过检查其提供的上电完成信号来判断上电是否完成。虽然X79000是12位D/A转换器,但如果设置合理,该器件可以达到16位D/A的性能。
1 引脚排列及说明
X79000的引脚排列如图1所示,各引脚的功能如下:
CS:SPI接口片选,低电平有效。javascript:window.open(this.src);" style="cursor:pointer;"/>
SCK:SPI时钟。
SI:SPI串行输入。
SO:SPI串行数据输出引脚。带高阻输出。
RDY:芯片上电完成标志输出引脚,低电平有效。该脚为漏极开路输出。
CLR:该脚可用于清除DAC内部寄存器,它内部有下拉电阻。当把该引脚接到高电平时,电路会输出最低的电压。
A2,A1,A0:多个X79000级联时,用于地址选择。内部有下拉电阻。
OE:缓冲输出使能引脚。高电平有效,低电平时输出为高阻。
UP:当工作在直接IO模式时,用于增大输出值。内部带有尖脉冲滤波器。
DOWN:当工作在直接IO模式时,用于减小输出值。内部带有尖脉冲滤波器。
VCC:正电源,典型值为5V。
VSS:地。
Vout:直接输出引脚,不受OE引脚的控制。
Vbuf:带缓冲的输出引脚。当OE为高电平时,该引脚有输出,当OE为低电平时,该引脚有输出,当OE为低电平时,该脚无输出。
VFB:有缓冲输出时的反馈脚。
Vbuf:内部参考电压输出引脚。
VH:当配置寄存器的高3位VH设为0时,此引脚可作为满量程时的输入电压,最高为3.065V。当配置寄存器的高3位VH设为非0时,此引脚输出电压的最大值可以作为其它器件的参考电压。
VL:功能与VH类似,只是对应于最小值。
DNC:空脚。
图2
2 工作原理和使用说明
X79000可通过以下两种工作方式来改变输出电压:
第一种方式是利用SPI总线,通过写命令修改输出值,这种方式适用于开环系统中的简单DC电压调节;
第二种方式是使用UP/DOWN引脚直接修改输出值。这种方式适用于闭环系统,可使输出一步一步地接近设定值,然后禁止UP/DOWN引脚的功能,从而保持设定值不变。
X79000输出电压的范围可由配置寄存器(地址为3CH)来确定,具体设置如表1所列。
表1 输出电压范围的设置
VH2 | VH1 | VH0 | Value | VL2 | VL1 | VL0 | Value |
0 | 0 | 0 | 外部 | 0 | 0 | 0 | 外部 |
0 | 0 | 1 | 605mV | 0 | 0 | 1 | 151mV |
0 | 1 | 0 | 1.21V | 0 | 1 | 0 | 605mV |
0 | 1 | 1 | 1.815V | 0 | 1 | 1 | 1.21V |
1 | 0 | 0 | 2.42V | 1 | 0 | 0 | 1.815V |
1 | 0 | 1 | 3.025V | 1 | 0 | 1 | 2.42V |
表中的VH可用于确定输出电压的最大值,其范围从0.605V到3.025V。VL则用于确定输出电压的最小值,其范围从0.151V~2.42V。注意:VH一定要比VL大,否则芯片可能会工作不正常。
不管选择什么值,输出电压的线性度都能得到保证。例如,要输出1.9V~2.4V的电压,可以选择VH=2.42V,VL=1.815V,这样,当电压输出寄存器为0时,电压输出为1.815V,而当输出寄存器为0x3FF(满量程)时,电压输出为2.42V。输出电压的最小变化单位为(2.42-1.815)/4096=0.147mV。如果用一个标准的DAC器件来实现,则该DAC器件必须达到14位的分辨率。如果使用外部电压作为输出的最大或最小值,那么,设计时必须把VH或VL设成0。
X79000带有1.21V的参考电压输出引脚Vref,该引脚的输出电压可作为其他器件的参考电压。
X79000的控制寄存器如图2所示,图中,DAC11-DAC0是输出寄存器,通过SPI接口可以修改该寄存器,从而改变电压输出。VH0~VH2和VH0~VH2分别用于确定输出电压的最大值和最小值。要注意的是Count8和Count10,它们的使用方法如表2所列。
表2 Count8和Count10的功能说明
Count8 | Count10 | 功 能 说 明 |
0 | 0 | 使用12位模式 |
0 | 1 | 使用输出寄存器的高10位 |
1 | 0 | 使用输出寄存器的高8位 |
1 | 1 | 保留 |
当Count8=1,Count10=0时,表示使用输出寄存器的高8位。即在利用UP或DOWN引脚改变输出寄存器的值时,其低4位保持不变,每次增加或减少0x10。寄存器的操作只能通过SPI接口来完成。
3 应用举例
X79000与89C51的接口电路如图3所示,图中,使用89C51来模拟SPI接口。其具体操作过程如下:javascript:window.open(this.src);" style="cursor:pointer;"/>
(1)89C51上电后延时1秒,以等待整个系统复位稳定。
(2)写X79000的配置寄存器3CH为0xB0,即配置输出最高电压为3.025V,最低电压为1.815V。
(3)写X79000的输出寄存器38H和29H,设计时要千万注意字节顺序。
4 结束语
将本电路用在细纱机控制系统中以控制变频器已运行了将近一年的时间,未出现过精度发生变化的情况,实践证明:该电路输出稳定、性能可靠、精度较高。