DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 114|回复: 0
打印 上一主题 下一主题

一线式A/D转换器DS2450的原理与应用

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-21 23:44:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1前言    DS2450是DALLAS公司生产的一线式4通道逐次逼近式A/D转换器,其输入电压范围、转换精度位数、报警门限电压可编程;每个通道有各自的存储器以存储电压范围设置、转换结果、门限电压等参数;普通方式下串行通信速率达16.3kbps,超速工作时速率达142kbps,片内16位循环冗余校验码生成器可用于检测通信的正确性;DS2450采用8引脚SOIC小体积封装形式,既可用单5V电源供电,也可采用寄生电源方式供电。电路正常工作时仅消耗2.5mW功率,不工作时消耗25μW。多个DS2450或其他功能的具有MicroLAN接口的一线式芯片可以并联,CPU只需一根端口线就能与诸多一线式芯片通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。2DS2450的引脚排列和内部结构    DS2450为8引脚SOIC型封装,其管脚功能如下:    1脚(VDD):工作电源接入端    2脚(N.C):空引脚    3脚(DATA):串行数据输入/输出端    4脚(GND):接地端    5脚(AIN-A):A路模拟电压输入端    6脚(AIN-b):b路模拟电压输入端    7脚(AIN-C):C路模拟电压输入端    8脚(AIN-D):D路模拟电压输入端

图1 DS2450的内部结构DS2450的内部结构如图1所示。光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS2450的地址序列码;64位光刻ROM的排列是:开始8位(20H)是产品类型标号,接着的48位是该DS2450自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个一线式器件的地址都各不相同,以便实现一根总线上挂接多个一线式电路。    对于一线端口,在ROM功能建立之前,其它功能是无法实现的。总线控制器必须首先通过DATA引脚对DS2450提供7个ROM功能控制命令(8位)之一:(1)读ROM,命令字[33H];(2)匹配ROM[55H];(3)搜索ROM[F0H];(4)跳过ROM[CCH];(5)条件搜索ROM[ECH];(6)超速跳过ROM[3CH];(7)超速匹配ROM[69H]。其中,超速跳过ROM或超速匹配ROM命令执行后,串行通信速率可高达142kbps。如果多个器件连接在一线上,这些命令对每个器件的64位ROM部分进行操作,并挑选出一个特定的器件。对选中的DS2450,执行下一步的A/D转换控制命令以及读写存储器的命令,所有命令或数据的读/写均从最低位开始。3存储器组织方式    DS2450内部有24个地址毗连的8位存储器,可将其分成3页,每页8字节。DS2450的存储器组织方式及各位含义如表1所示(高位地址为00H)。    第0页为A/D转换结果存储器,每个通道占2个字节16位,芯片上电复位时该页清0;其中00H、01H存储A通道转换结果,LSbA为最低位,MSbA为最高位;02H、03H存储b通道转换结果;04H、05H存储C通道转换结果;06H、07H存储D通道转换结果,对应位含义与A通道相同。    第1页为A/D转换控制与状态存储器,08H、09H对应于A通道,其余通道依次类推,各位含义相同。RC3、RC2、RC1、RC0的组合控制A/D转换的精度位数,0000为16位、0001为1位、……、1111为15位;特别值得注意的是,若控制转换精度不足16位,则在转换结果的“低位”补0,凑足16位,因此读出结果的16位值中,哪些是有效位与RC3、RC2、RC1、RC0的组合有关。对于用作模拟量输入的通道,输出使能位OE必须为0,否则模拟输入不被接受,转换结果始终全为0,而此时输出控制位OC可以不必关心。不用作模拟量输入的通道可以作为漏极开路的数字输出端,外接上拉电阻器和工作电源,在输出使能位OE=1时,若输出控制位OC写入1,则输出高电平,OC写入0,则输出低电平。IR控制输入电压范围,IR=1时模拟输入高限为5.10V,IR=0时输入高限为2.55V。AEH、AEL分别为高、低门限电压报警允许控制端;AFH、AFL分别为模拟输入是否超过规定的高门限、低于规定的低门限的状态指示位,若输入超限,相应位自动置1。上电复位标志位POR与通道无关,上电复位时4个POR自动置1,说明控制字和门限值等未准备好,该位可用软件清0。表中为0的位无效,读出时始终为0且不能写入1。DS2450上电复位时,默认的控制/状态数据的低位为08H、高位为8CH,即4个通道均作为模拟输入通道、8位转换精度、输入高限2.55V、允许高低限报警。    第2页为各通道输入高/低限报警值存储器,10H存放A通道低门限8位报警值、11H存放A通道高门限8位报警值,其余通道依次类推,各位含义相同。在判断是否超限时,只将存储的门限值与转换结果的高8位进行比较,然后自动改变AFH、AFL的状态。上电复位时,高限值自动设置为FFH,低限值自动设置为00H。4转换与读/写控制4.1转换控制    通过DS2450的DATA端串行送出转换命令字[3CH],随后送出通道选择字和预置控制字,启动A/D转换器进行转换。DS2450的通道选择字和预置控制字的各位含义如表2所示。    在通道选择字中,对应位为1表示该通道参与转换。同时选择多个通道时,其转换顺序为A→b→C→D,未选中的通道被跳过。其A/D转换的时间可用下式近似计算:转换时间=通道数×转换精度位数×80μs+160μs。当所有通道转换完毕,发读存储器命令可以获得转换结果和对应的状态。

