《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 設(shè)計應(yīng)用 > 基于nRf2401和CP2102的USB2.0無線測控網(wǎng)絡(luò)
基于nRf2401和CP2102的USB2.0無線測控網(wǎng)絡(luò)
摘要: 本系統(tǒng)使用nRf2401和CP2102實現(xiàn)PC-USB2.0-MCU高速無線測控網(wǎng)絡(luò)。系統(tǒng)通過CP2102實現(xiàn)USB2.0接口,,通過nRF2401實現(xiàn)無線數(shù)據(jù)收發(fā),。同時nRf2401廠商免費提供驅(qū)動程序,開發(fā)方便,、快速,。本文闡述該系統(tǒng)的工作原理,、硬件構(gòu)成及軟件設(shè)計方案。
關(guān)鍵詞: RF|微波 nRF2401 CP2102 單片機 USB2.0
Abstract:
Key words :

  0 前言

  現(xiàn)在,,越來越多的無線技術(shù)被應(yīng)用到自動控制系統(tǒng)中,。nRf2401是挪威Nordic公司推出的單片2.4GHz無線收發(fā)一體芯片,支持多點間通信,,最高傳輸速率達到1Mbit/s,,可以用于無線網(wǎng)絡(luò)中。

  USB2.0口傳輸速率是480Mbps,,有即插即用和熱插拔功能,。接口提供內(nèi)置電源,可以向外設(shè)提供5V和最多500mA的電源,。因此在以計算機為上位機的控制系統(tǒng)中,,USB口比較適合作為計算機與測控網(wǎng)絡(luò)的接口。

  USB接口器件的開發(fā)過程比較復(fù)雜,,開發(fā)者需要知道USB協(xié)議,、USB設(shè)備驅(qū)動程序開發(fā)、主機應(yīng)用程序開發(fā)等知識,,使用USB-UART橋接電路CP2102可以避免上述麻煩,。

  1系統(tǒng)的設(shè)計思想及nRf2401和CP2102介紹

  系統(tǒng)的設(shè)計思想如圖1所示。系統(tǒng)是由 CP2102,、nRF2401,、單片機等組成。

系統(tǒng)設(shè)計思想

  圖1  系統(tǒng)設(shè)計思想

  nRF2401是業(yè)界體積最小,、功耗最低,、外圍元件最少的低成本射頻芯片。有125個頻道,,速率(0~1Mbps),、發(fā)射功率和工作頻率等所有工作參數(shù)可編程設(shè)置。每個芯片可以通過軟件設(shè)置最多40bit地址,,而且只有收到本機地址時才會輸出數(shù)據(jù),。內(nèi)置CRC糾檢錯硬件電路和協(xié)議。nRf2401內(nèi)置頻率合成器,、功率放大器,、晶體振蕩器和調(diào)制器等功能模塊,。工作于2.4~2.5GHz ISM自由頻段,采用SoC方法設(shè)計,,只需少量外圍元件便可組成射頻收發(fā)電路,。nRF2401沒有復(fù)雜的通信協(xié)議,它完全對用戶透明,,同種產(chǎn)品之間可以自由通信。

  CP2102是美國Silicon公司生產(chǎn)的高集成度USB-UART橋接電路,。它們能夠用最簡單的外部電路,、最少的外部器件簡便實現(xiàn)USB2.0到UART的轉(zhuǎn)換。

  使用CP2102作為USB接口器件最大的特點是開發(fā)方便:①廠商免費提供適用于Windows(含Windows CE),、Linux等操作系統(tǒng)的驅(qū)動程序,。驅(qū)動程序?qū)⒂嬎銠C的USB口虛擬成一個COM口,計算機使用普通操作串口的命令訪問虛擬COM口,。②內(nèi)置USB2.0全速功能控制器,、USB收發(fā)器、48MHz內(nèi)部晶體振蕩器,、1KB字節(jié) E2PROM及異步串行數(shù)據(jù)總線(UART),,電路無需任何外部的USB器件。③CP2102的UART接口波特率為300bps~921.6kbps,,可以滿足無線網(wǎng)絡(luò)的傳輸要求,。

  2硬件電路的實現(xiàn)

  上位機系統(tǒng)電路如圖2所示。單片機選用ATmega16,,是ATMEL公司生產(chǎn)的高性能,、低功耗的8 位AVR® 微處理器,采用先進的RISC 結(jié)構(gòu),,數(shù)據(jù)吞吐率高達1 MIPS/MHz,。片內(nèi)集成有16K 字節(jié)可編程Flash、512 字節(jié)的E2PROM,、1K字節(jié)的SRAM,、兩個可編程 的串行UART和可工作于主機/從機模式的SPI 串行接口。

