论文导读:用来设置DAC1220的操作模式、分辨率模式、建立模式和数据模式。所以利用8051F350可对外部设备提供电压的特性。 本文讨论了20位高精度DAC1220、C8051F350的原理以及二者之间的接口应用。
关键词:高精度,模数、数模转换,DAC1220,8051F350
一、概述
DAC1220是在一定温度范围内,能够提供20位单调性能的数模转换器。在原理上利用 技术实现其线性特性。分辨率可在满量程范围内达到20位时,在l5ms内达到0.003℅。输出电压范围2倍于外部参考电压,同时片上校准电路可动态的减少失调和增益误差。DAC1220可用于工业控制或高精度检测、测量系统,同时也是便携式低功耗仪器、分离系统的理想选择。实际中经常与单片机、DSP等结合使用。高速、流水线结构的8051F350中兼容的CIP-51内核处理速度可达50MIPS,具有带模拟多路器的真正24位单端/差分ADC,高精度可编程的24.55MHz内部振荡器使它可以很好的和DAC1220进行接口通讯 [1] 。
二﹑DAC1200数模转换原理
DAC1220是精密、高动态范围、可自校准的20位 数模转换器,采用同步串行接口,在单一转换器系统中只需2根信号线控制,在多转换器系统中需信号作为片选信号。如图1所示。其中,SDIO为串行数据输入/输出脚,SCLK为串行数据传输时钟输人,/CS为片选输人脚。DAC1220具有二阶 调制器,一阶开关电容滤波器,二阶连续时间滤波器以及微控制器可控的
指令、命令和校准寄存器,串行接口和时钟
产生电路。这一结构保证了系统具有低噪声和良好的电源抑制比。D/A转换器的调制器
频率是由系统的时钟决定的。通过校准寄存
器控制片上的校准系统,可以校准内部失调
和增益误差。
图1 DAC1220的结构原理图
DAC1220有5个内部寄存器INSR、CMR、OCR、FCR和DIR。片上的各种寄存器都是通过串行接口向它们传送数据进行读写。免费论文网。其中:
1.指令寄存器INSR
每一次串行通讯都是由写INSR开始的,指令寄存器INSR利用8位代码,可以控制串行接口下一操作是读或写;控制数据长度以及选择正确的寄存器读/写。它决定了下一通讯的类型,更新INSR寄存器,就开始新的通讯周期。
2.命令寄存器CMR
命令寄存器CMR为16位2字节代码,用来设置DAC1220的操作模式、分辨率模式、建立模式和数据模式。
3.数据输入寄存器DIR
DIR为24位寄存器,保存输人的数字值。在20位转换模式下DIR23 —DIR4中的数字量被利用作为A/D转换量。其转换
格式如表1:
数据格式 |
20位模式 |
二进制补码 |
 |
二进制 |
 |
