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