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