摘 要:通用串行總線USB的特點(diǎn)是結(jié)構(gòu)簡(jiǎn)單并且易于擴(kuò)展,處理速度快,適合大規(guī)模數(shù)據(jù)傳輸,因此得到廣泛的應(yīng)用。基于單片機(jī)芯片STC90C51和USB通訊協(xié)議,對(duì)USB通訊系統(tǒng)的硬件電路模塊和軟件程序模塊提出設(shè)計(jì),實(shí)現(xiàn)單片機(jī)和PC機(jī)之間的雙向通信。
關(guān)鍵詞:通用串行總線;單片機(jī);數(shù)據(jù)通訊系統(tǒng)
1 概述
近年來,3D打印技術(shù)成為研究熱點(diǎn),而其中又涉及到大批量數(shù)據(jù)的傳輸和處理,本設(shè)計(jì)正是在這一背景下提出,旨在解決三維打印中大批量數(shù)據(jù)的傳輸問題,縮短數(shù)據(jù)傳輸時(shí)間,進(jìn)而縮短三維打印時(shí)間。本項(xiàng)目是一套基于單片機(jī)的USB通訊系統(tǒng),其需要實(shí)現(xiàn)的成果是完成數(shù)據(jù)的大批量傳輸。主要開展的工作是提高數(shù)據(jù)傳輸速度。
2 系統(tǒng)整體設(shè)計(jì)
系統(tǒng)整體設(shè)計(jì)分為硬件電路和軟件程序,硬件電路包含單片機(jī)STC90C51,USB20D之間的布線連接設(shè)計(jì),為方便使用單片機(jī),設(shè)計(jì)中我們使用HC6800EM3-V2.2開發(fā)板,自帶仿真器。軟件程序包括上位機(jī)界面設(shè)計(jì),USB程序設(shè)計(jì)和單片機(jī)芯片STC90C51應(yīng)用程序設(shè)計(jì)。
STC90C51RD+系列單片機(jī)是宏晶科技推出的超強(qiáng)抗干擾,高速,低功耗的單片機(jī)。指令代碼完全兼容傳統(tǒng)8051單片機(jī)。內(nèi)部集成MAX810專用復(fù)位電路。在要求不高的情況下,可在復(fù)位腳外接電阻電容復(fù)位。其工作電壓為5.5V-3.3V。
USB接口模塊使用的是西安達(dá)泰電子有限責(zé)任公司的產(chǎn)品USB20D,它的特點(diǎn)是:(1)封裝了USB協(xié)議,用戶只需操作并行數(shù)據(jù)讀寫,就可通過USB口傳輸數(shù)據(jù)。(2)支持I/O讀寫,高速DMA讀寫。(3)DMA讀寫速度(下位機(jī))最高可達(dá)96MB/S,上位機(jī)最高傳輸速度可達(dá)32MB/S。(4)系統(tǒng)驅(qū)動(dòng)文件,DLL動(dòng)態(tài)鏈接庫,用戶不必編寫任何驅(qū)動(dòng)程序。有兩種工作模式,一種是IO模式,即普通IO讀寫操作模式,另一種是DMA模式,即批量數(shù)據(jù)傳輸模式。
3 硬件系統(tǒng)設(shè)計(jì)
P0.0到P0.7分別與USB20D模塊的數(shù)據(jù)總線D0~D7相連接,USB上的控制信號(hào)線也應(yīng)與STC90C51的P2,P3口進(jìn)行配置和連接。選定P2.0與批量數(shù)據(jù)傳輸標(biāo)示的管腳DMAING相連接,選定P2.1與傳輸方向的管腳DMADIR相連接,選定P2.2與代表緩沖區(qū)空的管腳FE相連接,選定P2.3與代表緩沖區(qū)滿的管腳FF相連接,選定P2.5與輸出使能端DMAOE相連接,選定P2.6與數(shù)據(jù)結(jié)束標(biāo)志PTKEND相連接,選定P3.4與模塊選通管腳DMACS相連接,選定P3.6與DMA寫信號(hào)DMAWR相連接,選定P3.7與DMA讀信號(hào)DMARD相連接。主機(jī)向單片機(jī)提供電源,單片機(jī)直接通過開發(fā)板上的接口與上位機(jī)進(jìn)行連接。
4 軟件系統(tǒng)設(shè)計(jì)
當(dāng)數(shù)據(jù)從USB向單片機(jī)傳輸時(shí),先等待。當(dāng)檢測(cè)到USB模塊的批量數(shù)據(jù)傳輸標(biāo)示DMAING為高電平,即工作在DMA模式下;同時(shí)表示傳輸方向的DMADIR為低電平,表示為輸出狀態(tài),數(shù)據(jù)從主機(jī)到設(shè)備進(jìn)行傳輸;同時(shí)緩沖區(qū)空位FE為高電平,代表緩沖區(qū)有數(shù)據(jù),能從USB模塊讀數(shù)據(jù)。只有DMAING,DMADIR和FE三個(gè)信號(hào)同時(shí)滿足要求,才能進(jìn)行下一步,否則將一直等待。接著外部邏輯使用nDMARD脈沖從本模塊的緩沖區(qū)內(nèi)讀取主機(jī)發(fā)來的數(shù)據(jù)。DMA模式時(shí),可以通過函數(shù)USB20D_STARTDMA設(shè)置數(shù)據(jù)總線為8位或者16位,根據(jù)需要設(shè)置即可。
當(dāng)數(shù)據(jù)從單片機(jī)向USB傳輸時(shí),過程與上面大體相似。只是需要等待DMAING為高電平,DMADIR為高電平,同時(shí)緩沖區(qū)滿位FF為高電平,代表緩沖區(qū)有空間,能給USB模塊寫數(shù)據(jù)。當(dāng)三個(gè)信號(hào)同時(shí)滿足要求,USB模塊繼續(xù)進(jìn)行下一步--外部邏輯使用nDMAWR脈沖把數(shù)據(jù)寫入本模塊的緩沖區(qū)內(nèi),然后數(shù)據(jù)從本模塊的緩沖區(qū)內(nèi)傳輸?shù)街鳈C(jī)。完成操作后,系統(tǒng)又跳回到最開始的等待讀數(shù)據(jù)的過程中。
讀寫過程中分別使用了USB20D_DMAREAD和USB20D_DMA
WRITE完成主機(jī)從設(shè)備讀數(shù)據(jù)和主機(jī)向設(shè)備寫數(shù)據(jù)。
使用軟件對(duì)單片機(jī)與USB通訊進(jìn)行程序編寫,在對(duì)八個(gè)數(shù)據(jù)總線所連接的P0口進(jìn)行配置后,對(duì)DMAING、DMADIR、FE、FF、DMAOE、PTKEND、DMACS、DMAWR和DMARD九個(gè)特殊功能管腳進(jìn)行配置,并根據(jù)DMA模式工作流程圖進(jìn)行程序的編寫,現(xiàn)給出USB20DDMA模式讀操作的程序,寫操作程序?qū)ζ溥M(jìn)行修改即可實(shí)現(xiàn)。
rx: if ( (DMAING == 1) (DMADIR == 0) (FIFOEMPTY == 1))
{DMAOE = 0;
for(t=0;t<8;t++)
{P0 = 0xff;DMARD = 0;
buf[t] = P0;_nop_( );
DMARD = 1;_nop_( );}
goto uart;}
else { goto rx;}
uart: DMAOE = 1;
for(i=0;i<8;i++)
{SBUF = buf[i];_nop_( );
while(TI == 1) {TI = 0;}
delay(3);}
DMAING = 1;DMADIR = 1;FIFOFULL = 1;
參考文獻(xiàn)
[1]黃建新.單片機(jī)原理、接口技術(shù)及應(yīng)用[M].化學(xué)工業(yè)出版社,
2009,8.
[2]張俊.胡向東.基于DSP的USB2.0高速通信接口設(shè)計(jì)與實(shí)現(xiàn)[J].重慶郵電學(xué)院學(xué)報(bào)(自然科學(xué)版),2006(6).