点对点通信实验误码率和接收信号强度测试_第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

提交评论