基于CY7C68013的高速數據傳輸系統的設計

發(fā)布時(shí)間:2010-11-24 16:34    發(fā)布者:eetech
關(guān)鍵詞: CY7C68013 , 數據傳輸
USB控制器是以USB串口引擎為主的專(zhuān)用集成電路,并可延伸至對其進(jìn)行管理的MCU以及相應的軟硬件。目前市場(chǎng)上供應的USB控制器主要有2種:帶USB接口的單片機(MCU)或純粹的USB接口芯片。帶USB接口的單片機可分為2類(lèi):一類(lèi)是從底層設計專(zhuān)用于USB控制的單片機,如Cypress公司的CY7C63513、CY7C64013等,由于開(kāi)發(fā)工具的專(zhuān)用性,往往應用于各種專(zhuān)業(yè)應用場(chǎng)合,如微機主板等[2-4];另一類(lèi)是增加了USB接口的普通單片機,如Intel公司的8X931、8X930以及Cypress公司的EZ-USB,由于均基于8051內核,因而得到了廣泛應用。

1 CY7C68013與系統結構簡(jiǎn)介

Cypress公司的CY7C68013芯片是集成USB2.0協(xié)議的微處理器,支持12 Mb/s的全速傳輸和480 Mb/s的高速傳輸,具有控制傳輸、中斷傳輸、塊傳輸和同步傳輸4種傳輸方式,內部包括一個(gè)增強型8051處理器內核、一個(gè)串行接口引擎(SIE)、一個(gè)USB收發(fā)器、8.5 KB片上RAM和4 KB FIFO存儲器以及一個(gè)通用可編程接口(GPIF)。8051可工作在48 MHz/24 MHz/12 MHz時(shí)鐘頻率,內部可自動(dòng)產(chǎn)生480 MHz的頻率供USB2.0串行收發(fā)引擎使用。由于數據緩沖器與SIE相連接,數據進(jìn)入收發(fā)器后,通過(guò)SIE可直接轉向FIFO,通過(guò)8 bit或16 bit數據接口與外設連接,存取數據。微控制器不參與數據傳輸,但允許以FIFO或RAM的方式訪(fǎng)問(wèn)這些共享FIFO,從而實(shí)現低速控制、高速傳輸。CY7C68013有GPIF/SLAVE FIFO/GPIO 3種接口模式,本系統采用Slave FIFO接口模式,選用控制傳輸和塊傳輸2種方式,外部控制器可像普通FIFO一樣對FIFO進(jìn)行讀寫(xiě)。

本數據傳輸系統分為3部分:發(fā)送端和接收端、CY7C68013控制器、具有并/串(或串并轉換)功能的CPLD芯片(MAX7128)以及光纖傳輸模塊。其中,CY7C68013和MAX7128之間采用并行連接方式,MAX7128與激光發(fā)送(接收)模塊間是串行連接,如圖1(a)所示。




圖1(a)中,主機將數據發(fā)送到CY7C68013端點(diǎn)FIFO緩沖器中,然后CY7C68013將端點(diǎn)FIFO中的數據分字節放到一組I/O口上,并且使能讀信號,MAX7128讀取I/O上的邏輯值,當接收512 B后,MAX7128將這512 B的數據從低到高串行發(fā)送給激光發(fā)送模塊;數據經(jīng)過(guò)光纖傳輸,進(jìn)入激光接收模塊,輸出串行信號,通過(guò)MAX7128實(shí)現串并轉換,數據寬度為8 bit,通過(guò)CY7C68013的從屬FIFO的寫(xiě)入時(shí)序即可將數據寫(xiě)入CY7C68013的端點(diǎn)緩沖器中。

USB數據傳輸接口開(kāi)發(fā)分為4個(gè)層次,接口硬件、接口軟件、驅動(dòng)和應用程序如圖1(b)所示。

2 固件程序設計

