一線式A/D轉(zhuǎn)換器DS2450的原理與應用
1前言
DS2450是DALLAS公司生產(chǎn)的一線式4通道逐次逼近式A/D轉(zhuǎn)換器,其輸入電壓范圍、轉(zhuǎn)換精度位數(shù)、報警門限電壓可編程;每個通道有各自的存儲器以存儲電壓范圍設(shè)置、轉(zhuǎn)換結(jié)果、門限電壓等參數(shù);普通方式下串行通信速率達16.3kbps,超速工作時速率達142kbps,片內(nèi)16位循環(huán)冗余校驗碼生成器可用于檢測通信的正確性;DS2450采用8引腳SOIC小體積封裝形式,既可用單5V電源供電,也可采用寄生電源方式供電。電路正常工作時僅消耗2.5mW功率,不工作時消耗25μW。多個DS2450或其他功能的具有MicroLAN接口的一線式芯片可以并聯(lián),CPU只需一根端口線就能與諸多一線式芯片通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。
2DS2450的引腳排列和內(nèi)部結(jié)構(gòu)
DS2450為8引腳SOIC型封裝,其管腳功能如下:
1腳(VDD):工作電源接入端
2腳(N.C):空引腳
3腳(DATA):串行數(shù)據(jù)輸入/輸出端
4腳(GND):接地端
5腳(AIN-A):A路模擬電壓輸入端
6腳(AIN-B):B路模擬電壓輸入端
7腳(AIN-C):C路模擬電壓輸入端
8腳(AIN-D):D路模擬電壓輸入端
圖1 DS2450的內(nèi)部結(jié)構(gòu)
DS2450的內(nèi)部結(jié)構(gòu)如圖1所示。光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS2450的地址序列碼;64位光刻ROM的排列是:開始8位(20H)是產(chǎn)品類型標號,接著的48位是該DS2450自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個一線式器件的地址都各不相同,以便實現(xiàn)一根總線上掛接多個一線式電路。
對于一線端口,在ROM功能建立之前,其它功能是無法實現(xiàn)的??偩€控制器必須首先通過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命令執(zhí)行后,串行通信速率可高達142kbps。如果多個器件連接在一線上,這些命令對每個器件的64位ROM部分進行操作,并挑選出一個特定的器件。對選中的DS2450,執(zhí)行下一步的A/D轉(zhuǎn)換控制命令以及讀寫存儲器的命令,所有命令或數(shù)據(jù)的讀/寫均從最低位開始。
3存儲器組織方式
DS2450內(nèi)部有24個地址毗連的8位存儲器,可將其分成3頁,每頁8字節(jié)。DS2450的存儲器組織方式及各位含義如表1所示(高位地址為00H)。
第0頁為A/D轉(zhuǎn)換結(jié)果存儲器,每個通道占2個字節(jié)16位,芯片上電復位時該頁清0;其中00H、01H存儲A通道轉(zhuǎn)換結(jié)果,LSB?A為最低位,MSB?A為最高位;02H、03H存儲B通道轉(zhuǎn)換結(jié)果;04H、05H存儲C通道轉(zhuǎn)換結(jié)果;06H、07H存儲D通道轉(zhuǎn)換結(jié)果,對應位含義與A通道相同。
第1頁為A/D轉(zhuǎn)換控制與狀態(tài)存儲器,08H、09H對應于A通道,其余通道依次類推,各位含義相同。RC3、RC2、RC1、RC0的組合控制A/D轉(zhuǎn)換的精度位數(shù),0000為16位、0001為1位、……、1111為15位;特別值得注意的是,若控制轉(zhuǎn)換精度不足16位,則在轉(zhuǎn)換結(jié)果的“低位”補0,湊足16位,因此讀出結(jié)果的16位值中,哪些是有效位與RC3、RC2、RC1、RC0的組合有關(guān)。對于用作模擬量輸入的通道,輸出使能位OE必須為0,否則模擬輸入不被接受,轉(zhuǎn)換結(jié)果始終全為0,而此時輸出控制位OC可以不必關(guān)心。不用作模擬量輸入的通道可以作為漏極開路的數(shù)字輸出端,外接上拉電阻器和工作電源,在輸出使能位OE=1時,若輸出控制位OC寫入1,則輸出高電平,OC寫入0,則輸出低電平。IR控制輸入電壓范圍,IR=1時模擬輸入高限為5.10V,IR=0時輸入高限為2.55V。AEH、AEL分別為高、低門限電壓報警允許控制端;AFH、AFL分別為模擬輸入是否超過規(guī)定的高門限、低于規(guī)定的低門限的狀態(tài)指示位,若輸入超限,相應位自動置1。上電復位標志位POR與通道無關(guān),上電復位時4個POR自動置1,說明控制字和門限值等未準備好,該位可用軟件清0。表中為0的位無效,讀出時始終為0且不能寫入1。DS2450上電復位時,默認的控制/狀態(tài)數(shù)據(jù)的低位為08H、高位為8CH,即4個通道均作為模擬輸入通道、8位轉(zhuǎn)換精度、輸入高限2.55V、允許高低限報警。
第2頁為各通道輸入高/低限報警值存儲器,10H存放A通道低門限8位報警值、11H存放A通道高門限8位報警值,其余通道依次類推,各位含義相同。在判斷是否超限時,只將存儲的門限值與轉(zhuǎn)換結(jié)果的高8位進行比較,然后自動改變AFH、AFL的狀態(tài)。上電復位時,高限值自動設(shè)置為FFH,低限值自動設(shè)置為00H。
4轉(zhuǎn)換與讀/寫控制
4.1轉(zhuǎn)換控制
通過DS2450的DATA端串行送出轉(zhuǎn)換命令字[3CH],隨后送出通道選擇字和預置控制字,啟動A/D轉(zhuǎn)換器進行轉(zhuǎn)換。DS2450的通道選擇字和預置控制字的各位含義如表2所示。
在通道選擇字中,對應位為1表示該通道參與轉(zhuǎn)換。同時選擇多個通道時,其轉(zhuǎn)換順序為A→B→C→D,未選中的通道被跳過。其A/D轉(zhuǎn)換的時間可用下式近似計算:轉(zhuǎn)換時間=通道數(shù)×轉(zhuǎn)換精度位數(shù)×80μs+160μs。當所有通道轉(zhuǎn)換完畢,發(fā)讀存儲器命令可以獲得轉(zhuǎn)換結(jié)果和對應的狀態(tài)。
表2DS2450的通道選擇字和預置控制字的各位含義
(a)初始化時序
(b)寫時序
(c)讀時序
圖2DS2450的工作時序圖
圖3DS2450與微處理器的典型連接圖
預置控制字可以對相應通道的轉(zhuǎn)換結(jié)果存儲器進行預置。SET、CLR=00,不預置,保持上次轉(zhuǎn)換值;SET、CLR=01,轉(zhuǎn)換前預置為全0;SET、CLR=10,預置為全1;SET、CLR=11,無效組合。
4.2存儲器讀/寫控制
讀存儲器命令用于讀取轉(zhuǎn)換結(jié)果、工作狀態(tài)、門限設(shè)定值等。總線管理器首先送出讀存儲器命令字[AAH],然后送出兩字節(jié)的16位“起始數(shù)據(jù)”存儲器地址,從總線上讀取一個字節(jié)的數(shù)據(jù)后,地址自動加1,可緊接著讀取下一個數(shù)據(jù);當一頁讀完后,隨后讀取的兩個字節(jié)為內(nèi)部自動產(chǎn)生的16位循環(huán)冗余校驗碼,它由前面送出的命令字、地址、讀取的存儲器數(shù)據(jù),根據(jù)表達式CRC16=X16+X15+X2+1生成,對校驗碼生成和應用的詳細資料可參閱相關(guān)文獻。
寫存儲器命令主要針對第1頁和第2頁的存儲器,目的是寫入各通道的工作方式控制字和對應通道的高、低門限設(shè)定值??偩€管理器首先送出寫存儲器命令字[55H],然后送出兩字節(jié)的16位存儲器起始地址,接著逐個送出要寫入的數(shù)據(jù),其地址也是自動加1。若在剛寫完一個數(shù)據(jù)后執(zhí)行讀操作,讀出的數(shù)據(jù)應剛好為前一次寫入的數(shù)據(jù),可利用這一特點對寫入和讀出的數(shù)據(jù)進行比較,以判斷傳輸?shù)恼_性。
如果通過軟件校驗,發(fā)現(xiàn)了讀/寫中的傳輸錯誤,則必須對芯片進行初始化,并重新進行讀寫操作。
4.3DS2450的工作時序
DS2450的一線工作協(xié)議流程是:初始化→ROM功能命令→存儲器讀寫/轉(zhuǎn)換控制功能命令→傳輸數(shù)據(jù)。其工作時序包括初始化時序、寫時序和讀時序,在普通速度工作模式下,如圖2(a)(b)(c)所示。
初始化時序包括總線管理器(主機)發(fā)出的復位脈沖和DS2450反饋送出的存在脈沖兩部分,存在脈沖告訴主機DS2450在線且已準備好;讀/寫時序規(guī)定了在DS2450的DATA端串行讀寫數(shù)據(jù)位時的時序配合要求。
5DS2450與單片機的典型接口設(shè)計
圖3以MCS-51系列單片機為例,示出DS2450與微處理器的典型連接。其DATA端接AT89C51的P1.0,采用外接電源供電方式,其VCC端用5V電源供電。此例中僅對D通道進行A/D轉(zhuǎn)換,AIN-D接模擬信號輸入;AIN-A,AIN-B外接上拉電阻器和電源,其輸出作為D通道的高、低限報警。
假設(shè)單片機系統(tǒng)所用的晶振頻率為12MHz,根據(jù)DS2450的初始化時序、寫時序和讀時序,分別編寫了3個子程序:INIT為初始化子程序,發(fā)送復位脈沖并接收存在脈沖;WRITE為寫(命令或數(shù)據(jù)字節(jié))子程序,READ為讀數(shù)據(jù)子程序。所有要讀寫的命令或數(shù)據(jù)字節(jié)均放在A寄存器中(限于篇幅,略去源程序,有興趣者可向作者索取)。
主機控制DS2450完成A/D轉(zhuǎn)換一般必須經(jīng)過以下幾個步驟:初始化使DS2450準備好、發(fā)ROM功能命令和相應的64位光刻ROM數(shù)據(jù)選中特定芯片、寫入工作方式控制字和高/低限值、發(fā)轉(zhuǎn)換控制命令、讀取轉(zhuǎn)換值及狀態(tài)。
例如,將D通道設(shè)定為5.1V輸入范圍、轉(zhuǎn)換精度為12位、高報警門限為3.0V(96H)、低報警門限為2.0V(64H)、通道A和B作為報警輸出、轉(zhuǎn)換結(jié)果放在如下30H和31H的子程序CTLAD中。
;--------------------------
CTLAD:LCALLINIT;發(fā)復位脈沖并接收存在脈沖
MOVA,#0CCH
LCALLWRITE;發(fā)“跳過ROM”命令
;設(shè)置4個通道工作方式控制字,寫入存儲器地址從0008H開始
FSKZ:MOVA,#55H
LCALLWRITE;發(fā)“寫存儲器”命令
MOVA,#08H
LCALLWRITE;發(fā)低8位地址
MOVA,#00H
LCALLWRITE;發(fā)高8位地址
MOVA,#0C0H
;A通道漏極開路數(shù)字輸出方式
LCALLWRITE;發(fā)A通道工作方式低字節(jié)
MOVA,#00H
;與報警、輸入范圍等設(shè)置無關(guān)
LCALLWRITE;發(fā)A通道工作方式高字節(jié)
MOVA,#0C0H
;B通道漏極開路數(shù)字輸出方式
LCALLWRITE;發(fā)B通道工作方式低字節(jié)
MOVA,#00H
;與報警、輸入范圍等設(shè)置無關(guān)
LCALLWRITE;發(fā)B通道工作方式高字節(jié)
MOVA,#01H
;C通道不用,可隨意設(shè)置
LCALLWRITE;發(fā)C通道工作方式低字節(jié)
MOVA,#00H
;C通道不用,可隨意設(shè)置
LCALLWRITE;發(fā)C通道工作方式高字節(jié)
MOVA,#0CH
;D通道12位A/D轉(zhuǎn)換方式
LCALLWRITE;發(fā)D通道工作方式低字節(jié)
MOVA,#0DH
;5.1V輸入范圍,允許高低限報警
LCALLWRITE;發(fā)D通道工作方式高字節(jié)
;設(shè)置D通道高/低限值報警值,寫入存儲器地址從0016H開始
BJSZ:LCALLINIT;發(fā)復位脈沖并接收存在脈沖
MOVA,#0CCH
LCALLWRITE;發(fā)“跳過ROM”命令
MOVA,#55H
LCALLWRITE;發(fā)“寫存儲器”命令
MOVA,#16H
LCALLWRITE;發(fā)低8位地址
MOVA,#00H
LCALLWRITE;發(fā)高8位地址
MOVA,#64H
;低門限報警值2.0V(64H)
LCALLWRITE;送D通道低門限存儲器
MOVA,#96H
;高門限報警值3.0V(96H)
LCALLWRITE
;送轉(zhuǎn)換控制字,啟動A/D轉(zhuǎn)換。
QDZH:LCALLINIT;發(fā)復位脈沖并接收存在脈沖
MOVA,#0CCH
LCALLWRITE;發(fā)“跳過ROM”命令
MOVA,#3CH
LCALLWRITE;發(fā)“轉(zhuǎn)換控制”命令字
MOVA,#08H
;僅D通道參與轉(zhuǎn)換
LCALLWRITE;發(fā)通道選擇控制字
MOVA,#40H
;D通道轉(zhuǎn)換前預置為全0
LCALLWRITE;發(fā)預置數(shù)據(jù)控制字
;讀取D通道轉(zhuǎn)換結(jié)果,放在31H、30H
RDDT:LCALLINTI;發(fā)復位脈沖并接收存在脈沖
MOVA,#0CCH
LCALLWRITE;發(fā)“跳過ROM”命令
MOVA,#0AAH
LCALLWRITE;發(fā)“讀存儲器”命令字
MOVA,#06H
LCALLWRITE;發(fā)低8位地址
MOVA,#00H
LCALLWRITE;發(fā)高8位地址
LCALLREAD
MOV30H,A
?。坏臀晦D(zhuǎn)換結(jié)果放在30H
LCALLREAD
MOV31H,A
??;高位轉(zhuǎn)換結(jié)果放在31H
RET
……
如果一線上掛接多個DS2450和其他一線式接口芯片、采用寄生電源供電方式、工作在超速模式、通信中進行校驗,則子程序CTLAD的編寫就要復雜一些,限于篇幅,這一部分不再詳述,請參閱文獻[1][2]的相關(guān)內(nèi)容。