-1-
20位 D/A转换器 DAC1220与 C8051F350接口应用
朱果,刘皓春
武汉理工大学信息学院,湖北武汉(430070)
摘 要:本文简明扼要分析了 DAC1220数模转换以及 C8051F350片内模数转换工作原理,
讨论了模数转换、数模转换、接口控制等方面的具体操作方法,并结合具体应用给出
DAC1220与 C8051F350的接口方法和应用程序。实验结果表明,该系统适用于对精度、稳
定度要求较高的工业检测、系统测量、便携仪器等领域。
关键词: 高精度,模数,数模转换,DAC1220,C8051F350
中图分类号:TN911
1. 引言
DAC1220是在一定温度范围内,能够提供 20位单调性能的数模转换器[1]。在原理上利
用Σ −∆技术实现其线性特性。分辨率可在满量程范围内达到 20 位时,在 l5ms 内达到
℅。输出电压范围 2 倍于外部参考电压,同时片上校准电路可动态的减少失调和增益
误差。DAC1220 可用于工业控制或高精度检测、测量系统,同时也是便携式低功耗仪器、
分离系统的理想选择。实际中经常与单片机、DSP 等结合使用。高速、流水线结构的
C8051F350[2]中兼容的 CIP-51内核处理速度可达 50MIPS,具有带模拟多路器的真正 24位单
端/差分 ADC,高精度可编程的 内部振荡器使它可以很好的和 DAC1220进行接口
通讯[3]。
2. DAC1200数模转换原理
DAC1220是精密、高动态范围、可自校准的 20位Σ −∆数模转换器,采用同步串行接
口,在单一转换器系统中只需 2根信号线控制,在多转换器系统中需信号作为片选信号。如
图 1所示。其中,SDIO为串行数据输入/输出脚,SCLK为串行数据传输时钟输人,/CS为
片选输人脚。DAC1220 具有二阶Σ −∆调制器,一阶开关电容滤波器,二阶连续时间滤波
器以及微控制器可控的指令、命令和校准寄存器,串行接口和时钟产生电路。这一结构保证
了系统具有低噪声和良好的电源抑制比。D/A转换器的调制器频率是由系统的时钟决定的。
通过校准寄存器控制片上的校准系统,可以校准内部失调和增益误差[1]。
时钟发生
微控制器
指令寄存器
命令寄存器
偏移寄存器
数据寄存器
一阶开关
电容滤波
串行接口
二阶调制
二阶连续
时间滤波
器
调制器控制
INX OUTX REFX DDAV AGND
1C
OUTV
2C
CS
DDDV AGND
SDIO
SCLK
图 1 DAC1220的结构原理图
-2-
DAC1220有 5个内部寄存器 INSR、CMR、OCR、FCR和 DIR。片上的各种寄存器都
是通过串行接口向它们传送数据进行读写。其中:
① 指令寄存器 INSR
每一次串行通讯都是由写 INSR开始的,指令寄存器 INSR利用 8位代码,可以控制串行
接口下一操作是读或写;控制数据长度以及选择正确的寄存器读/写。它决定了下一通讯的
类型,更新 INSR寄存器,就开始新的通讯周期。
② 命令寄存器 CMR
命令寄存器 CMR为 16位 2字节代码, 用来设置 DAC1220的操作模式、分辨率模式、建
立模式和数据模式。
③ 数据输入寄存器 DIR
DIR为 24位寄存器,保存输人的数字值。在 20位转换模式下 DIR23 —DIR4中的数字量
被利用作为 A/D转换量。其转换格式如表 1:
表 1 DAC1220中 A/D转换格式
数据格式 20位模式
二进制补码
19
20
22
2OUT REF
codeV V +=
二进制
202 2OUT REF
codeV V=
3. C8051F350模数转换原理
C8051F350的 ADC0子系统集成了两个可编程模拟多路选择器(AMUX)、一个输入缓
冲器﹑一个 8位的偏移 DAC﹑一个差分可编程增益放大器(PGA)、一个内部参考 参
考电压和两个可编程采样频率可达 1kHZ滤波器[2](见图 2)。此外 ADC0子系统在进行 A/D
转换时还应配置相关的寄存器的值。其中:
①ADC0MUX寄存器[3]
ADC0MUX用来控制模拟输入端口的选择以及输入方式。ADC0可以工作在单端方式
或差分方式,可以被配置为用于测量前 端 8 个模拟输入引脚、片内温度传感器或
AGND。
ADC0CLK② 寄存器
ADC0CLK寄存器用于建立MDCLK,由公式MDCLK=SYSCLK/(ADC0CLK+1) 计
算决定,而通过MDCLK的值进而决定输入信号的采样频率(MDCLK/128)。
ADC0CF③ 寄存器
ADC0CF寄存器主要功能是用来设置对滤波器和 A/D转换参考电压的选择。
REF0CN④ 寄存器
由于 DAC1220 需要一个很稳定的外部参考电压,所以利用 C8051F350 可对外部设备提
供电压的特性,通过设置 REF0CN对 DAC1220提供其所需要的参考电压()。
ADC0MD⑤ 寄存器
-3-
通过对 ADC0MD寄存器中的 AD0EN位置‘1’,ADC0子系统被使能,决定 A/D的转换模
式。要注意的是在对相关寄存器进行配置转换系统模式时应将AD0SM位设置为 IDLE模式。
ADC0STA⑥ 寄存器
在 ADC0STA寄存器中 AD0BUSY位和 AD0INT位是表示 A/D转换忙和 A/D转换完成
标志位。
Σ
Σ
图 2 C8051F350芯片 ADC0转换系统原理图
4. 硬件电路设计
硬件电路通过芯片 AS1117 将输入的 5V 电压转换成 C8051F350 所需要的 模拟和
数字电压对其供电[3]。通过接入 外部晶振,为 DAC1220 提供串行时钟和数据转换
频率。需要说明的是,连续时间滤波器利用外部电容 C1、C2、VREF和 VOUT管脚来凋整
建立时间,对于不同模式 C1、C2的值是不一样的,20位转换模式时,C1=10nF, C2=。
此外 DAC1220中 D/A转换参考电压由 C8051F350中 VREF+、VREF-提供,具体电路如图 3。
图 3 硬件电路图
-4-
5. 系统软件设计
系统的软件由模数转换程序、LCD 屏幕显示和数模转换程序组成。模数转换程序是通
过 C8051F350片内 ADC将外部采集模拟量转换成数字量;LCD屏幕显示程序是 LCD动态
显示模数转换后得到的数字量;而数模转换程序是通过 DAC1220将由单片机通过 SPI口发
送的数字量转换成模拟电压量[4]。其中程序流程如图 4。
图 4 程序流程图
DAC1220 利用灵活的串行接口与微控制器或数字信号处理器接口。用来在多个外设利
用串口时,选中 DAC1220。SCLK作为 DAC1220串行数据输人/出的位时钟,信号,串行数
据在 SCLK的下降沿移入或移出 DAC1220的寄存器。SDIO是串行数据位的输人/出三态端
口,在不发送和接收数据时,此端口处于高阻态。如图 5所示,为 DAC1220操作时序图[1]。
图 5 DAC1220的读/写时序
-5-
限于篇幅,本文着重介绍模数转换函数、DAC1220 寄存器操作函数和模拟 SPI 总线发
送一个字节数据的函数[4]。除了以上函数之外,还有初始化函数、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)
{
unsigned char byte1,byte2;
byte1 =0x28;
byte2 =0xa0;
SCLK =0; //SCLK置低
sendSPIByte(0x24); //配置 INSR寄存器
SCLK =0; //SCLK置低
delayns(200); //t19 > 13txin
sendSPIByte(byte1);
sendSPIByte(byte2); //写 CMR寄存器
SCLK =0; //SCLK置低
}
③ 模拟 SPI总线发送一字节数据的函数
void sendSPIByte(unsigned char data)
{
unsigned char idata n =8;
while(n--) //循环 8次
{ delayns(50);
SCLK =1; //SCLK置高
if((data &0x80)==0x80) //写数
{ SDIO=1; } //SDIO置高
else
{ SDIO=0; } //SDIO置低
-6-
delayns(50);
data = data<<1; //data左移一位
SCLK =0; //SCLK置低
}
}
6. 结束语
本文讨论了 20位高精度 DAC1220、C8051F350的原理以及二者之间的接口应用[3],根
据程序设计的思路,也可以用 DSP、ARM来实现对 DAC1220的控制。高精度的 ADC、DAC
可应用于高精度检测、测量系统、便携仪器等各领域。
参考文献
[1] ,20-Bit,Low DIGITAL-TO-ANALOG CONVERTER,2000
[2] , C8051F350/1/2/3,2005
[3] 孙育才,MCS-51系列单片微型计算机及其应用,东南大学出版社,2002
[4] 马忠梅,籍顺心,张凯,马岩,单片机的 C语言应用程序设计,北京航天航空大学出版社,1998
20BitsDAC1220 and Its Interfacial Application With
C8051F350
Zhu Guo, Liu Haochun
School of Information Engineering, WUT, Wuhan, China (430070)
Abstract
This paper expatiates basic work theory of C8051F350、DAC1220 and discusses the specific methods
of A/D converter、D/A converter, interface controlling and so on. In addition, the interface and
program of DAC1220 with C8051F350 are brought forward in this paper. The experimental result
indicated that, this system is suitable for the precision and stable higher fields, such as industrial testing,
measurement, Portable equipment, and other fields.
Keywords: Interface; A/D,D/A;DAC1220; C8051F350