目前,,USB接口的使用越來越廣泛,許多設(shè)備上都提供了USB接口,。傳統(tǒng)的USB控制器需要使用包括數(shù)據(jù)線和控制線在內(nèi)的十多根線,,占用了大量的CPU資源。而現(xiàn)代設(shè)備正在向體積小,、功能強(qiáng)的方向發(fā)展,,CPU更是要求表貼封裝,功耗低,,其自身資源非常有限,,所以在擴(kuò)展接口方面必須要盡可能少地占用已有芯片資源。本文介紹了如何使用MAX3420進(jìn)行USB接口擴(kuò)展,。MAX3420提供了SPI接口,,只需3~4根線便可實(shí)現(xiàn)USB接口。
1 MAX3420簡(jiǎn)介
MAX3420是Maxim公司推出的一款全速USB外設(shè),,包括必要的數(shù)字邏輯和模擬電路,,支持USB2.O協(xié)議。MAX3420內(nèi)建全速收發(fā)器,,支持±15kV的ESD保護(hù),,可以編程控制USB總線的連接和斷開;內(nèi)含的串行接口引擎可以控制底層的USB協(xié)議細(xì)節(jié),,如錯(cuò)誤校驗(yàn)和總線重連接,。MAX3420通過SPI接口操作其內(nèi)部寄存器,工作頻率為26 MHz,,任何支持SPI主模式的CPU只使用3~4根線便可增加USB功能,。
2 MAX3420的外圍電路
作為一款全速USB外設(shè),MAX3420的外圍電路并不復(fù)雜,,如圖1所示,,圖中采用USB自身供電方式,右上角的3.3V穩(wěn)壓器表示產(chǎn)生3.3 V電壓,、為CPU供電的電壓轉(zhuǎn)換芯片,,常用的有AS2830、LMlll7等,。與CPU連接的引腳共有6個(gè),,其名稱和功能如表l所列。其中,,USB配置必需的引腳是SCLK,、SS和MISO三個(gè)。芯片的供電電壓為0~4 V,可以采用3.3 V供電,;采用12 MHz晶振,,內(nèi)部鎖相環(huán)進(jìn)行4倍頻;還提供了4個(gè)通用輸出口和4個(gè)通用輸入口,,便于CPU的I/O口擴(kuò)展,。
帶有SPI接口的CPU,與MAX3420的接口十分方便,;如果不帶SPI接口,,則也可用I/O口來實(shí)現(xiàn)SPI的功能。圖2為CPU與MAX3420的接口原理圖,。
3 MAX3420的工作方式
MAX3420的SPI接口可工作于以下兩種工作方式:全雙工方式(MOSI輸入/MISO輸出)和半雙工方式(MOSI輸入/輸出),。
3.1 全雙工方式
全雙工方式下的讀操作:
①SS為高,MAX3420未選中,,MISO為高阻態(tài),。
②當(dāng)SCLK為靜止態(tài)時(shí),SS了,,低,,MAX3420選中;打開MISO輸出緩沖,,將要發(fā)送數(shù)據(jù)的最高位送到MISO輸出,。
③SPI主方式下,首先的8個(gè)時(shí)鐘脈沖將命令由MOSI發(fā)送,;MISO在SCLK上升沿輸出USB狀態(tài)位。
④8個(gè)時(shí)鐘脈沖以后,,SS為高,,MAX3420停止工作,MISO輸出高阻態(tài),。在SCLK下降沿,,下一個(gè)輸出數(shù)據(jù)的最高位在MISO順序輸出。
全雙工方式下的寫操作:
①SPI主方式下設(shè)置時(shí)鐘為靜止態(tài),,SS為高,。
②SS為低,將要寫的數(shù)據(jù)的最高位放到MOSI輸入,。
③SPI主方式下.首先的8個(gè)時(shí)鐘脈沖將命令由MOSI發(fā)送,;MISO在SCLK上升沿輸出USB狀態(tài)位。
④8個(gè)時(shí)鐘脈沖以后,,SS為高,,MAX3420停止工作。
全雙工方式下的讀/寫時(shí)序圖如圖3所示。
3.2 半雙工方式
半雙工方式下MISO為高阻態(tài),,MOSI為雙向,。由于只有一根線,因此半雙工方式下USB狀態(tài)位不再有效,。半雙工方式下的讀/寫操作:
①SS為高,,MAX3420未選中,MOSI可以為任意值,。
②當(dāng)SCLK為靜止態(tài)時(shí),,SS為低,MAX3420選中,;將要寫的數(shù)據(jù)的最高位送到MOSI輸入,。
③SPI主控制器打開輸出驅(qū)動(dòng),首先的8個(gè)時(shí)鐘脈沖將命令在SCLK上升沿由MOSI發(fā)送,;8個(gè)時(shí)鐘脈沖后,,SS為高。
④如果要寫SPI數(shù)據(jù),,則SPI主控制器保持打開輸出驅(qū)動(dòng),,在SCLK脈沖下,順序?qū)?shù)據(jù)位送到MOSI引腳,;如果要讀SPI數(shù)據(jù),,則在8個(gè)時(shí)鐘脈沖后,SPI主控制器關(guān)閉輸出驅(qū)動(dòng),,開始從MOSI按時(shí)鐘脈沖讀入數(shù)據(jù),。
⑤SS為高.MAX3420停止工作。
半雙工方式下的讀/寫時(shí)序圖如圖4所示,。
4 USB程序流程
MAX3420共有4個(gè)端點(diǎn),,即EP0~EP3。其中:EP0為64字節(jié)的雙向控制端點(diǎn),;EPl為2×64個(gè)字節(jié)的雙緩沖,、批處理/中斷輸出端點(diǎn);EP2為2×64個(gè)字節(jié)的雙緩沖,、批處理/中斷輸入端點(diǎn),;EP3為64字節(jié)的批處理/中斷輸入端點(diǎn)。EPO主要用于枚舉過程中發(fā)送命令,,EP1和EP2主要用于完成大批量數(shù)據(jù)的收發(fā),。如圖5所示,USB2.0協(xié)議由硬件接入層,、中間層及上層應(yīng)用3部分構(gòu)成,。其中:硬件接入層是與CPU緊密聯(lián)系的,其他兩層是與硬件無關(guān)的。硬件接入層主要實(shí)現(xiàn)了兩個(gè)函數(shù)outport()和inport(),。這兩個(gè)函數(shù)是整個(gè)USB協(xié)議在硬件上運(yùn)行的基礎(chǔ),,只要在硬件接入層針對(duì)不同的CPU和MAX3420實(shí)現(xiàn)了這兩個(gè)函數(shù),便可以保證USB接口的正常工作,。
本文以PICl8F2520和MAX3420為例,,在全雙工方式下說明以上兩個(gè)函數(shù)的示意性代碼。
void outport(unsigned char port,,unsigned char value){
使能CPU的SPI模式,;
設(shè)置CUP的SPI為主共和方式,MAX3420的SPI為從工作方式,;
使能CPU的SPI模式,;
設(shè)置CPU的SPI為主工作方式,MAX3420的SPI為從工作方式,;
USB2.0協(xié)議規(guī)定USB接口工作于被動(dòng)工作方式,,協(xié)議中間層主要包括總線重連接、EP0收發(fā)和中斷處理等幾部分,,其工作流程如圖6所示,。協(xié)議上層應(yīng)用程序由程序員按照規(guī)范根據(jù)具體需要編寫。
5 總 結(jié)
將MAX3420用于汽車車載故障診斷儀的USB接口設(shè)計(jì),,實(shí)際傳輸速率可達(dá)20 Mbps左右,,完全可以滿足對(duì)汽車總線上傳輸數(shù)據(jù)的實(shí)時(shí)采集要求;總共占用CPU的6個(gè)引腳,,用于與MAX3420的控制,、數(shù)據(jù)接口,實(shí)際使用效果良好,。