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