摘要:主要介紹基于MSP430F133 單片機(jī)和RFW 模塊的短距離無線數(shù)據(jù)通信,重點(diǎn)說明了 RFW 模塊的RFW-D100 和RFW102 的特點(diǎn)和實(shí)際應(yīng)用,文中給出了相關(guān)的硬件設(shè)計。無線數(shù)據(jù) 通信的實(shí)現(xiàn)是基于CSMA 協(xié)議,在固件編程有所體現(xiàn)。
1 前言 隨著信息技術(shù)的不斷發(fā)展,人們對通信技術(shù)的需求越來越強(qiáng),擺脫有線網(wǎng)絡(luò)的束縛實(shí)現(xiàn) 無線通信始終是大家關(guān)心的問題,當(dāng)今無線通信研究越來越熱,應(yīng)用非常廣泛,使人與人之 間的通信更加方便快捷,更具有市場發(fā)展前景。 2 硬件設(shè)計 本設(shè)計主要實(shí)現(xiàn)短距離無線數(shù)據(jù)通信,由兩個部分組成:發(fā)送終端,接收終端。無線數(shù) 據(jù)的收發(fā)是通過串口來實(shí)現(xiàn)的,通過串口給無線發(fā)送端送數(shù)據(jù),無線接收端再通過串口將接 收的數(shù)據(jù)傳給PC。發(fā)送終端和接收終端的硬件設(shè)計是一樣的,只不過是在固件編程時有所 不同。系統(tǒng)實(shí)現(xiàn)框圖,如圖一所示。
圖一系統(tǒng)實(shí)現(xiàn)框圖 設(shè)計中采用的處理器為MSP430F133,它是一種超低功耗的混合信號控制器,具有16 位RISC 結(jié)構(gòu),CPU 中的16 個寄存器和常數(shù)產(chǎn)生器使MSP430 能達(dá)到最高的代碼效率。單 片機(jī)通過采用不同的時鐘源工作可以使器件滿足不同功耗要求,適當(dāng)選擇時鐘源,可以讓器 件的功耗達(dá)到最小。外設(shè)資源豐富。支持匯編和C 語言。此次開發(fā)利用的是IAR 公司提供 的Embedded Workbench 集成開發(fā)環(huán)境。 下面介紹一下RFW 模塊。RFW 模塊是由RFWaves 公司開發(fā)的,RFWaves 是一家以色 列公司,主要是提供短距離RF 應(yīng)用的解決方案。首先介紹一下RFW102,它是一個可靠而 耐用的短距離RF 收發(fā)器芯片組。它是一個物理層RF 收發(fā)器,工作在2.4GHz,包含一個印 在印制板上的天線,無需外部天線。工作電壓很寬:2.7~3.6V,適合不同的電池供電;功 耗低:待機(jī)電流僅1µA,喚醒時間20µs。模塊提供一個擴(kuò)頻脈沖管作通信用,速率達(dá)到1Mbps。 有效室內(nèi)距離可達(dá)25 米,在RF 前端增加一個功率放大器可將有效范圍擴(kuò)展到100 米。 RFW102 芯片組包括RFW24,RFW488C 和RFW488R 三個芯片。RFW24 完成所有時序、 放大、切換、發(fā)送和接收功能;RFW488C 是一個完全非差分無源器件,是DSSS(直接序列擴(kuò) 頻技術(shù))擴(kuò)頻和去擴(kuò)頻的基本單元,實(shí)現(xiàn)4 引腳SAW 相關(guān)器;RFW488R 是單端口SAW 諧振器, 諧振頻率為488MHZ,可作為系統(tǒng)的CW 諧振源。RFW-D100 是對RFW-102 的補(bǔ)充,使得能 夠在MCU 上實(shí)現(xiàn)無線通信協(xié)議。RFW-D100 主要特點(diǎn)是提供輸入輸出緩存,對數(shù)據(jù)包地址 進(jìn)行濾波,循環(huán)冗余碼校驗(yàn),看門狗定時器,工作頻率為6-24M,低功耗模式:后臺處理和 電源關(guān)閉模式,提供網(wǎng)絡(luò)載波偵聽,對RFW-D100 的發(fā)送和接收的時鐘漂移進(jìn)行補(bǔ)償,提供中斷,用于載波偵聽機(jī)制的無線電信號增強(qiáng)指示器(RSSI)。在RFWaves 的應(yīng)用中,MCU 主要負(fù)責(zé)MAC 層協(xié)議。RFWD-100 可以緩解MCU 處理MAC 協(xié)議實(shí)時的要求。RFW-D100 在MCU 和RFW-102 提供了一個并行接口,它可以把快速連續(xù)輸入的數(shù)據(jù)轉(zhuǎn)為8-bit 字,這 樣就非常適合8-bit 的MCU 進(jìn)行處理,它采用16 個字節(jié)的FIFO 對輸入的數(shù)據(jù)進(jìn)行緩存, 提高了MCU 使用RFWD-100 的效率。并不是一個中斷讀一個字節(jié),每一個中斷MCU 可以 讀16 個字節(jié),這就減少了MCU 處理數(shù)據(jù)的開銷。 無線數(shù)據(jù)通信的收發(fā)硬件設(shè)計是一樣的;陔娐返膹(fù)雜性,下面給出電路圖得主要連 線。如圖二所示

