新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > USB2.0接口芯片CY7C68013的固件程序開發

        USB2.0接口芯片CY7C68013的固件程序開發

        作者: 時間:2012-04-23 來源:網絡 收藏
        R>3.2固件程序框架源碼:
        該文件提供了一個固件程序的框架結構,適用于一般的對數據傳輸的控制。該結構提供了對開發者開放的程序接口,開發者通過在這些接口函數中加入適當的代碼來實現所需的功能。
        其工作流程如圖 2所示,
        USB2.0接口芯片CY7C68013的固件程序開發
        圖2 固件程序框架工作流程


        3.3接口函數:
        在固件程序框架中提供了功能函數接口,通過在這些接口函數中加入自行開發代碼可以實現特定的功能并大大降低固件程序的開發難度,加速USB系統開發的過程。這些接口函數分三類:任務分配、標準設備請求執行和USB總線中斷處理[3]。下面將依次介紹這些接口函數和用途。
        3.3.1任務分配
        TD_Init()
        說明:此函數主要是完成FX2的初始化,在FX2再次枚舉和開始任務分配前被調用,其目的是初始化各個端口以及各端口的先入先出緩沖區。
        TD_Poll()
        說明:此函數在設備運行時被重復的調用,它應包括完成特別任務的代碼。在該函數返回前,優先級高的任務可能已經完成。但是,如果它返回值為假,FX2將不會影響設備請求和USB總線設備掛起事件。如果需要大量的處理時間,FX2就會通過多次調用TD_Poll()函數將時間分段。
        TD_Suspend()
        說明:此函數是在設備進入掛起狀態前調用的,開發者在其中加入適當的代碼,對設備的工作狀態進行配置,可使設備處于低功耗狀態并返回真值。但是開發者可以改動TD_Suspend()的程序代碼,使其返回為假,這樣可以使FX2不進入掛起狀態。
        TD_Resume()
        說明:當外部要求重新啟動時(如,外界產生Wakeup中斷或者USB總線有傳輸活動發生),設備就會通過調用此函數來對處理器進行重啟,也就是TD_Suspend()函數的逆操作。此時,設備在正常電源下重新啟動。
        3.3.2設備請求
        設備請求函數具有如下的形式:
        BOOL DR_xxx(void)
        {
        ……file://設備請求處理代碼
        return(TURE);
        }
        主要是完成對于來自主機的命令及請求的處理工作,如配置端口等。
        3.3.3USB中斷
        FX2設備的中斷包括與標準8051中斷相同的中斷同時也包含一些FX2特有的中斷。由于在固件程序中提供了中斷服務例程接口,開發者只須在需要處理的中斷服務例程接口中加入自己編寫的中斷服務代碼即可完成對相應中斷請求的服務,這樣就可以避免深入研究FX2的中斷自動引導(Interrupt Autovectors)的邏輯結構[2]。這些中斷服務例程接口函數的形式為:
        void ISR_xxx(void) interrupt 0
        {
        ……file://開發者中斷服務代碼
        EZUSB_IRQ_CLEAR();
        USBIRQ = bmXXX; // 清除該中斷請求
        }


        4. 總結:


        在了解了Cypress的固件程序框架結構之后,采用Keil uVision2開發環境在該Cypress的固件框架下開發可以在很大程度上降低固件程序的開發難度并縮短開發周期,獲得較高的效率。

        pid控制相關文章:pid控制原理



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 成都市| 张家界市| 西昌市| 栾城县| 天全县| 安平县| 大石桥市| 宁海县| 开远市| 湾仔区| 嘉义市| 桂林市| 湖南省| 娄底市| 黑龙江省| 久治县| 霍山县| 舒兰市| 武定县| 阜宁县| 垫江县| 大安市| 吉木乃县| 赤壁市| 德昌县| 吴桥县| 石城县| 波密县| 木里| 靖江市| 茶陵县| 钦州市| 广水市| 海安县| 乌海市| 克山县| 中宁县| 毕节市| 武汉市| 读书| 霍城县|