點對點通信實驗誤碼率和接收信號強度測試_第1頁
點對點通信實驗誤碼率和接收信號強度測試_第2頁
點對點通信實驗誤碼率和接收信號強度測試_第3頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、點對點通信試驗北京希望慧聯科技誤碼率和接收信號強度 RSSI 測試實驗一、試驗目的通過本試驗可以實現:(1)(2)(3)(4)點對點的無線數據通信誤碼率測試接收信號強度指示串口配置及串口通信二、試驗設備兩個 CC2530A 模塊,一個紅色主板、一個傳感器底板,另外,還需要一臺線一條,天線兩根。器、MiniUSB三、試驗步驟與現象實現現象: 計算機上串口助手上顯示當前的誤試數量為 1000 個數據包。、RSSI 值和接收到數據包的個數,總計測假設您已經建立了開發環境,并已掌握了開發平臺、IAR 軟件的基本用法。希望微控第 1 頁 共 10 頁點對點通信試驗北京希望慧聯科技第一步:源代碼源代碼位置

2、: CC2530 光盤3、各種實驗CC2530 點對點通信實驗CC2530 點對點通信實驗-誤碼率和接收信號強度 RSSI 測試實驗CC2530 Test Program for RSSIide打開 IAR Embedded Workbench 軟件,并打開RSSI.eww:Workspace,選擇試驗工作空間文件 cc2530 Test選擇要試驗的工程,本次試驗的工程為:per_test-srf05_cc2530。本店已經對Basic RF 的行了修改,便于完成誤碼率測試,同時加入了串口程序,便于觀察。希望微控第 2 頁 共 10 頁點對點通信試驗北京希望慧聯科技編譯工程文件,選擇Proje

3、ct Rebuild All,編譯沒有錯誤,按下 Debug ,將程序寫入相應的模塊。在 Main()上面,修改一下編譯選項。/*/ 在程序之前,請選擇或者TEST_TX 定義,用于和接收切換。/ 只有接收端才能測量信息強度 RSSI/*/ #define TEST_TX第二步:開展試驗紅色主板采用 MiniUSB 供電,綠色底板使用配置的鋰電池供電(如果您選購的是CC2530 套件1,則綠色底板使用兩節 5 號電池供電)模塊上電后,模塊開始數據,接收模塊接收后,上報串口。連接紅色主板與計算機(如果您沒有安裝虛擬串口驅動,請按以下步驟操作,如已經安裝,忽略)安裝主板串口驅動:參考按照電腦提示安

4、裝硬件,選擇目錄-CC2530 套件光盤1、建立開發環境的驅動文件即可(注意,一般要安裝兩次,電腦會自動提示)主板虛擬串口驅動 下驅動安裝,打開串口調試助手如下圖所示,選擇剛剛安裝的虛擬 USB 串其它設置參考下圖。如果紅色主板連接了計算機,并打開串口助手,這時可以看到數據。,波特率 57600,一開始 RSSI 值會比較大,因為程序是計算平均值,過一段時間接收信號強度就開始穩定了。希望微控第 3 頁 共 10 頁點對點通信試驗北京希望慧聯科技四、程序主程序經過初始化、硬件 IO 配置、串口配置后,進入各自的執行程序。根據定義不同,進行編譯。分別完成 和接收。如果想深入了解這個測試程序,請參考

5、 TI 公司的文檔。在該程序的文件夾 CC2530 BasicRF PerTestdocs 內,CC2530_Software_Examples.pdf#ifdef TEST_TX appMode = MODE_TX; #elseappMode = MODE_RX; #endif/ Transmitter application if(appMode = MODE_TX) / No return from here appTransmitter();/ Receiver applicationelse if(appMode = MODE_RX) / No return from here ap

6、pReceiver();1、函數 appTransmitter();過程:(1) 射頻初始化并設置希望微控第 4 頁 共 10 頁點對點通信試驗北京希望慧聯科技(2)(3)(4)設定測試的數據包量 1000 個配置定時器和 IO初始化數據包載荷(5)循環數據包,序列號自加 1static void appTransmitter()uint32 burstSize=0; uint32 pktsSent=0; uint8 n;/Initialize BasicRF/* 初始化Basic RF */basicRfConfig.myAddr = TX_ADDR; if(basicRfInit(&

7、;basicRfConfig)=FAILED)HAL_ASSERT(FALSE);/ Set TX output power/appTxPower = appSelectOutputPower(); /* 設置輸出功率 */ halRfSetTxPower(2);/HAL_RF_TXPOWER_4_DBMhalRfSetTxPower(appTxPower);/ Set burst size/burstSize = appSelectBurstSize(); burstSize = 1000;/* 設置進行一次測試所的數據包數量*/ Basic RF puts on receiver befo

8、re transmission of packet, and turns off/ after packet is sent basicRfReceiveOff();/ Config timer and IO/n= appSelectRate(); appConfigTimer(0xC8);/halJoystickInit();/* 配置定時器和 IO / Initalise packet payloadtxPacket.seqNumber = 0;/* 初始化數據包載荷 */for(n = 0; n < sizeof(txPacket.padding); n+)txPacket.pad

