- 相關(guān)推薦
USB總線接口芯片CH371及其應(yīng)用
摘要:CH371是一種新型USB通用總線接口芯片。利用該芯片可在不了解任何USB協(xié)議或固件程序甚至驅(qū)動程序的情況下,輕松地將并口或串口產(chǎn)品升級到USB接口。文中介紹了該接口芯片的主要特點和引腳功能,給出了CH371與其它總線進行接口的幾種應(yīng)用電路,同時給出了CH371與MCS-51單片機的接口程序。關(guān)鍵詞:USB 總線接口芯片 CH371 單片機
1 引言
CH371是一種USB總線通用接口芯片。該芯片具有8位數(shù)據(jù)總線以及讀、寫、片選控制線和中斷輸出,可以方便地掛接到單片機、DSP、MCU等控制器的系統(tǒng)總線上;在計算機系統(tǒng)中,通過CH371的配套軟件可提供簡潔易用的操作接口,從而使其與本地端的單片機通訊就如同讀寫硬盤中的文件一樣簡單。由于CH371屏蔽了USB通訊中的所有協(xié)議,因而可在計算機應(yīng)用層與本地端控制器之間提供端對端的連接。在不需要了解任何USB協(xié)議或者固件程序甚于驅(qū)動程序的情況下,就可輕松地將并口、串口產(chǎn)品升級到USB接口。
(范文先生網(wǎng)www.gymyzhishaji.com收集整理)
CH371的主要特點如下:
●屏蔽了USB協(xié)議,可在計算機應(yīng)用層與本地端之間實現(xiàn)端對端的連接。
●具有單向數(shù)據(jù)流和請求加應(yīng)答兩種通訊模式,并支持偽中斷。
●可自動完成USB配置過程,完全不需要本地端控制器作任何處理。
●采用標(biāo)準(zhǔn)的USB1.1接口,即插即用,D+引腳內(nèi)置上接電阻。
●內(nèi)置4個端點,支持USB的控制傳輸、批量傳輸、中斷傳輸。
●帶有通用Windows驅(qū)動程序,可提供設(shè)備級接口和應(yīng)用層接口。
●具有通用本地8位數(shù)據(jù)總線,可用4線控制讀選通、寫選通、片選輸入和中斷輸出。
●占用16個地址,可選擇直接地址方式或者復(fù)用地址方式。
●內(nèi)置輸入輸出緩沖區(qū),能以中斷方式通知本地端控制器傳輸數(shù)據(jù)。
●內(nèi)置I2C主接口,因而應(yīng)用層可以直接讀寫外掛的I2C從設(shè)備。
●在主控方式下可以提供16根據(jù)輸入信號線或12根獨立控制的輸出信號線。
●內(nèi)置上電復(fù)位電路,可提供高電平有效復(fù)位輸出和低電平有效復(fù)位輸出。
●內(nèi)含可選的看門狗電路Watch-Dog,能為本地端控制器提供監(jiān)控。
●具有DIP28、SOP28、DIP24、CHIP等多種封裝形式。
2 引腳功能
CH371的引腳排列如圖1所示,表1所列是其引腳功能。
表1 CH371的引腳功能
28腳封裝
的引腳號
24腳封裝
的引腳號
引腳名稱
類 型
引 腳 說 明
28 24 VCC 電源 電源正端 12 9 GND 電源 接地 14 11 XI 輸入 晶體振蕩輸入端,帶偏置電阻 13 10 XO 輸出 晶體振蕩反相輸出端 10 7 D+ 雙向 USB D+數(shù)據(jù)線,內(nèi)置上拉電阻可控 11 8 D- 雙向 USB D-數(shù)據(jù)線 9 6 OFF 輸入 用于關(guān)閉D+上位電阻,高有效,帶下拉 2215 1912 D7D0 雙向 8位雙向數(shù)據(jù)總線,帶上拉,可直接輸入和獨立控制輸出 4 4 RD 輸入 讀選通輸入,低有效,帶上拉,同時用于看門狗的清除輸入 3 3 WR 輸入 寫選通輸入,低有效,帶上拉 27 23 CS 輸入 片選輸入,低有效,帶下拉 2 2 ALE 輸入 地址鎖存使能,高有效,帶上拉,在下降沿可鎖存數(shù)據(jù)總線的復(fù)用地址 1 1 INT 輸出 中斷輸出,傳輸成功,低有效 58 5部分支持 A3A0 雙向 4位地址輸入線,帶上拉,可直接輸入和獨立控制輸出 24 21 SCL 輸出 I2C接口時鐘線 23 20 SDA 雙向 I2C接口數(shù)據(jù)線,開漏輸出,帶上拉 25 22 RST 輸出 上電復(fù)位和看門狗復(fù)位,高有效 26 不支持 RST 輸出 上電復(fù)位和看門狗復(fù)位,低有效3 應(yīng)用
3.1 與USB總線的連接
圖2是CH371與USB總線的接口連接電路,CH371芯片可以直接使用USB總線的5V電源。電容C3和C4用于電源退耦;將電阻R1和R2串接在CH371與USB總線之間可進行阻抗匹配;晶振X1、電容C1和C2用于CH371芯片的時鐘振蕩電路。CH371芯片的SCL和SDA信號線可以直接連接I2C接口的從設(shè)備,如連接24COX器件以用來存儲系統(tǒng)斷電后不能丟失的重要數(shù)據(jù),也可以存儲身份識別數(shù)據(jù)、記費數(shù)據(jù)等,由于24COX中的數(shù)據(jù)只有計算機應(yīng)用層才能夠存取。
3.2 與單片機的接口電路
CH371芯片具有通用的被動并行接口,可以直接連接多種單片機、DSP和MCU。圖3所示是CH371與MCS-51系列單片機的接口電路,CH371可通過D7~D0、RD、WR、CS、ALE直接掛接到AT89C51的系統(tǒng)總線上。連接ALE而不連接A3~A0則采用復(fù)用地址方式,連接A3~A0而不連接ALE則采用直接地址方式。當(dāng)采用復(fù)用地址方式時,CH371的A3~A0腳空閑,此時可以參考主控方式將A3~A0用于LED驅(qū)動或狀態(tài)輸入等;當(dāng)采用直接地址方式時,應(yīng)該將CH371芯片的ALE引腳懸空或者接高電平,然后通過A3~A0直接輸入地址。該電路中,CH371可向AT89C51提供上電復(fù)位信號RST。CH371的中斷輸出INT連接到U2的外部中斷INTO,反相器U5用于簡單的地址譯碼,SRAM器件62256的地址為8000H-FFFFH,CH371的地址為0000H-7FFFH(實際只需要16個地址)。
3.3 主控方式應(yīng)用
圖4是CH371在主控方式下的應(yīng)用電路。該電路實際是基于CH371的主控方式設(shè)計的8通道數(shù)據(jù)采集器?梢钥闯觯喊–H371在內(nèi),該電路只用到了三個集成電路,并且不需要任何單片機、DSP、MCU等控制器。CH371芯片的雙向引腳A3~A0應(yīng)該設(shè)置為輸出,其中A3用于以低電平啟動模數(shù)轉(zhuǎn)換,A2~A0用于選擇采集通道,雙向引腳D7~D0應(yīng)該設(shè)置為輸入,用于輸入采集到的結(jié)果,CS、ALE用于輸入采集狀態(tài)。實際電路應(yīng)該采用精確的參考電壓,并添加輔助電路(如電源退耦電容等)。另外,也可以用自帶多通道選擇器的模數(shù)轉(zhuǎn)換芯片來代替U6和U7,如8通道AD芯片MAX158等。
3.4 與單片機的接口程序
下面是U2(MCS-51單片機)與U1(CH371)的接口參考程序:
;* * * * * * * * * * * * * * * * * * * * *
;需要主程序定義的參數(shù)
;CH371_PAGE EQU 00H;CH371所在的頁面地址,地址譯碼后自動片選
;CH371_SYSTEM EQU 02H;CH371系統(tǒng)功能設(shè)定寄存器的地址偏移
;CH371_CONFIG EQU 02H;CH371設(shè)備配置信息寄存器的地址偏移
;CH371_INT_SET EQU 06H;CH371中斷數(shù)據(jù)設(shè)定寄存器的地址偏移
;CH371_STATUS EQU 06H;CH371傳輸狀態(tài)信息寄存器的地址偏移
;CH371_LENGTH EQU 07H;CH371數(shù)據(jù)長度寄存器的地址偏移
;CH371_BUFFER EQU 08H;CH371O數(shù)據(jù)緩沖區(qū)的起始地址偏移
;SAVE_STATUS DATA 29H;保存?zhèn)鬏敔顟B(tài)信息,根據(jù)需要可選
;SAVE_LENGTH DATA 2AH;當(dāng)前數(shù)據(jù)緩沖區(qū)中的長度,用于保存下傳長度
;SAVE_BUFFER DATA 30H;數(shù)據(jù)緩沖區(qū),用于保存接收到的下傳數(shù)據(jù)
;* * * * * * * * * * * * * * * * * * * * *
;初始化子程序
;USE:ACC,DPTR
CH371_INIT:MOV DPH,#CH371_PAGE
;CH371所在的頁面地址,地址譯碼后自動片選MOV DPL,#CH371_LENGTH;CH371數(shù)據(jù)長度寄存器的地址偏移
圖3
MOV A,#OFH
MOVX @DPTR,A;置上傳數(shù)據(jù)長度寄存器為15,暫時沒有數(shù)據(jù)上傳
CLR A;尚未有數(shù)據(jù)下傳
MOV SAVE_LENGTH,A;保存下傳數(shù)據(jù)長度
SETB ITO;置外部信號為下降沿觸發(fā)
CLR IEO;清中斷標(biāo)志
SETB PXO;置高優(yōu)先級
SETB EXO;允許中斷
RET
;上傳數(shù)據(jù)子程序
;ENTRY:RO指向存放了準(zhǔn)備上傳數(shù)據(jù)的緩沖區(qū),R7準(zhǔn)備上傳的數(shù)據(jù)長度0至8
;USE:ACC,B,R0,R7,DPTR
CH371_UPLOAD:MOV B,R7;將數(shù)據(jù)長度暫存到B中
MOV DPH,#CH371_PAGE;CH371所在的頁面地址,地址譯碼后自動片選
MOV DPL,#CH371_BUFFER;CH371數(shù)據(jù)緩沖區(qū)的起始地址偏移
MOV A,R7;上傳數(shù)據(jù)長度
JZ CH371_UPLOAD_O;數(shù)據(jù)長度為0則不必寫入
CH371_UPLOAD_1:MOV A,@RO;讀取一字節(jié)的數(shù)據(jù)
INC RO;指向下一個數(shù)據(jù)的地址
MOVX @DPTR,A;寫到CH371的上傳數(shù)據(jù)緩沖區(qū)
INC DPL
DJNZ R7,CH371_UPLOAD-1;繼續(xù)讀取上傳數(shù)據(jù)直至結(jié)束
CH371_UPLOAD_0:MOV DPL,#CH371_LENGTH;CH371數(shù)據(jù)長度寄存器的地址偏移
MOV A,B
MOVX @DPTR,A;將本次數(shù)據(jù)的長度置入上傳數(shù)據(jù)長度寄存器
RET
;中斷服務(wù)子程序
;USE:堆棧6字節(jié),工作寄存器組1的RO,R7
CH371_INTER:PUSH PSW;現(xiàn)場保護
CLR IEO;清中斷標(biāo)志,防止重復(fù)執(zhí)行,對應(yīng)于INTO中斷
PUSH ACC
PUSH DPL
PUSH DPH
SETB RSO;PSW.3,切換至工作寄存器組1
MOV DPH,#CH371_PAGE;CH371所在的頁面地址,地址譯碼后自動片選
MOV DPL,#CH371_STATUS;CH371傳輸狀態(tài)信息寄存器的地址偏移
MOVX A,@DPTR;讀取傳輸狀態(tài)信息寄存器
MOV SAVE-STATUS,A;保存?zhèn)鬏敔顟B(tài)
MOV DPL,#CH371_LENGTH;CH371數(shù)據(jù)長度寄存器的地址偏移
JB ACC.0,CH371_INT_UP;傳輸狀態(tài)信息寄存器位0為1,則指示上傳完成
;是數(shù)據(jù)下傳完成中斷
MOVX A,@DPTR;讀取下傳數(shù)據(jù)長度寄存器
MOV SAVE_LENGTH,A;保持下傳數(shù)據(jù)長度
JZ CH371_INT_RET ;下傳數(shù)據(jù)長度為0,則直接退出中斷
MOV DPL,#CH371_BUFFER;CH371數(shù)據(jù)緩沖區(qū)的起始地址偏移
MOV RO,#SAVE-BUFFER;單片機內(nèi)部的數(shù)據(jù)緩沖區(qū),用于存放下傳數(shù)據(jù)
MOV R7,A ;用于讀取數(shù)據(jù)的計數(shù)
CH371_INT_DOWN:MOVX A,@DPTR;讀取一字節(jié)的下傳數(shù)據(jù)
INC DPL ;指向下一個數(shù)據(jù)的地址
MOV @RO,A;保存到數(shù)據(jù)緩沖區(qū)
INC RO
DJNZ R7,CH371_INT_DOWN;繼續(xù)讀取下傳數(shù)據(jù)直至結(jié)束
SJMP CH371_INT_RET ;接收完下傳數(shù)據(jù),退出中斷
;是數(shù)據(jù)上傳完成中斷
CH371_INT_UP:MOV A,#0FH;15
MOVX @DPTR,A ;置上傳數(shù)據(jù)長度寄存器為15,暫時沒有后續(xù)數(shù)據(jù)
CH371_INT_RET: ;中斷返回
POP DPH
POP DPL
POP ACC
POP PSW ;恢復(fù)寄存器并選擇工作寄存器組0
RETI ;中斷返回
;
;* * * * * * * * * * * * * * * * * * * * *
4 結(jié)束語
CH371芯片具有通用的被動并行接口,可以直接連接多種單片機、DSP、MCU等?梢灶A(yù)見,CH371將在USB產(chǎn)品設(shè)計中大顯身手。
【USB總線接口芯片CH371及其應(yīng)用】相關(guān)文章:
PCI總線通用接口芯片CH361及其應(yīng)用08-06
基于CH371的USB接口虛擬示波器設(shè)計08-06