上位機系統(tǒng)電路的串行UART和可工作于主機/從機模式的SPI 串行接口

  圖2 上位機系統(tǒng)電路

  CP2102無需外部電阻和晶體,,VBus與REGIN引腳連到USB接口的Vbus端,,在REGIN端加1μF的去耦電容。CP2102與單片機接口是標準UART電平,,RTX,、TXD引腳分別是串口的接收、輸出端,,與單片機的對應(yīng)引腳相連,。CP2102的USB端與計算機的USB口連接,。CP2102的SUSPEND腳是USB口掛起信號端,接到單片機的PC4引腳,。

 無線收發(fā)模塊

  圖3 無線收發(fā)模塊

  上位機所有器件均由計算機的USB口提供電源,。ATmega16L的電源電壓范圍為2.7~5.5V,nRF2401的電源電壓范圍為1.9~3.6V,,利用計算機USB口的+5V電源,,通過MIC2937A芯片將電壓轉(zhuǎn)換為3.3V。

  無線收發(fā)模塊電路如圖3所示,。nRf2401外圍元件很少,,可使用單鞭天線或環(huán)形天線,電感需要采用高Q高精度的貼片繞線高頻電感,,晶體需采用高穩(wěn)定晶體,,電容應(yīng)選用高穩(wěn)定貼片元件。nRf2401通過SPI接口與單片機進行通訊,,ATmega16集成了SPI接口(CLK,、MISO、MOSI引腳),,與nRf2401的CLK1,、DATA相連接。nRf2401的CS是片選端,,CE是發(fā)送或接收控制端,,PWR_UP是電源控制端,分別由單片機的PC5,、PC6,、PC7引腳控制。nRf2401的DR1為高時表明在接收緩沖區(qū)有數(shù)據(jù),,接單片機的中斷引腳,。

  3 單片機程序設(shè)計

  3.1單片機對串口的編程

  ATmega16集成有串口,使用前需要先對它進行初始化,。具體過程如下:①UCSRA=0,,異步正常模式;②UBRR=1,,設(shè)置波特率為500Kbps;③UCR= 0x98,,使能接收中斷,允許發(fā)送,;④SREG=0x80;//開中斷,。

  初始化后,可以通過串口與CP2102進行數(shù)據(jù)交換,。采用中斷方式接收,,當(dāng)有串口數(shù)據(jù)到達時單片機產(chǎn)生中斷,,單片機響應(yīng)中斷從接收緩沖器讀入數(shù)據(jù)。串口接收中斷程序如下:

  #pragma interrupt_handler uart_rec:8

  unsigned char i;

  void uart_rec()

  {i=UDR;}

  串口發(fā)送程序如下:①UDR=1,,發(fā)送數(shù)據(jù),;②while(!(USR&0x40)),等待發(fā)送結(jié)束,;③USR&=~0x40,,清發(fā)送完標志。

  3.2單片機對nRf2401的編程

  單片機對nRf2401的編程包括對nRf2401進行配置,、發(fā)送數(shù)據(jù),、接收數(shù)據(jù)等程序。

  當(dāng)PWR_UP=1,、CE=0、CS=1時nRf2401進入配置工作狀態(tài),。配置字最高可達18字節(jié),,作用是使nRf2401子系統(tǒng)能夠處理RF協(xié)議。配置字從最高位開始,,依次通過SPI接口(CS,、CLK1和DATA)送給配置寄存器。本系統(tǒng)配置為ShockBurst方式,,配置字分為如下四塊:有效數(shù)據(jù)寬度(DATA2_W和DATA1_W),、地址寬度(ADDR2和ADDR1)、接收頻道地址(ADDR_W),、CRC配置(CRC_L和CRC_EN),。其值從高到低分別為8EH, 08H, 1CH, 20H, 50H, 0AH, 0

 

