基于ARM的AD和DA转换模块的设计.doc

上传人:b****9 文档编号:139787 上传时间:2022-10-04 格式:DOC 页数:5 大小:635.50KB
下载 相关 举报
基于ARM的AD和DA转换模块的设计.doc_第1页
第1页 / 共5页
基于ARM的AD和DA转换模块的设计.doc_第2页
第2页 / 共5页
基于ARM的AD和DA转换模块的设计.doc_第3页
第3页 / 共5页
基于ARM的AD和DA转换模块的设计.doc_第4页
第4页 / 共5页
基于ARM的AD和DA转换模块的设计.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于ARM的AD和DA转换模块的设计.doc

《基于ARM的AD和DA转换模块的设计.doc》由会员分享,可在线阅读,更多相关《基于ARM的AD和DA转换模块的设计.doc(5页珍藏版)》请在冰豆网上搜索。

基于ARM的AD和DA转换模块的设计.doc

基于ARM的A/D和D/A转换模块的设计基金项目:

广州市科技计划项目(编号:

2005Z1—D0051)。

黎大鹏,程良伦

(广东工业大学自动化学院,广州510060)

摘要:

近年来,传感器网络技术的兴起,为模数和数模转换的应用注入新的血液。

在此大趋势下,本文介绍了在ARM系统下,通过对TI公司的TLC2543和DAC5573的控制,来实现A/D和D/A转换模块的设计。

该系统具有良好可扩展性,强大的可操作性,广泛应用在传感器技术的各个方面。

关键词:

A/D;D/A;TLC2543;DAC5573

DesignofA/DandD/AchangesystembasedonARM

LiDaPeng,ChengLiang-lun

(FacultyofAutomation,GuangdongUniversityofTechnology,Guangzhou510050)

Abstract:

TheapplicationofA/DandD/Achangehavebeenenteringintoanewstepbasedondevelopmentofthesensornetworktechnologyinrecentyears.ThepaperintroducedthedesignofA/DandD/AchangethroughcontrollingTLC2543andDAC5573thatweremadefromTICompanybasedontheS3C4510system.Thesystemhadagreatexpansionandastrongoperation,anditapplyinallaspectsofthetechnologyofthesensor.

Keyword:

A/D;D/A;TLC2543;DAC5573

0、引言

传感测试技术正朝着多功能化、微型化、智能化、网络化、无线化的方向发展[1]。

无线传感器网络(WirelessSensorNetwork)作为其中新兴技术,是目前国内外研究的热点。

随着电子产业数字化程度的不断成熟,目前的控制电路以ARM系统为主体,同时在ARM系统下包含了很多数字电路和模拟电路的混合电路[2]。

所以作为模拟和数字电路的接口的A/D转换器和D/A转换器,越来越受关注。

人们对A/D转换器和D/A转换器的要求也越来越高,新型的模拟/数字转换技术不断涌现[3]。

A/D转换器具有三个基本功能:

采样、量化和编码。

如何实现这三个功能,决定A/D转换器的电路结构和工作性能。

A/D转换器的类型很多,包括全并行模拟/数字转换,两步型模拟/数字转换,插值折叠型模拟/数字转换,流水线型模拟/数字转换,逐次逼近型模拟/数字转换。

本文要介绍的TLC2543采用逐次逼近型模拟/数字转换,SPI的电路接口,结构简单,面积和功耗小,而且不存在延迟问题。

非常适合工业控制和数据采集系统[4]。

D/A转换器由电阻阵列和n个电流开关(或电压开关)构成,并按数字输入值切换开关,产生比例于输入的电流(或电压)。

一般按输出是电流还是电压、能否作乘法运算等进行分类。

本文要介绍的DAC5573采用的是电压输出型。

它采用内置输出放大器以低阻抗输出,直接输出电压的器件仅用于高阻抗负载,由于无输出放大器部分的延迟,作为高速DA转换器使用。

该DAC具有高速IIC接口,而且功耗很低,能广泛应用于伺服系统控制、过程自动化控制及音频处理中[5]。

因此,TI公司的TLC2543和DAC5573无论从采样精度到转换时间上都是很先进,完全能够满足设计者的要求。

1、AD/DA转换模块的设计特点

1、1扩展性

扩展性包括两部分:

1、IIC的扩展,IIC的扩展是通过把IIC接口标准的芯片放在同一个IIC接口上来实现的。

它们是靠地址来识别,DAC5573有4个地址位,所以IIC总线上可以外接16个DAC5573,每个DAC5573有4路输出,总共能扩展成64路模拟量输出。

完全可以满足设计系统的要求,如图1.1所示。

除了能够接入DAC5573,还可以连接其他IIC接口的芯片来实现其他功能,例如可以增加PCA9555来扩展IO,增加铁电存储器FM31256等。

2、SPI扩展,SPI的扩展基于相同的数据输出DOUT,数据输入DIN,时钟SCLK总线的基础上,通过采用不同的片选SS引脚来扩展,如图1.2所示。

若要控制总线上的某一个芯片,只需把该芯片的SS引脚的电平拉低,就可以对此芯片进行操作。

所以理论上只要有足够的IO口,可以连接无数个TLC2543。

而IO口的扩展可以通过PCA9555来实现。

该设计完全能满足系统对A/D转换通道的要求。

图1IIC总线的扩展

图2SPI总线的扩展

1、2可操作性强

可操作性强主要体现在它们都能够与5V和3.3V供电的处理器一起使用。

对于TLC2543,虽然TLC2543采用5V的电源,但是由于它本身IO口的高电平识别范围广,2.7V到6V的电压值都能准确地识别成高电平。

所以当它接入现在常用的ARM系统时,不仅能够正常使用。

而且把电压的输入范围从0-3.3V增加到0-5V。