9、dingn = n;/ Main loopwhile (TRUE)/* 主循環 */希望微控第 5 頁 共 10 頁點對點通信試驗北京希望慧聯科技/ Wait for user to start application/while(!halJoystickPushed();/appStartStop();while(appStarted) / 循環啟動標志,一次只測試 1000 個數據包,重新測試需要復位/if( halJoystickPushed()/appStartStop();/if (pktsSent < burstSize)/if( appState = TRANSMIT_PA

10、CKET )/ Make sure sequence number has network byte order UINT32_HTON(txPacket.seqNumber);/ 改變序號的字節順序basicRfSendPacket(RX_ADDR, (uint8*)&txPacket, PACKET_SIZE);/ Change byte order back to host order before increment/* 在增加序號前將字節順序改回為主機順序 */ UINT32_NTOH(txPacket.seqNumber);txPacket.seqNumber+;pktsS

11、ent+;appState = IDLE;halLedToggle(1);/改變 LED1 的亮滅狀態halMcuWaitMs(500);halMcuWaitMs(500);/elseappStarted = !appStarted;/ Reset statistics and sequence number/* 復位統計和序號pktsSent = 0;/txPacket.seqNumber = 0;/halLcdClear();/halLedClear(3);*/halLcdWriteCharString(0,HAL_LCD_LINE_1, "Mode:Transmitter&qu

12、ot;);/halLcdWriteCharString(0,HAL_LCD_LINE_2, "CENTER to start/stop");希望微控第 6 頁 共 10 頁點對點通信試驗北京希望慧聯科技2、接收函數 appReceiver()(1) 串口初始化 57600 波特率(2) 射頻初始化(3)打開接收,檢查數據包序號是否為期望值(4)上報數據到上位機,接收包的個數|誤碼率|32 個數據包的 RSSI 值的平均 值。static void appReceiver()uint32 segNumber=0;int16 perRssiBufRSSI_AVG_WINDOW_

13、SIZE uint8 perRssiBufCounter = 0;/ oldest newest byte in RSSI/ ring bufferperRxStats_t rxStats = 0,0,0,0; int16 rssi;uint8 resetStats=FALSE;/ 數據包序列號= 0;/RSSI 的環形緩沖區/計數器用于 RSSI 緩沖區統計int8 int8int8Myper5; Myrssi2;Myreceive4;int32 int32int32temp_per; temp_receive;temp_rssi;/存放掉/存放接收的包的個數/存放前 32 個 rssi 值

14、的平均值/ 初始化串口 57600initUART0();#ifdef INCLUDE_PA uint8 gain;/ Select gain (formodules with CC2590/91 only)gain =appSelectGain(); halRfSetGain(gain);#endif/ Initialize BasicRF初始化 Basic RFbasicRfConfig.myAddr = RX_ADDR; if(basicRfInit(&basicRfConfig)=FAILED)HAL_ASSERT(FALSE);basicRfReceiveOn();希望微控第

15、 7 頁 共 10 頁點對點通信試驗北京希望慧聯科技UartTX_Send_String("XWWK Test Data!",strlen("XWWK Test Data!"); UartTX_Send_String("n",strlen("n"); /添加串口測試數據/ Main loop while (TRUE)while(!basicRfPacketIsReady(); / 等待新的數據包if(basicRfReceive(uint8*)&rxPacket, MAX_PAYLOAD_LENGTH, &

16、amp;rssi)>0)halLedSet(3);/*P1_4/ Change byte order from network to host orderUINT32_NTOH(rxPacket.seqNumber); / 改變接收序號的字節順序segNumber = rxPacket.seqNumber;/ If statistics is reset set expected sequence number to/若統計被復位,設置期望收到的數據包序號為已經收到的數據包序號if(resetStats)rxStats.expectedSeqNum = segNumber;resetSt

17、ats=FALSE;/ Subtract old RSSI value from sumrxStats.rssiSum -= perRssiBufperRssiBufCounter; / 從 sum 中減去舊的RSSI 值/ Store new RSSI value in ring buffer, will add it to sum laterperRssiBufperRssiBufCounter = rssi; /之后它將被加入 sum新的 RSSI 值到環形緩沖區,rxStats.rssiSum += perRssiBufperRssiBufCounter;/ 增加新的RSSI 值到su

18、mif(+perRssiBufCounter = RSSI_AVG_WINDOW_SIZE) perRssiBufCounter = 0;/ Wrap ring buffer counter/ Check if received packet is the expected packet是否是所期望收到的數據包檢查接收到的數據包if(rxStats.expectedSeqNum = segNumber) / 是所期望收到的數據包rxStats.expectedSeqNum+;/ If there is a jump in the sequence numbering this means so

19、me packetsin希望微控第 8 頁 共 10 頁點對點通信試驗北京希望慧聯科技/ between has been lost.else if(rxStats.expectedSeqNum < segNumber) / 不是所期望收到的數據包(大于期望收到的數據包的序號)/ 認為丟包rxStats.lostPkts += segNumber - rxStats.expectedSeqNum;rxStats.expectedSeqNum = segNumber + 1;/ If the sequence number is lower than the previous one, w

20、e will assume a/ new data burst has started and we will reset our else / (小于期望收到的數據包的序號)/新的測試開始,復位統計變量rxStats.expectedSeqNum = segNumber + 1; rxStats.rcvdPkts = 0;rxStats.lostPkts = 0;rxStats.rcvdPkts+;statisticsvariables./ reset statistics if button 1 is pressed temp_receive=(int32)rxStats.rcvdPkts

21、; if(temp_receive>1000)if(halButtonPushed()=HAL_BUTTON_1) resetStats = TRUE;rxStats.rcvdPkts = 1;rxStats.lostPkts = 0;Myreceive0=temp_receive/100+'0' Myreceive1=temp_receive%100/10+'0' Myreceive2=temp_receive%10+'0' Myreceive3='0'UartTX_Send_String("RECE:",strlen("RECE:");/開始上報數據UartTX_Send_String(Myreceive,4);UartTX_Send_String("",strlen(""

溫馨提示

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

評論

0/150

提交評論