新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種基于USB的通用無(wú)線(xiàn)傳輸接口設(shè)計(jì)

        一種基于USB的通用無(wú)線(xiàn)傳輸接口設(shè)計(jì)

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

        2 軟件設(shè)計(jì)

        2.1 PDIDl2驅(qū)動(dòng)軟件構(gòu)架

        為了使驅(qū)動(dòng)軟件可移植性強(qiáng)、易維護(hù),采用分層的方法編寫(xiě)PDIDl2的驅(qū)動(dòng)程序,圖4為驅(qū)動(dòng)程序軟件分層結(jié)構(gòu)圖。

        USB驅(qū)動(dòng)程序軟件包提供給用戶(hù)6個(gè)API函數(shù),這6個(gè)函數(shù)都在USB應(yīng)用層中定義,功能描述如表1所列。

        下面以接收和發(fā)送數(shù)據(jù)任務(wù)為例,演示了一個(gè)任務(wù)從端點(diǎn)2發(fā)送1024個(gè)字節(jié)。部分源代碼如下:

        #define RW_NUMS 1024 //任務(wù)收發(fā)數(shù)據(jù)字節(jié)數(shù)
        void TaskRecl(void*pdata)
        {#if OS_CRlTICAL_METHOD==3
        //為CPU狀態(tài)寄存器分配存儲(chǔ)空間
        OS_CPU_SR cpu_sr;
        #endif
        INT8U Buff[RW_NUMS]; //接收及發(fā)送緩沖區(qū)
        INT8U ack=0x01; //應(yīng)答主機(jī)數(shù)值
        INT8U err; //函數(shù)返回值
        pdata=pdata; //避免編譯器警告
        for(;;){
        OSSemPend(TaskReel_Sere,0,-err);//等待TaskStart的命令
        err=WritePortl(1,&ack,200); //應(yīng)答USB主機(jī)
        if(err==USB_NO_ERR){ //應(yīng)答正確
        err=ReadPort2(RW_NUMS,Buff,200);//接收數(shù)據(jù)
        OSTimeDly(1); //延時(shí)一個(gè)時(shí)鐘周期
        if(err==USB_NO_ERR){ //接收正確
        Buff[0]=OSPrioCur; //標(biāo)識(shí)該任務(wù)
        err=WritePort2(RW_NUMS,Buff,200);//發(fā)送數(shù)據(jù)
        }
        }
        }}

        2.2 CY7063231軟件設(shè)計(jì)

        USB 外圍控制器控制射頻芯片,同時(shí)與微控制器的USB口相連,實(shí)現(xiàn)無(wú)線(xiàn)數(shù)據(jù)的接收和發(fā)送。下面以接收無(wú)線(xiàn)數(shù)據(jù)為例。主程序UsbTaskLoop,它是一個(gè)無(wú)限循環(huán),僅僅在中斷的時(shí)候跳出。程序檢測(cè)的DRl和DR2引腳,當(dāng)DRl上的電平為高時(shí),產(chǎn)生中斷跳到Receivechl子程序,當(dāng)DR2上的電平為高時(shí),產(chǎn)生中斷跳到Receivech2子程序。USBSend程序負(fù)責(zé)從端口1向上位機(jī)發(fā)送數(shù)據(jù),WaitforAck程序等待上位機(jī)對(duì)端口1的應(yīng)答信號(hào),Receivechl和Receivech2程序分別從的通道1 和通道2接收數(shù)據(jù)。最后調(diào)用DATAOUT把數(shù)據(jù)傳給上位機(jī),然后調(diào)用WaitforAck。Prg2401程序段負(fù)責(zé)對(duì)nRF2401進(jìn)行操作控制,能夠通過(guò)設(shè)置不同的參數(shù)使nRF2401工作在三種不同的工作模式。

        結(jié) 語(yǔ)

        本系統(tǒng)采用32位嵌入式微處理器進(jìn)行核心控制,具有強(qiáng)大的數(shù)據(jù)處理能力。該設(shè)計(jì)可以通過(guò)無(wú)線(xiàn)局域網(wǎng)進(jìn)行無(wú)線(xiàn)傳輸,并且可在ARM中對(duì)無(wú)線(xiàn)接收的數(shù)據(jù)進(jìn)行處理,以進(jìn)一步應(yīng)用于圖像處理,智能監(jiān)控,以及遠(yuǎn)程電視電話(huà)會(huì)議等。因此,基于ARM的嵌入式USB口無(wú)線(xiàn)接收處理系統(tǒng)具有廣闊的應(yīng)用前景和市場(chǎng)。


        上一頁(yè) 1 2 下一頁(yè)

        關(guān)鍵詞: LPC2210 USB nRF2401 CY7C63231

        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 白山市| 华池县| 连城县| 黄石市| 临海市| 津南区| 武宁县| 甘洛县| 宁晋县| 莒南县| 肃北| 平山县| 高平市| 社旗县| 崇左市| 道孚县| 渭南市| 鹤岗市| 万全县| 金华市| 石楼县| 石泉县| 蕲春县| 达拉特旗| 安泽县| 华亭县| 平安县| 梅州市| 阿拉善盟| 黔南| 安义县| 镇沅| 遂平县| 财经| 赣榆县| 胶州市| 琼结县| 娄烦县| 五莲县| 贞丰县| 德阳市|