圖二系統(tǒng)硬件實(shí)現(xiàn)的主要連接圖 硬件設(shè)計中對MCU 提供雙晶振系統(tǒng),低頻晶振32.768K 為RS232 接口提供頻率支持, 高頻晶振8M 為系統(tǒng)運(yùn)行的主時鐘,P1 口的8 位為RFW-D100 的8 根數(shù)據(jù)線,P4.0~P4.4 為 RFW-D100 5 根地址線,P2 口與P3 口部分管腳為RFW-D100 的控制腳。由于MSP430 系統(tǒng) 無對外開放總線,故MSP430 對RFW-D100 的讀寫是通過模擬實(shí)現(xiàn)的。RFW-D100 主要實(shí) 現(xiàn)對數(shù)據(jù)的輸入輸出緩沖,其內(nèi)部的寄存器標(biāo)志著發(fā)送和接收時各種事件的發(fā)生。RFW102 主要完成對數(shù)據(jù)的無線發(fā)送和接收。
3 軟件設(shè)計 3.1CSMA 協(xié)議 局域網(wǎng)一般采用共同的介質(zhì)的方法,為此當(dāng)多個站點(diǎn)同時要訪問介質(zhì)時,就要進(jìn)行控制。 CSMA(載波偵聽多路訪問)就是常用的一種方式。當(dāng)網(wǎng)中站臺要發(fā)送數(shù)據(jù)時,先檢測是否 有別的站臺占用了傳輸媒體?方法是先進(jìn)行載波偵聽,如果發(fā)現(xiàn)介質(zhì)(媒體)空間,就立刻 發(fā)送數(shù)據(jù);否則就根據(jù)不同的策略退避重發(fā)。
3.2 數(shù)據(jù)包結(jié)構(gòu)介紹 在介紹具體軟件設(shè)計之前學(xué)要了解一下基于CSMA 協(xié)議數(shù)據(jù)包結(jié)構(gòu)。如表一所示:

