• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 關(guān) 閉

    新聞中心

    EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > USB總線接口芯片CH371及其應(yīng)用

    USB總線接口芯片CH371及其應(yīng)用

    作者: 時(shí)間:2005-02-14 來(lái)源:網(wǎng)絡(luò) 收藏

    摘要:371是一種新型通用芯片。利用該芯片可在不了解任何協(xié)議或固件程序甚至驅(qū)動(dòng)程序的情況下,輕松地將并口或串口產(chǎn)品升級(jí)到接口。文中介紹了該接口芯片的主要特點(diǎn)和引腳功能,給出了371與其它總線進(jìn)行接口的幾種應(yīng)用電路,同時(shí)給出了371與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接口。

    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)
    引腳名稱(chēng)類(lèi) 型

    引 腳 說(shuō) 明

    2824VCC電源電源正端
    129GND電源接地
    1411XI輸入晶體振蕩輸入端,帶偏置電阻
    1310XO輸出晶體振蕩反相輸出端
    107D+雙向USB D+數(shù)據(jù)線,內(nèi)置上拉電阻可控
    118D-雙向USB D-數(shù)據(jù)線
    96OFF輸入用于關(guān)閉D+上位電阻,高有效,帶下拉
    22151912D7D0雙向8位雙向數(shù)據(jù)總線,帶上拉,可直接輸入和獨(dú)立控制輸出
    44RD輸入讀選通輸入,低有效,帶上拉,同時(shí)用于看門(mén)狗的清除輸入
    33WR輸入寫(xiě)選通輸入,低有效,帶上拉
    2723CS輸入片選輸入,低有效,帶下拉
    22ALE輸入地址鎖存使能,高有效,帶上拉,在下降沿可鎖存數(shù)據(jù)總線的復(fù)用地址
    11INT輸出中斷輸出,傳輸成功,低有效
    585部分支持A3A0雙向4位地址輸入線,帶上拉,可直接輸入和獨(dú)立控制輸出
    2421SCL輸出I2C接口時(shí)鐘線
    2320SDA雙向I2C接口數(shù)據(jù)線,開(kāi)漏輸出,帶上拉
    2522RST輸出上電復(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ù)采集器。可以看出:包括CH371在內(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等。可以預(yù)見(jiàn),CH371將在USB產(chǎn)品設(shè)計(jì)中大顯身手。



    關(guān)鍵詞: USB CH 總線接口

    評(píng)論


    相關(guān)推薦

    技術(shù)專(zhuān)區(qū)

    關(guān)閉
    主站蜘蛛池模板: 桐梓县| 嘉义县| 股票| 嘉祥县| 普陀区| 小金县| 丹东市| 额敏县| 沅江市| 吴忠市| 永定县| 伊川县| 辉南县| 明星| 临桂县| 铁岭县| 娄烦县| 武陟县| 交城县| 宾川县| 调兵山市| 旬阳县| 交口县| 无为县| 梅州市| 涪陵区| 安丘市| 三门县| 阜宁县| 西吉县| 九龙坡区| 昌乐县| 石泉县| 黄浦区| 富平县| 万盛区| 常州市| 台安县| 钦州市| 泸定县| 牟定县|