實(shí)驗(yàn)5--點(diǎn)對(duì)點(diǎn)無線通訊實(shí)驗(yàn)_第1頁
實(shí)驗(yàn)5--點(diǎn)對(duì)點(diǎn)無線通訊實(shí)驗(yàn)_第2頁
實(shí)驗(yàn)5--點(diǎn)對(duì)點(diǎn)無線通訊實(shí)驗(yàn)_第3頁
實(shí)驗(yàn)5--點(diǎn)對(duì)點(diǎn)無線通訊實(shí)驗(yàn)_第4頁
實(shí)驗(yàn)5--點(diǎn)對(duì)點(diǎn)無線通訊實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 實(shí)驗(yàn)題目:實(shí)驗(yàn)5-點(diǎn)對(duì)點(diǎn)無線通訊實(shí)驗(yàn) 實(shí)驗(yàn)時(shí)間:2015.12.2一、 實(shí)驗(yàn)?zāi)康模菏褂胕ar開發(fā)環(huán)境設(shè)計(jì)r程序,利用2個(gè)cc2530 zigbee模塊實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)無線通訊。二、 實(shí)驗(yàn)原理及程序分析:a) 硬件接口原理 zigbee(cc2530)模塊 led 硬件接口 zigbee(cc2530)模塊硬件上設(shè)計(jì)有 2 個(gè) led 燈,用來編程調(diào)試使用。分別連接 cc2530 的 p1_0、p1_1兩個(gè) io 引腳。從原理圖上可以看出,2 個(gè) led 燈共陽極,當(dāng) p1_0、p1_1 引腳為低電平時(shí)候,led 燈點(diǎn)亮。b) l關(guān)鍵函數(shù)1、 射頻初始化函數(shù)uint8 halrfinit(void)

2、功能描述:zigbee 通信設(shè)置,自動(dòng)應(yīng)答有效,設(shè)置輸出功率0dbm,rx設(shè)置,接收中斷有效。參數(shù)描述: 無返回: 配置成功返回 success2、發(fā)送數(shù)據(jù)包函數(shù)uint8 basicrfsendpacket(uint16 destaddr, uint8* ppayload, uint8 length)功能描述:發(fā)送包函數(shù)。入口參數(shù):destaddr 目標(biāo)網(wǎng)絡(luò)短地址ppayload 發(fā)送數(shù)據(jù)包頭指針,length 包的大小出口參數(shù):無返 回 值:成功返回success,失敗返回failed3、接收數(shù)據(jù)函數(shù)uint8 basicrfreceive(uint8* prxdata, uint8 le

3、n, int16* prssi)功能描述: 從接收緩存中拷貝出最近接收到的包。參數(shù): 接收數(shù)據(jù)包頭指針接收包的大小返回: 實(shí)際接收的數(shù)據(jù)字節(jié)數(shù)c) 軟件設(shè)計(jì)void main (void)uint8 i;appstate = idle; / 初始化應(yīng)用狀態(tài)為空閑appstarted = false; / 初始化啟動(dòng)標(biāo)志位false/* 初始化basic rf */basicrfconfig.panid = pan_id; / 初始化個(gè)域網(wǎng)idbasicrfconfig.ackrequest = false; / 不需要確認(rèn)halboardinit();if(halrfinit()=failed

4、) /初始化hal_rfhal_assert(false);/* 快速閃爍8次led1,led2 */for(i = 0; i 16; i+)halledtoggle(1); / 切換led1的亮滅狀態(tài)halledtoggle(2); / 切換led2的亮滅狀態(tài)halmcuwaitms(50); / 延時(shí)大約50mshalledset(1); / led1指示燈亮,指示設(shè)備已上電運(yùn)行halledclear(2);basicrfconfig.channel = 0x0b; / 設(shè)置信道#ifdef mode_sendapptransmitter(); / 發(fā)送器模式#elseappreceive

5、r(); / 接收器模式#endifhal_assert(false);void apptransmitter()uint32 burstsize=0;uint32 pktssent=0;uint8 apptxpower;uint8 n;/* 初始化basic rf */basicrfconfig.myaddr = tx_addr;if(basicrfinit(&basicrfconfig)=failed)hal_assert(false);/* 設(shè)置輸出功率 */apptxpower = appselectoutputpower();halrfsettxpower(2);/hal_rf_tx

6、power_4_dbm/ halrfsettxpower(apptxpower);/* 設(shè)置進(jìn)行一次測(cè)試所發(fā)送的數(shù)據(jù)包數(shù)量 */burstsize = appselectburstsize();burstsize = 100000;/* basic rf在發(fā)送數(shù)據(jù)包前關(guān)閉接收器,在發(fā)送完一個(gè)數(shù)據(jù)包后打開接收器 */basicrfreceiveoff();/* 配置定時(shí)器和io */n= appselectrate();appconfigtimer(0xc8);/haljoystickinit();/* 初始化數(shù)據(jù)包載荷 */txpacket.seqnumber = 0;for(n = 0; n

7、 sizeof(txpacket.padding); n+)txpacket.paddingn = n;/* 主循環(huán) */while (true)if (pktssent 0)halledset(1); / 點(diǎn)亮led1/halledset(2); / 點(diǎn)亮led2uint32_ntoh(rxpacket.seqnumber); / 改變接收序號(hào)的字節(jié)順序segnumber = rxpacket.seqnumber;/* 若果統(tǒng)計(jì)被復(fù)位,設(shè)置期望收到的數(shù)據(jù)包序號(hào)為已經(jīng)收到的數(shù)據(jù)包序號(hào) */if(resetstats)rxstats.expectedseqnum = segnumber;rese

8、tstats=false;rxstats.rssisum -= perrssibufperrssibufcounter; / 從sum中減去舊的rssi值perrssibufperrssibufcounter = rssi; / 存儲(chǔ)新的rssi 值到環(huán)形緩沖區(qū),之后它將被加入sumrxstats.rssisum += perrssibufperrssibufcounter; / 增加新的rssi值到summydate4 = rssi; /mydate3 = rxstats.rssisum;/if(+perrssibufcounter = rssi_avg_window_size)perrss

9、ibufcounter = 0;/* 檢查接收到的數(shù)據(jù)包是否是所期望收到的數(shù)據(jù)包 */if(rxstats.expectedseqnum = segnumber) / 是所期望收到的數(shù)據(jù)包mydate0 = rxstats.expectedseqnum;/rxstats.expectedseqnum+;else if(rxstats.expectedseqnum segnumber) / 不是所期望收到的數(shù)據(jù)包(收到的數(shù)據(jù)包的序號(hào)大于期望收到的數(shù)據(jù)包的序號(hào)) / 認(rèn)為丟包rxstats.lostpkts += segnumber - rxstats.expectedseqnum;mydate2

10、 = rxstats.lostpkts;/rxstats.expectedseqnum = segnumber + 1;mydate0 = rxstats.expectedseqnum;/else / 不是所期望收到的數(shù)據(jù)包(收到的數(shù)據(jù)包的序號(hào)小于期望收到的數(shù)據(jù)包的序號(hào)) / 認(rèn)為是一個(gè)新的測(cè)試開始,復(fù)位統(tǒng)計(jì)變量rxstats.expectedseqnum = segnumber + 1;mydate0 = rxstats.expectedseqnum;/rxstats.rcvdpkts = 0;rxstats.lostpkts = 0;mydate1 = rxstats.rcvdpkts;/rxstats.rcvdpkts+;uarttx_send_string(mydate,5);halmcuwaitms(300);halledclear(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論