0 引言 當今,無線技術飛速發展,應用的領域越來越廣,與有線技術相比,無線技術具有方便、靈活、減少布線施工難度、降低成本等優點。本文闡述了無線USB控制系統的組成、功能和設計方法,系統由PC、無線USB控制器和多個終端節點組成,本文分別給出了實現無線USB控制器和終端節點的一種方案:無線USB控制器的方案是以單片機STC89C58RD+為微控制器,基于Nordic公司的2.4GHz的無線收發芯片nRF24L01,結合Philips公司的 PDISUBDl20D USB控制芯片來實現的;終端節點的方案是以STC89C58RD+為微控制器,基于nRF24L01無線收發芯片和根據需求的實際應用電路來實現的。 1 系統組成及其實現方案 1.1 系統描述 如圖1,無線USB控制系統的組成包括PC、無線USB控制器和終端節點(n個)。PC和無線USB控制器之間通過USB接口進行通信,在PC端,用 VC++開發應用程序實現對無線USB控制器進行控制,無線USB控制器和各個終端節點通過無線收發芯片nRF24L01實現無線通信。 ![]() 1.2 系統實現方案 1.2.1 無線USB控制器實現方案 無線USB控制器實現方案如圖2所示,主要包括微控制器STC289C58RD+、USB控制芯片PDIUSBD12和無線模塊nRF24L01 Module。STC89C58-RD+內含32KB程序存儲器、1280B RAM和16KB E2PROM,E2PROM可用來存儲終端節點的地址及需要掉電存儲的其他數據,32KB程序存儲器和1280B RAM可以滿足絕大多數應用需求。USB控制芯片PDIUSBD12是一個性能優化的USB控制器件,完全符合USBl.1規范,支持本地DMA傳輸,用于基于微控制器的系統。USBl.1最大支持的傳輸速度是12Mb/s,比一般的PC接口速度都快,足夠滿足無線USB控制系統的應用。無線模塊部分采用 Nordic公司的nRF24L01單片射頻收發芯片,該芯片工作于2.400~2.4835GHz的ISM(工業、醫學和科學)頻段,工作電壓為 1.9~3.6V,有多達126個頻道可供選擇,支持多點間通信,最高速率達2Mb/s,內置鏈路層,減少了MCU的復雜性和成本,提高了數據傳輸的可靠性,而且只需少量的外圍元件便可組成射頻收發電路,具有體積小、功耗低、性價比高等優點。 ![]() 1.2.2 終端節點實現方案 終端節點實現方案如圖3所示,主要包括微控制器STC89C58RD+、無線模塊nRF24L01 Module和實際應用需求的擴展電路。STC89C58RD+微控制器和nRF24L01無線模塊構成終端節點與無線USB控制器之間無線通信的基礎,終端節點的擴展電路是根據實際應用需求來設計的,如應用于溫度數據采集系統,則擴展電路應是溫度傳感器的電路,終端節點的靈活設置使得整個系統可以滿足多種應用場合的需求。 ![]() 2 系統的硬件部分 2.1 nRY24L0l無線模塊原理圖 nRF24L01是挪威Nordic VLSI公司推出的單片射頻收發芯片,20個引腳4mm×4mm QFN封裝,內置頻率合成器、功率放大器、晶體振蕩器、調制器等功能模塊,采用Enhanced ShockBurst技術,使用SPI接口與微控制器通信,速率為O~8Mb/s,配置方便。nRF24L01適用于無線數據通信、無線個人電腦外設、無線報警及安全系統、無線開鎖、無線監測、家庭自動化和玩具等諸多領域。關于該芯片的具體功能和工作模式及其編程過程請參照參考文獻。該模塊電路原理圖,如圖4所示。 ![]() nRF24L01模塊在PCB布線時采用雙面板,底層全部鋪地,頂層放置元器件,所有電容電阻電感采用0402封裝電容電感電阻盡量靠近芯片引腳,頂層也需大面積鋪地,在頂層和底層放置大量的通孔。該模塊供電電壓為3.3V,SPI接口可以直接與5V的MCU的IO口相連接,無SPI接口的MCU可以用 IO口模擬SPI時序,使用方便。 2.2 USB控制芯片PDIUSBDl2原理圖 PDIUSBD12是一款性價高的USB控制芯片,它與MCU配合使用,這使得設計者可以靈活地選擇MCU,它與MCU之間通過并行接口通信,還支持本地 DMA傳輸。圖5是PDIUSBD12與STC89C58RD+單片機連接的原理圖。 上圖未畫出STC89C58RD+單片機,只給出了網點名稱,如P00-P07、P27、ALE、INTl、WR、RD,STC89C58RD+與標準的 80C51(如AT89S51)引腳完全兼容,PDIUSBD12與MCU的連接有2種方式:總線方式和分開的地址數據方式。采用總線方式時引腳10的 ALE連接MCU的ALE,引腳28的A0接到高電平;采用分開的地址數據方式,則ALE連接低電平,A0連接任意的IO口,數據或地址(命令)由A0來區分。圖5采用總線方式。另外該無線USB控制器直接使用USB接口供電,省去了電源,降低了成本。 3 系統的軟件部分 3.1 USB的固件與PC端應用軟件設計 當USB設備連接到主機后,主機要先進行一系列的枚舉過程,枚舉就是從USB設備讀取一些信息,知道設備是什么樣的設備,如何進行通信,這樣主機就可以根據這些信息來加載合適的驅動程序。枚舉過程使用控制傳輸,對于USB設備來說,固件所要處理的是必須對主機發來的標準設備請求進行相應的正確的響應,除此之外依據USB設備的類型還要響應主機發來的USB設備類請求。另外如果開發屬于生產商自定義的USB設備類,則需要開發驅動程序。為了減少開發驅動程序的復雜性,可根據實際情況使用USB標準設備類,現有的設備類有以下幾種:音頻設備類、通信設備類、HID設備類、顯示設備類、海量存儲設備類、電源設備類、打印設備類、集線器設備類等,例如可選擇做成assStorage類(海量存儲設備類)或HID(人機接口)設備類,這樣無需開發驅動程序,直接利用操作系統自帶的驅動程序。本系統模擬成一個海量存儲設備類,這樣在枚舉過程中固件除了要響應了標準的USB設備請求外,還需要響應2個類特殊請求:GetMaxLun和BulkOnlyMassStorageReset,正確枚舉之后PC機通過發送SCSI命令來控制U盤設備,對于海量存儲設備類要響應以下幾個命令:INQUIRY、READCAPACITY、READ(10)、WRITE(10)、REQUEST SENSE、TEST UNIT READY等,除此外要自定義私有的SCSI命令,以實現控制無線USB設備。另外還要構造一個FAT文件系統的格式,要正確返回DBR和FAT文件分配表以及文件數據。 PC端應用程序的開發采用VC++6.O平臺,本設備模擬成MassStorage設備,那么PC與設備通信通過SCSI命令,使用時候除了標準的 SCSI命令外,可以自己定義私有的SCSI命令,程序主要通過自定義的私有的SCSI命令來實現與無線USB控制器的數據通信,應用程序首先用 Create-File()打開設備,之后主要調用DeviceIoControl()函數來實現數據通信,最后用CloseFile()關閉設備。該函數的使用可參考MSDN。 以上部分的軟件是整個系統開發的難點,所涉及的知識點范圍廣,圖6是實際開發成功的模擬成MassStorageDevice類的無線USB控制器。 ![]() 3.2 nRF24L01的固件設計 nRF24L01與MCU之間通過SPI接口通信,本系統所采用的單片機STC89C58RD+無SPI接口,故通過IO口模擬,nRF24L01采用 ShockBurstTM進行可靠的發送和接收。采用AutoAck、自動重發的配置過程如下: 發送過程配置: 1)配置發射功率、數據速率、載波頻率、CRC校驗位數、發送的地址寬度和數據寬度、AutoAck、自動重發次數等。 2)配置:PRIM_RX位為0。 3)配置要通信的的終端節點地址TX_ADDR和要發送的數據到TX_PLD,配置發送端RX_ADDR的值與TX_ADDR的值一樣。 4)CE從低到高跳變芯片開始發送數據,CE至少需要10μs。 5)讀取STATUS寄存器,判斷發射成功與否。 接受過程配置: 1)配置發射功率、數據速率、載波頻率、CRC校驗、接收的地址寬度和數據寬度等等,其中數據速率、載波頻率、CRC校驗位數、接收的地址寬度和數據寬度必須和發送端一致。 2)PRIM_RX位配置為1,配置EN_RXADDR寄存器使能所有數據管道。 3)CE從低電平跳變為高電平,130μs后nRF24L01開始監視空中的無線信號。 4)當IRQ中斷時,中斷服務程序里面讀取STATUS寄存器,判斷是否接收到有效的數據。 5)收到有效數據則設置CE為低電平,nRF24L01進入standby-I模式。MCU讀取接收到的數據。 圖7和圖8是無線USB控制系統應用于控制多終端頻率發生器系統的實際軟件和硬件。 4 結束語 整個系統通過實際驗證滿足了設計要求,USB工作穩定,速度快,RF24L01無線模塊通信正常、距離遠、誤碼率低、穩定性高。本系統可應用于大部分需要 PC進行無線控制或無線數據采集的場合,只需要擴展終端節點的應用電路,即可以滿足不同的應用需求。系統具有可靠性好、性價比高、擴展性強和使用方便。 作者:黃秀節 顏可煌 趙偉 電子科技大學 來源:現代電子技術 |
Nordic是專業的射頻品牌,公司絕對優勢配合提供NRF24L01/NRF24L01+/NRF24LE1/NRF24LU1P/NRF905/NRF24AP2系列,在研發樣品階段需要樣品支持,試產階段需要少批量支持,大批量生產階段需要長期穩定供應,甚至協助做產品優化,請隨時聯系!13510620050 |