新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于CY7C646xx的通用串行總線接口

基于CY7C646xx的通用串行總線接口

作者: 時間:2012-04-11 來源:網(wǎng)絡 收藏

3 USB接口系統(tǒng)的結(jié)構(gòu)

USB接口的結(jié)構(gòu)如圖2所示。計算機采用Windows操作系統(tǒng),用戶程序通過設備驅(qū)動程序訪問目標板。在目標板端上,把TMS320VC33型數(shù)字信號處垣器和計算機通過USB總線建立通信鏈路,用CPLD進行目標板的控制。TMS320VC33通過內(nèi)置的從屬FIFO和進行數(shù)據(jù)交換。

基于CY7C646xx的通用串行總線接口

在本方案中,CY7C646xx采用無EEPROM的列舉方式,即當目標板插入USB端口時,操作系統(tǒng)進行USB常規(guī)描述符請求,CY7C646xx將內(nèi)置的PID、VID和DID回復主機請求;主機動態(tài)加載"固件下載驅(qū)動程序",由該驅(qū)動程序?qū)?051程序代碼和數(shù)據(jù)下載至CYTC646xx內(nèi)的RAM中,實現(xiàn)"軟"開發(fā)目的;該驅(qū)動程序重置啟動8051,重新列舉設備,下載至RAM中的程序回復主機的USB描述符請求,主機加載"數(shù)據(jù)通信驅(qū)動程序",完成USB設備的安裝。應用程序通過"數(shù)據(jù)通信驅(qū)動程序"和CY7C646xx建立通信,完成數(shù)據(jù)傳輸。

4 驅(qū)動程序的編寫

USB設備驅(qū)動程序采用一種新的驅(qū)動模型--WDM(windows driver model)。WDM通過提供一種靈活的方式來簡化驅(qū)動程序的開發(fā),在實現(xiàn)對新硬件支持的基礎上減少并降低所必須開發(fā)的驅(qū)動程序的數(shù)量和復雜性。可以應用Cypress公司提供編寫CY7C646xx系列驅(qū)動程序框架源代碼進行相應的修改和添加,生成所需要的驅(qū)動程序。

4.1 固件下載驅(qū)動程序

利用代碼轉(zhuǎn)換工具hex2c.exe,將生成的8051固件代碼(hex文件)轉(zhuǎn)換為C文件;將C文件中的相應代碼拷貝到所提供的源代碼程序之一的firmware.c相應部分;利用WindowsDDK工具將各個源文件編譯成.sys文件。

修改相應的INF文件,將"%USB\VID_0547PID_1004.DeviceDesc%=EZUSBDev.Dev,USB\VID_PID_'中的VID及PID修改為相應的"預設USB設備"的相應VID和PID,在本應用中,VID.為0547,PID為2235;緊接在此語句之后應加入相同的語句,PID和VID應為所下載的固件代碼所能提供的PID和VID,保證外設第二次列舉后能根據(jù)此PID和VID找到相應的支持主機和電路通信的驅(qū)動程序。

4.2 支持主機和電路通信的驅(qū)動程序

由Cypress公司提供的GPD(General Purpose Driver)模板供用戶修改使用。它提供一個上層的程序代碼來實現(xiàn)底層的驅(qū)動程序的編寫,能夠完成USB設備的標準請求及Cypress公司的該系列電路所特定的請求和數(shù)據(jù)的傳輸。該GPD所提供的接口函數(shù)具有通用性,包括打開、關閉設備及USB的I/O操作等。本應用主要采用上述兩類接口程序,在沒有改變所提供的EZUSB.SYS的驅(qū)動程序的情況下,實現(xiàn)主機和外設的數(shù)據(jù)通信。

5 固件程序的編寫

固件程序指的是需要下載到CY7C646xx內(nèi)RAM中的8051程序代碼和數(shù)據(jù)。需要完成的功能包括初始化CY7C646xx內(nèi)部的所有用到的寄存器使之與外部電路相配合;對主機的USB標準請求的響應;CY7C646xx的電子仿真實際脫離與重新連接至USB接口的實現(xiàn);設備休眠狀態(tài)的啟動和終止;完成讀取OUT端點和轉(zhuǎn)發(fā)至內(nèi)部從屬"寫FIFO"及讀取內(nèi)部從屬"讀FIFO"的數(shù)據(jù)和轉(zhuǎn)發(fā)至IN端點等功能。



評論


相關推薦

技術專區(qū)

關閉