摘 要: 介紹了一種利用USB通信協(xié)議的方法實現下位機與上位機之間的通信傳輸。該方法以滿足符合標準的USB2.0協(xié)議為基礎,以EZ-USB FX2為設計的基礎構架,以Cypress公司推出最具性價比的一種內嵌增強51單片機的芯片CY7C68013為核心,來構建下位機與上位機的數據傳輸通道。給出了系統(tǒng)的硬件設計方案、固件驅動程序以及計算機端的應用程序設計方法及流程。通過USB數據通信表明,USB2.0高速接口的帶寬能夠達到480 Mb/s的通信速率,能夠充分滿足普通接口數據傳輸所需速率,有效提高了傳輸效率,并且能將接收到的數據保存在計算機系統(tǒng)中,以備使用。因此,USB2.0通信接口的設計在數據傳輸的實際運用中有值得探索的價值。
關鍵詞: 數據傳輸;USB2.0;高速接口;相互通信;驅動程序
0 引言
隨著多媒體技術的發(fā)展,對外設與主機之間的數據傳輸率有了更高的要求,且傳統(tǒng)的計算機與外設通過串行、并行或PCI總線傳輸,要占用計算機系統(tǒng)資源,擴展性較差,而且傳輸速率和通信距離有限,已無法滿足計算機外設發(fā)展需求[1],對于傳統(tǒng)的RS232串口通信來說也很難滿足與上位機之間所需要的10 Mb/s以上的通信速率,因此,USB總線技術應運而生。目前,國內外主要采用USB1.1和USB2.0這兩種規(guī)范,USB1.1主要用于低速傳輸要求的場合,支持1.5 Mb/s和12 Mb/s傳輸速率。而USB2.0規(guī)范則能提高到480 Mb/s[2],盡管如此,在某些特定的傳輸速率與外圍設備系統(tǒng)中,外設與USB接口上仍存在不可忽視的瓶頸。
但是由Cypress公司生產的USB2.0控制器CY7C68013提供了一種獨特的接口方式,即通用可編程接口(GPIF)方式,不僅很容易滿足USB通信接口的傳輸要求,并且較傳統(tǒng)接口方式而言有如下兩大優(yōu)點[3]:(1)數據傳輸過程中不需要CPU的干涉,使得傳輸速率明顯提高,從而充分利用USB2.0的傳輸寬帶;(2)由軟件設置讀寫控制,提高傳輸穩(wěn)定性。因此,本文把GPIF接口功能的優(yōu)勢綜合利用在設計中并合理配置,使數據能夠快速下載并上傳到計算機上保存及顯示。
1 USB接口硬件電路設計
1.1 系統(tǒng)總體設計框圖
系統(tǒng)的總體設計由電源電平轉換電路、串行EEPROM電路、主芯片最小系統(tǒng)電路、引出口電路和PC-USB接口5部分組成,連接框圖如圖1所示。
該USB高速接口模塊是作為與上位機通信傳輸的一個重要橋梁,所以PC-USB接口必不可少,用USB線連接完成該電路與計算機的傳輸總線,采用CY7C68013芯片的GPIF接口模式來完成控制信號的發(fā)送與數據的讀取。因此,該模塊的電源也由USB總線提供。由于USB接口提供的是5 V/500 mA的電源,而由CY7C68013A芯片資料得知工作電壓為3.3 V,即需要將5 V電壓轉換成3.3 V的電平轉換模塊。串行EEPROM采用24C64(8 KB)來存放PID/VID程序,引出口電路將芯片主要管腳引出,使得與其他外設連接提供方便。
1.2 主芯片最小系統(tǒng)
采用的CY7C68013A芯片,較100和128引腳封裝,其56引腳封裝的缺少部分管腳功能,雖然不能在線仿真,但可進行簡單調試,通過廠商的請求可以完成。具體設計如圖2所示。
其最小系統(tǒng)中包含24 MHz晶振振蕩電路,晶振兩邊的電容大小范圍可取22 pF~30 pF和復位電路,復位電路1 k/0.1 F的RC電路,系統(tǒng)能夠正常上電復位。SCL是漏極開路輸出,SDA引腳是漏極遲滯輸入,在與EEPROM的SCL和SDA連接時,必須外接1.5 k~10 k的上拉電阻。PB0-PB7、PD0-PD7均為雙向I/O口引腳,也是復用引腳,可分別作為GPIF數據總線的低8位和高8位。CLKOUT引腳時鐘輸出可為12/24/48 MHz,作為其他外設的時鐘。端點2配置為寫設備地址,端點6配置為讀設備地址,每個端點都設置為4個緩沖區(qū)[4]。IFCLK為接口時鐘,作為同步時鐘數據的輸入輸出。
1.3 硬件部分工作過程
數據傳輸通信的主要控制芯片為CY7C68013,主要完成信號處理和單片機控制功能。系統(tǒng)的數據傳輸模塊通過USB連接到計算機,按下復位鍵后上電復位,功能設備將被識別并枚舉[1]。在設計中將程序下載到串行E2PROM中,主控芯片首先檢測FX2的啟動模式,若檢測到E2PROM存在且首字節(jié)是0xC2,則按C2加載。下載固件,根據USB描述符配置信息上電復位完成重枚舉[5]。再轉移到片內8.5 KB的RAM存放數據和程序進行軟配置,配置特定端點緩沖區(qū)來進行數據的高速傳輸與讀取。其中采用GPIF可編程接口方式利用FX2的GPIF方式構建USB數據傳輸通道,由軟件編程輸出讀寫控制波形讀取FIFO標識,控制FIFO的選通,可對外部通用總線接口進行訪問。
2 USB接口軟件程序設計
2.1 固件程序設計
固件程序是指用于控制硬件系統(tǒng)、完成芯片的初始化的代碼,存儲在USB接口芯片或微控器中,所以FX2要先下載固件再使用,處理各種設備的請求,完善對芯片的配置,對主機與外部設備間的數據傳輸作出相應處理,達到主機與外設通信的目的。Cypress公司為了降低用戶對固件編程的難度,提供了一套配套的固件程序開發(fā)框架,可直接在Keil C51環(huán)境中進行編譯,并可在固件庫里調用一些函數、常量或數據結構來修改自己的程序。
固件框架的源文件包括由Keil提供的8051頭文件,庫函數聲明以及變量、宏和數據類型定義,FX2寄存器頭文件,固件框架源文件,用戶可修改的鉤子函數,用戶可修改的USB描述符列表,EZ-USB庫文件和中斷跳轉目標文件[6]。在上電復位程序起始時,固件程序首先會自動初始化所有的內部變量,接著調用初始化函數TD_Init(),固件就會把USB接口設置為未配置狀態(tài)并開啟中斷使能,循環(huán)延時間隔1 s后開始設備重枚舉直到端點0接收到Setup包為止退出循環(huán)。只要檢測到了Setup包,固件構架就會啟動與PC主機合作的分配器,執(zhí)行任務調度。固件程序框架如圖3所示。
2.2 應用程序設計
應用程序編寫最主要的問題是實現上位機向外部設備發(fā)送指定命令數據包,設備能夠接收到上位機傳遞的指定數量的數據以及在通過執(zhí)行命令后能夠向其返送數據,達到上位機與設備能夠相互通信的效果。主機應用程序通過驅動程序來完成對設備的控制和通信,采用具有友好界面的VC++6.0軟件編寫測試系統(tǒng)的應用程序,充分利用VC++的MFC框架的豐富資源,在與設備通信時首先通過Win32函數CreateFile()來取得訪問設備驅動程序的句柄[7]。得到句柄后向設備提交相應的IOCTL控制碼,進行讀寫和控制操作完成相應操作后,通過Win32函數DeviceIoControl()關閉設備結束一次數據傳輸操作。在用戶編寫的TD_Poll()函數中,檢測到有命令數據包傳送,單片機將讀取EP2端點的數據,直到EP2端點的數據為空,獲得上位機發(fā)送來的命令數據包。根據命令字的定義來執(zhí)行相應操作,并向命令EP6端點寫數據發(fā)送給主機。
3 測試結果
在系統(tǒng)測試中,單片機與上位機的通信由用戶自己編譯的執(zhí)行軟件BulkLoop.exe來體現。
由軟件編程向單片機發(fā)送數據,由控制按鈕點擊實現特定指令發(fā)送,在沒有獲取設備信息時顯示的是運用軟件界面信息,如圖4(a)所示,單片機在接收到數據處理后接口電路中LED燈亮暗顯示,同時獲取設備信息。單片機通過模擬按鍵向上位機發(fā)送特定數據,上位機接收數據,顯示的是設備信息,如圖4(b)所示。
4 結論
利用Cypress公司提供的USB2.0高速接口芯片CY7C68013A芯片,完成了硬件設計與軟件程序的設計,使之達到了單片機與上位機通信的效果。在以后各個領域上的數據傳輸通信存在著必不可少的使用價值。
芯片所具有的可編程特性大大提高了系統(tǒng)工作的準確性與可靠性,數據穩(wěn)定性高,不易丟失,便于數據的傳輸和處理。再加上USB接口設備具有熱插拔和即插即用的特性,使模塊更具有較高的實用價值,是值得推廣的優(yōu)良設計。
參考文獻
[1] 劉吉名,裴東興.基于CY7C68013的USB2_0數據傳輸模塊設計[J].電子測量實驗室,2008,31(3):94-96.
[2] 張晶.基于USB2.0接口的數字圖像通信模塊設計[D].南京:南京理工大學,2008.
[3] 李英偉,王成儒,練秋生,等.USB2.0原理與工程開發(fā)(第二版)[M].北京:國防工業(yè)出版社,2007.
[4] 趙林,孟令軍,于磊,等.基于CY7C68013A的USB2.0高速接口設計[J].電子技術應用,2014,40(1):131-133.
[5] 陳玉輝,鐘洪聲,李廷軍.基于CY7C68013a的USB2.0接口設計[J].大眾科技,2010,134(10):23-24.
[6] 趙志勇.USB2.0通信接口設計[J].兵工自動化,2005,24(3):56-57.
[7] 胡文靜,陳松.基于EZ-USB芯片CY7C68013的驅動程序設計[Z].岳陽:華東師范大學,2005.