<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 基于USB的通用無線傳輸接口設(shè)計

          基于USB的通用無線傳輸接口設(shè)計

          作者: 時間:2011-04-09 來源:網(wǎng)絡(luò) 收藏

          介紹一種Philips公司的32位ARM7T[)MI—s微處理器LPC2210的,并使用Nordic公司生產(chǎn)的單片射頻收發(fā)芯片nRF2401通信模塊。闡述該系統(tǒng)的工作原理、硬件構(gòu)成及軟件方案。實現(xiàn)了串行通信。
          關(guān)鍵詞 LPC2210 USB nRF2401 CY7C63231

          本文引用地址:http://www.ex-cimer.com/article/156465.htm


          引 言
          USB串行總線主要用于USB設(shè)備與主機之間的數(shù)據(jù)通信,特別為USB設(shè)備與USB主機之間大量的數(shù)據(jù)提供了高速、可靠的協(xié)議。射頻通信以其優(yōu)點也應(yīng)用在越來越多的場合。本文所設(shè)計的USB無線串行接口電路由nRF2401單片射頻收發(fā)器、LPC2210微控制器和USB接口芯片組成。本系統(tǒng)充分利用USB口數(shù)據(jù)傳輸功能,設(shè)備連接方便,系統(tǒng)可用于進行無線串行數(shù)據(jù)雙向傳輸,在儀器儀表、計算機遙測遙控系統(tǒng)、家庭網(wǎng)絡(luò)系統(tǒng)等中得到了應(yīng)用。


          1 硬件設(shè)計
          整個硬件設(shè)計分為兩個部分:使用帶并行總線的USB接口器件PDIUSBD12設(shè)計LPC2200的USB接口,其電路圖如圖1所示;使用Cypress公司的USB外圍控制芯片CY7C63231設(shè)計射頻芯片nRF2401的USB接口,其電路圖如圖2所示。兩個部分通過USB口相接,整個硬件設(shè)計系統(tǒng)框圖如圖3所示。


          圖1中,USB接口芯片采用的是Philips公司的并行USB接口芯片PDlUSBD12,符合串行總線(USB)1.1版本規(guī)范。這里以LPC2200微控制器與PDIUSBI)12構(gòu)成USB設(shè)備,PDIUSBD)12連接到LPC2200的硬件原理圖如圖1所示。

          PDIUSBD12使用LPC2200外部存儲控制的Bank2部分,數(shù)據(jù)地址為0x82000000,命令地址為Ox82000001。RST_USB、SUSP為LPC2200的輸出引腳,PDIUSBD)12中斷信號為中斷輸入信號,且為外部中斷O。C1、C2和X1為PDIUSBD)12提供工作所需的時鐘輸入。發(fā)光二極管GoodLink在正常通信時閃爍。PDIUSBD12的AD0連接到LPC2200的A0,當(dāng)LPC2200在A0引腳輸出l時,表示輸出到PDIUSBD12數(shù)據(jù)總線DO~D7上的數(shù)據(jù)為命令字;當(dāng)A0引腳輸出0時,表示輸出到PDIUSBD)12數(shù)據(jù)總線DO~D7的數(shù)據(jù)為數(shù)據(jù)字。


          圖2中,CY7C63231是8位RISC微處理器,特別適用在USB嵌入式方面,工作電壓為5 V。nRF2401是單片射頻收發(fā)芯片,有四種工作模式:收發(fā)模式、配置模式、空閑模式和關(guān)機模式。所有配置工作,工作模式選擇和收發(fā)數(shù)據(jù)都是通過CY7C63231的PO引腳控制完成的。用電壓調(diào)整芯片LP2980IM5—3.3產(chǎn)生nRF2401的工作電壓(3.3 V),同時SN74LVC4245產(chǎn)生控制口3.3 V和5 V的電平轉(zhuǎn)換,使工作在不同電壓的這兩種芯片能正常的相連。


          2 軟件設(shè)計
          2.1 PDIUSBDl2驅(qū)動軟件構(gòu)架

          為了使驅(qū)動軟件可移植性強、易維護,采用分層的方法編寫PDIUSBDl2的驅(qū)動程序,圖4為USB驅(qū)動程序軟件分層結(jié)構(gòu)圖。


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


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

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


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



          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();