提高了它的应用范围。

为了让DAC5573适应大多数控制处理器的要求,它本身有一个IO口电平选择引脚IOVDD,当接到5V供电的单片机上时,IOVDD需要接到5V;当接到像S3C4510那样使用3.3V供电的处理器上,IOVDD需要接到3.3V上;同时DAC5573可以支持0-3.3V的0-5V输出。

2、A/D转换模块的设计

2、1硬件系统的设计

TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程[6]。

来自外部的11路模拟通道,它们的输入的范围是0-5V。

但是需要下拉一个1.2K的电阻,否则会导致输入信号会波动。

然后TLC2543通过标准四线的SPI口与S3C4510连接,S3C4510没有专门的SPI控制器,所以只需连接到它的四个IO口,并通过IO口来模拟SPI的时序。

如图2.1所示,其中连接到CS脚且标号为CSad的引脚作为片选端。

在CSad端由高变低时,内部计数器复位。

由低变高时,在设定时间内禁止数据传送和时钟信号的产生;SCLK作为输入/输出时钟端。

SCLK接收串行输入信号并完成以下四个功能:

(1)在SCLK的前8个上升沿,8位输入数据存入输入数据寄存器。

(2)在SCLK的第4个下降沿,被选通的模拟输入电压开始向电容器充电,直到SCLK的最后一个下降沿为止。

(3)将前一次转换数据的其余11位输出到DOUT端,在SCLK的下降沿时,数据开始变化。

(4)SCLK的最后一个下降沿,将转换的控制信号传送到内部状态控制位;DIN作为输入数据端,输入的数据是一个8位的数据流,它包含4位模拟通道地址,一个2位的数据长度选择,以及一位MSB或LSB的优先和一个单极或双极输出位。

DOUT作为A/D转换结果的三态串行输出端。

CSad为高时处于高阻抗状态,CSad为低时处于激活状态。

图3TLC2543硬件连接图

2、2程序设计

AD转换程序的设计是根据TLC2543的转换过程来实现的,转换的过程包括以下几方面的步骤,首先,需要对芯片进行初始化,上电后,CSad必须由高电平变成低电平来使SCLK时钟信号有效。

然后紧跟着是输入一个八位的数据流,其中数据流的前四位是模拟通道的选择,若四位都是为零,那就表示选择通道A0,除了11个模拟通道外,芯片还提供了测试电压的输入,这样就可以在某一个通道上不加入模拟电压的情况下,验证程序是否准确。

极大地提高了开发的效率。

八位数据流的后四位是控制位,它们和前四位都是在SCLK的上升沿有效。

而数据输出出现在SCLK的下降沿。

CS_OFF();//激活TLC2543

z=0xB4;//选用芯片的参考电压作为模拟量的输入,输出数据的长度为8位

for(j=1;j<=8;j++)//把0x24由高位到低位写入IO数据寄存器

{k=((z&0x80)>>7);//用临时变量k来存储数据

rIOPDATA=(k<<13);//数据输入

u=(rIOPDATA>>12);//数据输出采集

add_sum(u);//把数据累计起来

LED14_ON();//时钟信号

for(i=0;i<1000;i++)

SCLK_ON();//时钟信号电平拉高

for(i=0;i<1000;i++)

SCLK_OFF);//时钟信号电平拉低

z=(z<<1);//数据移位

}

程序执行结果如图2.2所示。

图2.2A/D转换程序运行结果

3、D/A转换模块的设计

3、1硬件模块的设计

DAC5573具有I2C接口的8位四路。

DAC5573相对TLC2543来说,硬件的连接简单很多,因为它采用标准的IIC总线,同时S3C4510里包含IIC的控制器,所以DAC5573只需接到4510的SDA和SCL这两个引脚,就可以实现两者之间的通信。

具体电路图如图3.1所示。

需要注意的是,SDA和SCL这两个引脚需要上拉电阻值为10K欧的电阻,来确保IIC总线能够释放出来。

DAC5573可以通过VREFH和VREFL这两个引脚来调节输出电压的计算。

输出的电压遵循以下的数学表达式:

VOUT=2*VREFL+(VREFH-VREFL)*D/255。

其中D是存储在DAC寄存器的二进制数,范围从0X00至0XFF。

在本设计中,VREFL=0V,VREFL=5V,所以VOUT=5*D/255。

图3.1DAC5573的硬件连接图

3、2程序设计

DAC5573符合标准的IIC模式(传输的数率为100Kbps)的设计。

就是主机传输之前有开始条件,开始条件通过SDA从高电平向低电平转变来实现。

其次把DAC5573的地址字节写入移位寄存器中,移位寄存器的BF位自动清零。

当数据传输完成,BF位置为高电平。

然后需要向从机DAC5573写入控制字节。

控制字节主要实现输出通道的选择,本程序设计中控制字节=0x52,选择了四个通道中的B通道。

完成以上工作后,就可以传输数据了。

数据按照16位的数据格式来传输的,其中高八位是DAC寄存器的二进制数,低八位是无关要紧的数据,对输出不产生任何影响。

本程序设计中,存入DAC寄存器的数D=0x80,根据VOUT=5*D/255这个表达式,输出的电压为2.5V。

最后,需要把SDA从低电平转变成高电平得方式来停止IIC的操作。

IIC_init();//对DAC5573复位

while(IICCON&BUSY);//判断IIC总线是否忙,一直等待至总线空闲

IICCON=START|ACK;//读取开始

IICBUF=slave_addr;//写入从机地址

while(!

(IICCON&BF));//判断数据是否传输完成,若完成BF位为1

IICBUF=(int)addr;//写入控制字节

while(!

(IICCON&BF));//判断数据是否传输完成,若完成BF位为1

for(i=0;i

{IICBUF=*pdata++;//写入

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1