由于高速數據傳輸不需要固件程序參與,固件程序僅僅處理主機的發(fā)送請求。在發(fā)送端,固件將數據放置到I/O口上供MAX7128讀;在接收端,MAX7128完成串并轉換后,將數據用特定時(shí)序寫(xiě)入CY7C68013。此時(shí)只需設定寄存器,固件程序相對簡(jiǎn)單,圖2為發(fā)送和接收固件程序流程。




CY7C68013芯片固件程序負責處理主(從)機發(fā)送來(lái)的各種請求,以完成與外圍電路間的各種數據傳輸。本系統固件一共包含九個(gè)程序文件,其中的頭文件分別定義了CY7C68013中的寄存器名和特殊功能寄存器、通用的CY7C68013常量、數據類(lèi)型和宏、特殊功能寄存器所需要的同步延遲宏、用來(lái)描述CY7C68013狀態(tài)的各種USB描述符、INT2和INT4中斷跳轉表等。主函數負責處理標準USB請求和自定義請求,控制整個(gè)硬件系統的運行。接收端固件主循環(huán)不用做任何操作,與發(fā)送端程序流程圖完全相同。其固件運行的主程序清單如下,負責處理主機發(fā)出的各種USB請求。
……
TD_Init();//初始化用戶(hù)設備
EZUSB_IRQ_ENABLE();//使能USB中斷(INT2)
EZUSB_ENABLE_RSMIRQ();//使能喚醒中斷
INTSETUP |=(bmAV2EN | bmAV4EN);//使能INT2
//和INT4中斷跳轉向量
USBIE |=bmSUDAV | bmSUTOK | bmSUSP | bmURES |
bmHSGRANT;//使能所選擇的中斷
EA=1;//打開(kāi)8051中斷
UsbDisconnect();
CKCON=(CKCON&("bmSTRETCH)) | FW_STRETCH_
VALUE;//設為0值
Sleep=FALSE;//清除sleep標志
while(TRUE)//主循環(huán)
{
  if(GotSUD)//等待SETUP令牌數據的到來(lái)
  {
   ParseControlTransfer();//處理SETUP令牌數據
   GotSUD=FALSE;//清除SUDAV標志
  }
  if (Sleep)
  {
   Sleep=FALSE;//清除sleep標志
   do
   {
   EZUSB_Susp();//置8051為空閑
   }
   while(!Rwuen&&EZUSB_EXTWAKEUP());
   EZUSB_Resume();//從空閑狀態(tài)恢復
  }
  TD_Poll();//完成用戶(hù)任務(wù)
}
……
需要強調的是:固件程序設計完成后需要進(jìn)行調試,確保系統硬件正常工作。

(1)工作時(shí)鐘頻率的確定:晶振兩引腳對地電壓均為1.6 V左右,此時(shí)CLKOUT引腳默認輸出為24 MHz,當輸出48 MHz時(shí),電壓為2.5 V。

(2)電平觸發(fā)中斷方式:中斷后一定要讀上次傳輸狀態(tài)寄存器(命令40 H"45 H),以清除中斷寄存器中的中斷標志,這樣中斷輸出才能變回高電平。

(3)使能端口:接收到Setup包后,必須用ACKsetup命令重新使能端口為低電平。

(4)緩沖區數據標志:在向IN端點(diǎn)寫(xiě)完數據后,必須設置EP2BCH,指明緩沖區中的數據有效,示意可以發(fā)送到主機。當IN端點(diǎn)的數據被外設讀走后,一定要調用OUTPKTEND來(lái)清除緩沖區數據,否則無(wú)法向IN端點(diǎn)寫(xiě)入數據。

在USB設備枚舉的過(guò)程中,可采用USB調試工具BusHound軟件來(lái)抓取它和主機的通信數據進(jìn)行分析,以檢查硬件和固件程序的工作是否正確。

3 驅動(dòng)程序設計

為了配合CY7C68013的工作,需要有驅動(dòng)程序[6,7]以使上位機程序能正常訪(fǎng)問(wèn)USB芯片。以Cypress公司提供的參考程序為基礎,增加自定義控制請求即可。

由于驅動(dòng)程序必須和系統的總線(xiàn)驅動(dòng)進(jìn)行通信,系統總線(xiàn)驅動(dòng)為WDM(Win32 Driver Model)驅動(dòng)。因此,USB驅動(dòng)程序采用WDM設備驅動(dòng)程序。由于USB總線(xiàn)驅動(dòng)程序(USBD)一般由操作系統提供,負責與實(shí)際的硬件打交道,因此,重點(diǎn)是開(kāi)發(fā)USB設備驅動(dòng)程序(USB Device Driver)。USB設備的WDM驅動(dòng)程序是通過(guò)創(chuàng )建URB(USB請求塊),并向USB總線(xiàn)驅動(dòng)程序發(fā)送包含URB的IRP來(lái)實(shí)現對USB設備信息的發(fā)送和接收。此外,USB設備驅動(dòng)程序除負責處理應用程序的I/O請求外,還要處理PnP請求。

CY7C68013的驅動(dòng)程序包括2部分:usbfft.sys,專(zhuān)用于下載芯片的固件程序;loaderfft.sys,上位機和CY7-C68013進(jìn)行通訊的部分,用于實(shí)現數據收發(fā)功能。這2個(gè)部分都存放在上位機上,當系統上電或USB連接時(shí),固件部分將自動(dòng)下載到芯片的RAM中供8051執行。

4 應用程序設計

上位機是人機交互的平臺,需要良好的操作界面。本系統通過(guò)VB6.0開(kāi)發(fā)了上位機應用程序,運行界面如圖3所示。




應用程序是完成數據發(fā)送與接收并且對系統進(jìn)行有效控制的平臺,不僅需要向CY7C68013發(fā)送數據,還需要將接收的數據顯示出來(lái)并保存。此外為了系統測試的方便,增加了誤碼率和速率測試模塊,以測試系統的整體性能。

本系統上位機的主要功能有:(1)文件的發(fā)送;(2)文件的接收;(3)速率測試;(4)誤碼率測試;(5)系統控制,用來(lái)獲取CY7C68013描述符以及其內部寄存器的情況,并對整個(gè)系統進(jìn)行控制,如使能CY7C68013的數據輸出功能及片內數據轉移功能等。

系統中定義了6個(gè)時(shí)間控件來(lái)完成數據的發(fā)送與接收,timer1、timer3和timer4分別完成文件、誤碼率及速率測試的發(fā)送,Timer2、timer6和timer8分別完成文件、誤碼率及速率測試的接收。另外定義了一個(gè)時(shí)間控件來(lái)控制開(kāi)啟哪一個(gè)接收數據時(shí)間控件。為了保證有效判斷所接收到的數據是文件、速率測試還是誤碼率測試數據,在timer1、timer3和timer4發(fā)送前都先發(fā)送一個(gè)512 B的前導包。全為1時(shí)表示下一個(gè)數據包包含著(zhù)速率測試數據,全為2時(shí)表示下一個(gè)數據包包含著(zhù)誤碼率測試數據,全為3時(shí)表示下一個(gè)數據包包含著(zhù)文件數據。這樣就能判斷出應該開(kāi)啟哪一個(gè)接收時(shí)鐘。

具體的文件數據處理方法是:文件打開(kāi)后,先將文件緩沖,定義一個(gè)二維數組:行512 B,列由文件大小決定。數組的第一個(gè)512 B前20 B記錄所發(fā)送文件的大小,并且在最開(kāi)始的5 B以0xAA填充,表明這個(gè)數據包是全部文件的開(kāi)始,當文件大小不足填滿(mǎn)最后的512 B時(shí),數據補0,但數組結尾為0xAA。

采用CY7C68013設計的高速數據傳輸系統,經(jīng)過(guò)測試,達到了設計要求,實(shí)現了數據的高速傳輸,為下一步開(kāi)展數據編碼/譯碼、調制/解調研究打下了良好的基礎。
本文地址:http://selenalain.com/thread-41543-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页