表一:數(shù)據(jù)包的結(jié)構(gòu) 1. Preamble:RFW-D100 發(fā)送PREAMBLE 的目的是為了使接收機(jī)和發(fā)送相同步。20 位長,高四位為1111,由RFW-D100 自動產(chǎn)生,對RFW102 的接收段進(jìn)行初始化。其它16 位由PRE—L 和PRE—H 決定。發(fā)送順序?yàn)閺母叩降汀?BR> 2. Network:4 個字節(jié),指明數(shù)據(jù)包屬于哪一個網(wǎng)絡(luò)。
3. Dst/Src:1 個字節(jié)。由節(jié)點(diǎn)發(fā)送到主控制器,叫做源段;由主控制器向節(jié)點(diǎn)發(fā)送叫目的段。源段的值是指由節(jié)點(diǎn)向主控制器發(fā)送的ID 號;目的段值是指由主控制器向節(jié)點(diǎn)發(fā) 送的ID 號。
4. Sequence:1 個字節(jié)。這個段包括兩個值。高四位表示數(shù)據(jù)序號;低四位表示應(yīng)答包的 序號。包的類型由這個段值決定,低四位都為0 表示這是一個數(shù)據(jù)包,高四位都為0 表示這是一個應(yīng)答包。如果都不為0 則表示既是數(shù)據(jù)包又是應(yīng)答包。
5. Size:1 個字節(jié)。這個段說明包的大小。包的結(jié)構(gòu)有兩種類型由PPR[5](Packet ParameterRegister)決定。
6. Payload:包含來自上層軟件層的數(shù)據(jù)
7. CRC:2 個字節(jié)。RFW-D100 在發(fā)送端給每個包增加CRC 信息,使得接收機(jī)對接收的數(shù) 據(jù)進(jìn)行檢測。接收端的CRC 計算的結(jié)果和接收到的包的CRC 段相比較,如果CRC 的比較結(jié)果相同,接收機(jī)認(rèn)為包接收正確;如果CRC 的比較結(jié)果不等,則接收機(jī)認(rèn)為接收到的包不正確。CRC 通過PPR[3:4]來配置。需要注意的是,RWF-D100 對每一個接收的包進(jìn)行CRC 計算,CRC 的值并不放在RX_FIFO 中,只把計算結(jié)果放在RX_FIFO中,作為包的最后一個字節(jié)。0X55 表示CRC 接收正確;0XAA 表示CRC 接收錯誤。可通過讀SSR[0](System Status Register)來判斷。
3.3 固件編程 1. 對RFWD-100 和REW102 初始化,包括復(fù)位,啟動RFW102 等操作。主要是對RFD_RST、 IDLE_RST、WDT_RST、POWER_DOWN、IDLE_MODE、WDT 進(jìn)行相關(guān)設(shè)置。
2. 主程序初始化,包括啟動晶振,看門狗以及串口初始化。主要是對BCSCTL2設(shè)定選定主 系統(tǒng)時鐘為XT2;對UCTL0設(shè)定串口數(shù)據(jù)位為8位,低頻晶體為串口提供工作頻率,設(shè)定波特率寄存器UBR和波特率調(diào)整寄存器UMCTL0,使得串口的數(shù)據(jù)傳輸率為4800bps,并設(shè)定模塊使能寄存器在發(fā)送端接收模塊使能在接收端發(fā)送模塊使能,通過功能選擇寄存器設(shè)定P3.4為發(fā)送,P3.5為接收。
3. 無線發(fā)送端:啟動RFW-D100設(shè)置為發(fā)送狀態(tài),其中READ()為讀RFW-D100數(shù)據(jù),WRITE ()為向RFW-D100寫數(shù)據(jù)。 WRITE(SCR4,3); //RF_active,開放所有中斷 WRITE(SCR2,0x1c); //D100處于接收狀態(tài),RX_FIFO復(fù)位 WRITE(BLR,18); //位長為18+6=24 WRITE(PPR,0x3A); //發(fā)送包為固定大小, WRITE(PSR,12); //PSR(Packet Size Register)設(shè)定包的大小為12個字節(jié) WRITE(PRE_H,0x55); WRITE(PRE_L,0xBB);//PREAMBLE=0X55BB WRITE(IER,0x10);//IER中斷使得寄存器設(shè)定TX_EMPTY=1 WRITE(SCR3,128);//SCR3(系統(tǒng)控制寄存器)LOW_MODE=1 WRITE(SCR4,0); READ(TFSR,REG1);//TFSR(Transmit FIFO Status Register)
4. 無線接收端:啟動RFW-D100為接收狀態(tài) WRITE(SCR2,0x0c);//初始化RFW-D100為接收模式,接受緩沖區(qū)復(fù)位 WRITE(BLR,18); WRITE(PSR,12); WRITE(PPR,0x3A); WRITE(PRE_H,0xF5); WRITE(PRE_L,0xBB); WRITE(SCR4,0x03);//RF_ACTIVE=1,所有的中斷使能 WRITE(IER,0x02);//LOCK_OUT中斷使能,表示如果包正常接收則則引發(fā)LOCK_OUT中斷 WRITE(SCR2,0x62);//PREAMBLE尋找使能
5. CSMA協(xié)議要求一個節(jié)點(diǎn)在發(fā)送之前先偵聽通道,如果通道中有其它節(jié)點(diǎn)在使用通道,則 隨機(jī)等待一段時間再發(fā)送。載波偵聽協(xié)議使得通道帶寬利用率更加有效,每一個節(jié)點(diǎn)的 功耗更低。RFW-D100提供兩種技術(shù)進(jìn)行載波偵聽,一個是RSSI(Radio Signal Strength Indicator),另一個是網(wǎng)絡(luò)載波偵聽算法。本設(shè)計中使用RSSI技術(shù),使用內(nèi)部比較器 來檢測發(fā)射功率是否超過一個門限值,這個門限值由外部電阻來確定,當(dāng)檢測到強(qiáng)的發(fā) 送信號時則停止發(fā)送。通過設(shè)置SCR1[5](COMP_EN)來使能或禁止RSSI比較器,比較輸 出的結(jié)果在SSR[7](COMP_IN)中?梢酝ㄟ^以下程序來實(shí)現(xiàn)。 WRITE(SCR1,0x20); do { READ(SSR,REG1); }
while(REG1&SSR_COMP_IN); 4 結(jié)論 先把設(shè)計的兩塊板通過串口與PC機(jī)相連,一塊作為發(fā)送端,另一塊作為接收端,這兩塊 板之間有一定的距離,沒有任何連線,通過串口給無線發(fā)送端送數(shù)據(jù),與無線接收端相連的 PC機(jī)正確顯示相應(yīng)的數(shù)據(jù),則實(shí)現(xiàn)了無線數(shù)據(jù)通信。這時再加入另一塊發(fā)送端,同樣彼此相 隔一定的距離,中間沒有任何連線,也在發(fā)送數(shù)據(jù),這就存在著競爭信道,發(fā)生碰撞,導(dǎo)致 數(shù)據(jù)不能傳送的可能性,軟件設(shè)計中采用了CSMA協(xié)議,設(shè)定的數(shù)據(jù)包長度為12位,在接收端 輪流正確顯示兩塊發(fā)送端的12位數(shù)據(jù)。 在USB接口應(yīng)用比較廣泛的今天我們也可以使用USB接口來實(shí)現(xiàn)無線通信,同樣還可以實(shí) 現(xiàn)無線語音通信。 參考文獻(xiàn): 1.泰龍編著,MSP430單片機(jī)應(yīng)用系統(tǒng)開發(fā)典型實(shí)例,中國電力出版社,2005 2.胡大可編著,MSP430系列單片機(jī)C語言程序設(shè)計與開發(fā),北京航空航天大學(xué)出版社,2003 3.鄭少仁王海濤趙志峰米志超黎寧編著,Ad Hoc 網(wǎng)絡(luò)技術(shù),人民郵電出版社,2005 |