新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于端口模式的CY7C68013固件程序設計

        基于端口模式的CY7C68013固件程序設計

        作者: 時間:2010-03-19 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/173427.htm

        在使用 EZ-USB FX2芯片進行應用開發中,利用其框架可以簡化開發工作。用戶在這個框架的基礎上只需要再提供一個 USB描述符表,配置一些相關的寄存器,添加所使用的端點接收和發送數據的通信代碼,以及控制外圍電路的程序代碼就可以完成 USB設備的開發工作。本設計中采用的固件框架流程圖如圖 3所示 [5]。




        Cypress公司為簡化用戶開發提供了 EZ-USB固件程序框架。本設計中固件包括五個部分:fw.c(框架源文件)、periph.c(用戶任務調度函數文件)、dscr.a51(描述符表)、 USBJmpTb.OBJ(中斷跳轉表)、Ezusb.lib(EZ-USB庫文件),其中主要對 periph.c和dscr.a51
        進行了修改。dscr.a51中包含各種描述符,根據設計需要修改了設備的VID、PID。
        periph.c中主要包括 TD_PreInit()、TD_Init()和TD_Poll()函數,TD_PreInit()中包含配置外圍接口的輸入/輸出及設置端口初始值的代碼。TD_Init()函數負責初始化端點狀態變量,而實現數據通信的軟件代碼包含在TD_Poll()函數中。部分代碼如下:
        void TD_PreInit(void)
        { PORTACFG = 0x00; OEA = 0xfd; //使能 PA1為輸入,其余 PA口為輸出 IOA = 0xff;//置 PA口為 ffH IOA |= 0x0C; //由PA2口產生FIFO1的復位信號 PORTECFG = 0x00; OEE = 0xff;} //使能 PE口為狀態輸出
        void TD_Poll(void)
        {WORD i; if (PStatus == VCOMMAND_READ) //上位機發出讀數命令 {for ( i=0;i80;i++)
        if (!(IOA 0x02)) break; //等待外部 FIFO2半滿 if (i80) { if (!(EP2468STAT bmEP6FULL)) //FIFO2半滿、EP6不滿,讀 512字節
        {for( i = 0x0000;i EP6BUFSIZE;i+=16 ){ EXTAUTODAT2 = EXTAUTODAT1; ┆
        EXTAUTODAT2 =EXTAUTODAT1;}//一次讀出 16字節,加快讀數速度設備請求部分修改了 DR_VendorCmnd()函數代碼,由于篇幅有限,僅列出一部分。 BOOL DR_VendorCmnd(void) { switch(SETUPDAT[1])
        { case VCOMMAND_START_T: //上位機發出啟動監測命令 PStatus = 0x22;//單片機產生 22H的狀態信號
        = SETUPDAT[1];
        + 1) = 0xaa;
        + 2) = PStatus; EP0BCH = 0; EP0BCL = 3; EP0CS |= bmHSNAK; //確認器件請求握手信號 SYS_MODE = PStatus; //通過 PE口發出相應的狀態信號 Break;}

        5結論
        在彈載測量系統地面測試臺的研制中,利用 實現了 USB接口的數據傳輸,本設計采用的端口,雖然與 GPIF和 Slave fifo相比,傳輸速率比較低,但對于具備一定單片機基礎的開發人員而言,這種模式開發周期短,穩定性強,不失為一種有效的數據傳輸方式。該固件程序已成功應用到某彈載測量系統地面測試臺中,多次試驗證明固件運行可靠,數據回讀誤碼率低,滿足系統技術要求。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 醴陵市| 田阳县| 长寿区| 东乌珠穆沁旗| 宣汉县| 卢湾区| 玉山县| 齐齐哈尔市| 东乡县| 高密市| 凌海市| 定兴县| 本溪| 怀化市| 桐乡市| 阿瓦提县| 平利县| 如东县| 岳池县| 二连浩特市| 房产| 象山县| 泾源县| 台州市| 盐边县| 新晃| 东丰县| 安阳市| 衡阳县| 绥宁县| 佛山市| 渝中区| 白水县| 崇左市| 百色市| 宁化县| 海兴县| 安岳县| 三穗县| 团风县| 玉环县|