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

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

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