表1 DAC1220中A/D转换格式
三﹑8051F350模数转换原理
C8051F350的ADC0子系统集成了两个可编程模拟多路选择器(AMUX)、一个输入缓冲器﹑一个8位的偏移DAC﹑一个差分可编程增益放大器(PGA)、一个内部参考2.5V参考电压和两个可编程采样频率可达1kHZ滤波器(见图2)。此外ADC0子系统在进行A/D转换时还应配置相关的寄存器的值 [2] 。其中:
1.ADC0MUX寄存器 [3] ADC0MUX用来控制模拟输入端口的选择以及输入方式。ADC0可以工作在单端 方式或差分方式,可以被配置为用于测量前 端8个模拟输入引脚、片内温度传感器或AGND。
2.ADC0CLK寄存器
ADC0CLK寄存器用于建立MDCLK,由公式MDCLK=SYSCLK/(ADC0CLK+1) 计算决定,而通过MDCLK的值进而决定输入信号的采样频率(MDCLK/128)。
3.ADC0CF寄存器
ADC0CF寄存器主要功能是用来设置对滤波器和A/D转换参考电压的选择。
4.REF0CN寄存器
由于DAC1220需要一个很稳定的外部参考电压,所以利用8051F350可对外部设备提供电压的特性,通过设置REF0CN对DAC1220提供其所需要的参考电压(2.5V)。
5.ADC0MD寄存器
通过对ADC0MD寄存器中的AD0EN位置‘1’,ADC0子系统被使能,决定A/D的转换模式。要注意的是在对相关寄存器进行配置转换系统模式时应将AD0SM位设置为IDLE模式。
6.ADC0STA寄存器
在ADC0STA寄存器中AD0BUSY位和AD0INT位是表示A/D转换忙和A/D转换完成标志位。免费论文网。
图2 8051F350芯片ADC0转换系统原理图
四、硬件电路设计
硬件电路通过芯片AS1117将输入的5V电压转换成8051F350所需要的3.3V模拟和数字电压对其供电。通过接入2.5MHZ外部晶振,为DAC1220提供串行时钟和数据
转换频率。需要说明的是,连续时间滤波器
利用外部电容C1、C2、V REF 和V OUT 管脚来凋整建立时间,对于不同模式C1、C2的值是不一样的,20位转换模式时,C1=10nF, C2=3.3nF。此外DAC1220中D/A转换参考电压由8051F350中VREF+、VREF-提供,具体电路如图3。
图3 硬件电路图
五、系统软件设计
系统的软件由模数转换程序、LCD屏幕显示和数模转换程序组成。模数转换程序是通过C8051F350片内ADC将外部采集模拟量转换成数字量;LCD屏幕显示程序是LCD动态显示模数转换后得到的数字量;而数模转换程序是通过DAC1220将由单片机通过SPI口发送的数字量转换成模拟电压量。免费论文网。其中程序流程如图4。 图4 程序流程图
DAC1220利用灵活的串行接口与微
控制器或数字信号处理器接口。用来在
多个外设利用串口时,选中DAC1220。
SCLK作为DAC1220串行数据输人/出的
位时钟,信号,串行数据在SCLK的下
降沿移入或移出DAC1220的寄存器。
SDIO是串行数据位的输人/出三态端
口,在不发送和接收数据时,此端口处
于高阻态。如图5所示,为DAC1220操
作时序图。
图5 DAC1220的读/写时序
限于篇幅,本文着重介绍模数转换函数、DAC1220寄存器操作函数和模拟SPI总线发送一字节数据的函数。除了以上函数之外,还有初始化函数、75184通讯函数、LCD动态显示函数等。
①C8051F350模数转换代码
void C8051F350_ADC0(void)
{
ADC0MD | =0x01;
//全内部校准
while(!AD0CALC);
//等待校准完成
ADC0MD& = ~0x07;
//使ADC工作在空闲状态
ADC0MD| = 0x02;
//使ADC工作在单次转换下
AD0INT= 0;
//ADC转换中断标志清零
AD0BUSY= 1;
//ADC开始转换
if(AD0INT)
{//等待ADC转换完成
delayns(10);
Store=ADC0L+ADC0M<<8
+ADCOH<<16;
//存储转换得到数字量
}
}
②DAC1220相关寄存器操作函数
void DAC1220_SFR(void)
{
unsignedchar byte1,byte2;
byte1=0x28;
byte2=0xa0;
SCLK=0;
//SCLK置低
sendSPIByte(0x24);
//配置INSR寄存器
SCLK=0;
//SCLK置低
delayns(200);
//t 19 > 13t xin
sendSPIByte(byte1);
sendSPIByte(byte2);
//写CMR寄存器
SCLK=0;
//SCLK置低
}
③模拟SPI总线发送一字节数据的函数
void sendSPIByte(unsigned char data)
{
unsignedchar idata n =8;
while(n--)
{//循环8次
delayns(50);
SCLK=1;
//SCLK置高
if((data&0x80)==0x80)
//写数
{SDIO=1; }
//SDIO置高
else
{SDIO=0; }
//SDIO置低
delayns(50);
data= data<<1;
//data左移一位
SCLK=0;
//SCLK置低
}
}
六、结束语
本文讨论了20位高精度DAC1220、C8051F350的原理以及二者之间的接口应用,根据程序设计的思路,也可以用DSP、ARM来实现对DAC1220的控制。高精度的ADC、DAC可应用于高精度检测、测量系统、便携仪器等各领域。
七、参考文献
1. www.ti.com,20-Bit,Low DIGITAL-TO-ANALOG CONVERTER,2000
2. www.datasheet.com, C8051F350/1/2/3,2005
3. 孙育才,MCS-51系列单片微型计算机及其应用,东南大学出版社,2002
4. 马忠梅,籍顺心,张凯,马岩,单片机的C语言应用程序设计,北京航天航空大学出版社,1998
20Bits DAC1220 and Its Interfacial ApplicationWith 8051F350
|