新聞中心

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

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

作者: 時(shí)間:2012-04-11 來(lái)源:網(wǎng)絡(luò) 收藏

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

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

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

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

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

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

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

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

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

4.2 支持主機(jī)和電路通信的驅(qū)動(dòng)程序

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

5 固件程序的編寫

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



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