表2DS2450的通道选择字和预置控制字的各位含义



(a)初始化时序

(b)写时序

(c)读时序图2DS2450的工作时序图
                          
                       
                          
                                 

图3DS2450与微处理器的典型连接图预置控制字可以对相应通道的转换结果存储器进行预置。SET、CLR=00,不预置,保持上次转换值;SET、CLR=01,转换前预置为全0;SET、CLR=10,预置为全1;SET、CLR=11,无效组合。4.2存储器读/写控制    读存储器命令用于读取转换结果、工作状态、门限设定值等。总线管理器首先送出读存储器命令字[AAH],然后送出两字节的16位“起始数据”存储器地址,从总线上读取一个字节的数据后,地址自动加1,可紧接着读取下一个数据;当一页读完后,随后读取的两个字节为内部自动产生的16位循环冗余校验码,它由前面送出的命令字、地址、读取的存储器数据,根据表达式CRC16=X16+X15+X2+1生成,对校验码生成和应用的详细资料可参阅相关文献。    写存储器命令主要针对第1页和第2页的存储器,目的是写入各通道的工作方式控制字和对应通道的高、低门限设定值。总线管理器首先送出写存储器命令字[55H],然后送出两字节的16位存储器起始地址,接着逐个送出要写入的数据,其地址也是自动加1。若在刚写完一个数据后执行读操作,读出的数据应刚好为前一次写入的数据,可利用这一特点对写入和读出的数据进行比较,以判断传输的正确性。    如果通过软件校验,发现了读/写中的传输错误,则必须对芯片进行初始化,并重新进行读写操作。4.3DS2450的工作时序    DS2450的一线工作协议流程是:初始化→ROM功能命令→存储器读写/转换控制功能命令→传输数据。其工作时序包括初始化时序、写时序和读时序,在普通速度工作模式下,如图2(a)(b)(c)所示。    初始化时序包括总线管理器(主机)发出的复位脉冲和DS2450反馈送出的存在脉冲两部分,存在脉冲告诉主机DS2450在线且已准备好;读/写时序规定了在DS2450的DATA端串行读写数据位时的时序配合要求。5DS2450与单片机的典型接口设计    图3以MCS-51系列单片机为例,示出DS2450与微处理器的典型连接。其DATA端接AT89C51的P1.0,采用外接电源供电方式,其VCC端用5V电源供电。此例中仅对D通道进行A/D转换,AIN-D接模拟信号输入;AIN-A,AIN-b外接上拉电阻器和电源,其输出作为D通道的高、低限报警。    假设单片机系统所用的晶振频率为12MHz,根据DS2450的初始化时序、写时序和读时序,分别编写了3个子程序:INIT为初始化子程序,发送复位脉冲并接收存在脉冲;WRITE为写(命令或数据字节)子程序,READ为读数据子程序。所有要读写的命令或数据字节均放在A寄存器中(限于篇幅,略去源程序,有兴趣者可向作者索取)。    主机控制DS2450完成A/D转换一般必须经过以下几个步骤:初始化使DS2450准备好、发ROM功能命令和相应的64位光刻ROM数据选中特定芯片、写入工作方式控制字和高/低限值、发转换控制命令、读取转换值及状态。    例如,将D通道设定为5.1V输入范围、转换精度为12位、高报警门限为3.0V(96H)、低报警门限为2.0V(64H)、通道A和b作为报警输出、转换结果放在如下30H和31H的子程序CTLAD中。;--------------------------CTLADCALLINIT;发复位脉冲并接收存在脉冲MOVA,#0CCHLCALLWRITE;发“跳过ROM”命令;设置4个通道工作方式控制字,写入存储器地址从0008H开始FSKZ:MOVA,#55HLCALLWRITE;发“写存储器”命令MOVA,#08HLCALLWRITE;发低8位地址MOVA,#00HLCALLWRITE;发高8位地址MOVA,#0C0H;A通道漏极开路数字输出方式LCALLWRITE;发A通道工作方式低字节MOVA,#00H;与报警、输入范围等设置无关LCALLWRITE;发A通道工作方式高字节MOVA,#0C0H;b通道漏极开路数字输出方式LCALLWRITE;发b通道工作方式低字节MOVA,#00H;与报警、输入范围等设置无关LCALLWRITE;发b通道工作方式高字节MOVA,#01H;C通道不用,可随意设置LCALLWRITE;发C通道工作方式低字节MOVA,#00H;C通道不用,可随意设置LCALLWRITE;发C通道工作方式高字节MOVA,#0CH;D通道12位A/D转换方式LCALLWRITE;发D通道工作方式低字节MOVA,#0DH;5.1V输入范围,允许高低限报警LCALLWRITE;发D通道工作方式高字节;设置D通道高/低限值报警值,写入存储器地址从0016H开始bJSZ:LCALLINIT;发复位脉冲并接收存在脉冲MOVA,#0CCHLCALLWRITE;发“跳过ROM”命令MOVA,#55HLCALLWRITE;发“写存储器”命令MOVA,#16HLCALLWRITE;发低8位地址MOVA,#00HLCALLWRITE;发高8位地址MOVA,#64H;低门限报警值2.0V(64H)LCALLWRITE;送D通道低门限存储器MOVA,#96H;高门限报警值3.0V(96H)LCALLWRITE;送转换控制字,启动A/D转换。QDZHCALLINIT;发复位脉冲并接收存在脉冲MOVA,#0CCHLCALLWRITE;发“跳过ROM”命令MOVA,#3CHLCALLWRITE;发“转换控制”命令字MOVA,#08H  ;仅D通道参与转换LCALLWRITE;发通道选择控制字MOVA,#40H  ;D通道转换前预置为全0LCALLWRITE;发预置数据控制字;读取D通道转换结果,放在31H、30HRDDT:LCALLINTI;发复位脉冲并接收存在脉冲MOVA,#0CCHLCALLWRITE;发“跳过ROM”命令MOVA,#0AAH  LCALLWRITE;发“读存储器”命令字MOVA,#06HLCALLWRITE;发低8位地址MOVA,#00HLCALLWRITE;发高8位地址LCALLREADMOV30H,A  ;低位转换结果放在30H  LCALLREADMOV31H,A  ;高位转换结果放在31HRET……    如果一线上挂接多个DS2450和其他一线式接口芯片、采用寄生电源供电方式、工作在超速模式、通信中进行校验,则子程序CTLAD的编写就要复杂一些,限于篇幅,这一部分不再详述,请参阅文献[1][2]的相关内容。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-6-17 06:41 , 耗时 0.121868 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表