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