新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 秀山| 措美县| 惠安县| 资阳市| 奉贤区| 南华县| 上蔡县| 通河县| 博野县| 崇信县| 莱阳市| 梓潼县| 神木县| 油尖旺区| 阿鲁科尔沁旗| 甘洛县| 昭平县| 鹤山市| 石城县| 辉南县| 新营市| 广宁县| 铁岭市| 陵水| 德化县| 莎车县| 兰溪市| 顺平县| 汶上县| 咸阳市| 信宜市| 旬阳县| 本溪市| 芦山县| 永寿县| 社会| 大兴区| 丹阳市| 滨州市| 雷波县| 大埔县|