BH, 0CH, 0DH, 0EH, 0AAH, 28H, 0AH, 0BH, 0CH, 0A3H, 6FH, 65H。配置后nRf2401的通道1數(shù)據(jù)段長度80bit(其中nRf2401的序列號8byte + 2byte溫度數(shù)據(jù)),,地址段長度40bit,,通道1硬件地址0AAH, 28H, 0AH, 0BH, 0CH,啟用16位片上校驗功能,,單通道接收,,突發(fā)傳遞模式,通信速率1Mbit/s,,晶振頻率16MHz,,工作頻段2.450GHz,開始處于接收狀態(tài),。

 

  當(dāng)PWR_UP=1,、CE=1、CS=0時為收發(fā)方式,。ShockBurst發(fā)送過程如下:①CE=1,,nRf2401開始工作,;②將接收節(jié)點地址寫入nRf2401;將需要發(fā)射的數(shù)據(jù)寫入nRf2401,;③CE=0,,激活ShockBurst發(fā)送。

  通過中斷方式接收數(shù)據(jù),。當(dāng)有數(shù)據(jù)需要接收時,,nRf2401會將DR1置高產(chǎn)生中斷信號,接收完畢后DR1又會被置低,。首先配置中斷0為上升沿觸發(fā)方式(ISC01=1,, ISC00=1),具體接收過程如下:①校驗接收到的RF包的地址和欲接收的RF包中有效數(shù)據(jù)的長度,;②CE=1,,激活RX;③經(jīng)過200μs處理,,nRf2401子系統(tǒng)監(jiān)視啟動并等待信號的到來,;④當(dāng)收到一個有效的數(shù)據(jù)包(正確的地址和CRC),nRf2401子系統(tǒng)移去前綴,、地址和CRC位,;⑤nRf2401子系統(tǒng)通過把DR1置高,產(chǎn)生中斷信號,;⑥CE=0,,RF設(shè)為低功耗方式;⑦單片機取出有效數(shù)據(jù),,需要注意的是,,每接收一個字節(jié)需要先寫0xff 到nRF2401。

  完整的射頻數(shù)據(jù)包由四部分組成:前綴,、地址,、有效數(shù)據(jù)和CRC。前綴一般是8位(也可以設(shè)置為4位,,由地址的首位決定),。如果地址的首位是0,前綴為01010101,;如果地址的首位是1,,前綴為10101010。ShockBurst方式下,,CP2102接收到有效的數(shù)據(jù)包后,,自動移去前綴、地址和CRC,,只留有效數(shù)據(jù),。

  4 計算機控制軟件的編程

  當(dāng)把CP2102與計算機連接時,,系統(tǒng)會提示發(fā)現(xiàn)新硬件,并要求安裝驅(qū)動程序,,執(zhí)行CP2102驅(qū)動程序的安裝文件即可,。驅(qū)動程序安裝后,在設(shè)備管理器中會有CP2102虛擬的COM口(一般是COM3),。

  VB開發(fā)環(huán)境集成有串口控件MSComm,,該控件是將RS-232的初級操作予以封裝,用高級的Basic語言即可實現(xiàn)串口數(shù)據(jù)的發(fā)送和接收[2],。

  首先向工具箱添加MSComm控件,,并產(chǎn)生一個串口對象,取對象名為“MSc”,。然后編程對MSc進行初始化,,步驟如下:①MSc.CommPort=3, 選擇安裝驅(qū)動程序后計算機虛擬的COM3口,;②MSc.Settings = "500000,n,8,1",,設(shè)置通信波特率是500kbps,無校驗,,8位數(shù)據(jù),1位停止位,;③MSc.InputMode=1,,數(shù)據(jù)以二進制形式存取,;④MSc.RThreshold=1,,每收到1個字符都觸發(fā)接收事件;⑤MSc.PortOpen=True,,打開串口,。

  發(fā)送數(shù)據(jù)只是向控件的Output屬性寫數(shù)據(jù)即可,既MSc.Output=輸出的數(shù)據(jù),。

 

  接收數(shù)據(jù)采取事件驅(qū)動方式,,程序代碼如下:

  Public Sub msc_OnComm()

  Select Case MSc1.CommEvent

                       Case comEvReceive

 

                                   av = MSc.Input  '接收數(shù)據(jù)

                                   ……'根據(jù)接收的數(shù)據(jù)進行處理

  End S

       elect

 

     End Sub

  5 結(jié)束語

  本系統(tǒng)通過CP2102實現(xiàn)USB2.0接口,通過nRf2401通實現(xiàn)無線數(shù)據(jù)收發(fā),,具有開發(fā)簡單,、可靠性高等特點,傳輸速率可以達到900kbps,,在工業(yè)控制,、消費電子等各個領(lǐng)域都具有廣闊的應(yīng)用前景。本文的創(chuàng)新點:系統(tǒng)使用CP2102芯片實現(xiàn)USB2.0接口,,芯片廠商免費提供驅(qū)動程序,,計算機端程序開發(fā)方便,。使用nRf2401實現(xiàn)無線數(shù)據(jù)收發(fā),有內(nèi)置地址設(shè)置,、CRC糾檢錯,、工作于自由頻段優(yōu)點。文章給出詳細的硬件電路和軟件程序,。

  參考文獻

  [1] Silicon Laboratories Inc.CP2102 Product Data Sheet, http:// www.silabs.com,,2006

  [2] 范逸之等.Visual Basic與RS-232串行通信控制.北京:中國青年出版社,2002.1

  [3] nRF240x Configurator User Guide. Nordic VLSI document, Nordic Cooperation.

  [4] 彭祖林,鄧羅根,劉細華.用于測量體溫的無線實時監(jiān)測系統(tǒng)的設(shè)計與實現(xiàn)[J].微計算機信息,2005,1:59-61

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。