查看: 28619|回复: 31

“飞比”Zigbee论坛CC2530开发板学习教程(三)-- 例2.传输质量(PER)测试

[复制链接]
outman 发表于 2010-7-7 17:00:30 | 显示全部楼层 |阅读模式
PER--Packet Error Rate,中文我们暂且叫“误包率”吧,听起来没有“误码率”来得顺口,只是这个测试的基本单位是“数据包”,一个数据包又包含了N多的“码”,所以叫误包率应该更准确些。或者直接叫PER吧,本人也曾极度反对中国人和中国人用英文,不过有的时候似乎效率更高些。。。

  在上一个例子中,用Basic RF实现了一个基本的点对点传输的实验。本例程仍然基于相同的平台,但关注的是一个对无线通讯来讲一个至关重要的参数,就是传输质量,上例中曾增加过RSSI值的显示,但这只是一个微观参数,我们最终关注的是在不同的传输速率下,数据包能不能完全接收?如果不能,失误率是多少--这个参数就叫PER。

  [注:本文源自www.feibit.com--“飞比”Zigbee论坛,为尊重劳动者成果,如需转载请保留此行,并通知作者]

  例2.基于Basic RF的传输质量(PER)测试  
  注:本例程的源代码来源于TI官方网站,为方便大家,请点此下载。代码解压后请进入..\ide\srf05_cc2530\iar,打开per_test工程文件进行编译、调试。另外,此例在Zstack2006中也有相同功能的例程,本教程均可适用。
  
  [一]程序功能  
  本例程要求有两个节点,实现一个发送器、一个接收器的单向RF连接。在程序启动时,要对本节点做发送还是接收器进行设置。如果是发送器在使用前必须进行如下几个设置:
  1. 传输频率
  2. 发送器输出功率
  3. 总共要发送的数据包个数
  4. 发射速率(每秒种发送多少个包)
  如果设置为接收器,是需要设置传输频率。但接收器会显示状态:PER/RSSI值及已收到数据包个数

  [二]操作说明
  将程序编译、下载至开发板后,按Reset键后,屏幕显示如下:



  此时,按下“S1”键,进入设置菜单:



  用摇杆(Joystick)左右键进行选择,“S1”键进行确认。具体需要设置的参数如下表所图:     
       

屏幕显示

中文解释

备选参数及说明

Channel

传输频率选择

11 – 26 (2405 – 2480 MHz)

Operating Mode

设备模式

Receiver, Transmitter(接收器,发送器)

TX Output Power

发射功率

-3 dBm, 0 dBm, 4 dBm

Burst Size

本次要发送的数据包个数,达到数量后发送会停止。

1K, 10K, 100K, 1M

Packet rate

发射速率(每秒种发送多少个包)

100, 50, 20,10




  通过摇杆及S1键分别将两个节点设为发送器,及接收器,然后设置相应参数后,两个设置分别显示如下:

  


  此时按发送器摇杆上的中间键,开始发送数据,如下所示:



接收端误包率及RSSI值显示:


  注:接收器显示的PER/RSSI值可以通过按S1值进行重置。

  [三]系统框架
  与例1基本相同,请参考上一章。此处仅探讨下本例中计算PER和RSSI值的方法:

  为了获取传输的性能参数,接收器中包含了如下几个数据(包含在rxStats变量中,其类型为perRxStats_t)
  rxStats.expectedSeqNum 预计下一个数据包的序号,其值等于“成功接收的数据包”+“丢失的数据包”+1
  rxStats.rssiSum      上32个数据包的RSSI值的和
  rxStats.rcvdPkts      每次PER测试中,成功接收到的数据包的个数
  rxStats.lostPkts      丢失数据包的个数

  其中丢失数据包个数是通过数据包序号的“跳跃”来计算的,比如收到第10个数据包后,expectedSeqNum应该为11,但在收到下一个数据包后发现其序号为12,那就说明其中丢了一个包。所以“丢失数据包个数”只有在后一个数据包到达时才能知道。另外,有错误的数据包也被认为是丢失的。

  PER值是用如下公式进行计算的:
  PER = 1000* rxStats.lostPkts/ (rxStats. lostPkts+ rxStats. rcvdPkts)
  (rxStats. rcvdPkts>=1)

  RSSI的值包含在每个数据包"payload"后的第一个字节,但这个值并非实际的RSSI值,还要加上一个固定的偏移量,偏移量的大小可以从CC2530的数据手册中找到。并且程序指定用32个数据包的RSSI平均值作为最终的结果在屏幕上显示,程序中有一个先进先出的“环形”buffer来记录前32个包的RSSI值作为计算基准。

  [四]网络结构及协议解析
  请参考上一章。

  [五]扩展思考
  1. RSSI, SNR, LQI均与信号质量相关,他们是什么关系?LQI(连接质量指示)如何得到的?
  2. 如何提高信号质量,降低误包率?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
xingqing 发表于 2010-8-4 22:11:59 | 显示全部楼层
恩呢 我这几天也开始分析 这里面的程序了 嘿嘿。。  楼主从整体分析了下他的大概功能  有了整体的框架再去细细分析  这就好办多了  希望楼主能坚持写下去
luonuan 发表于 2010-11-20 14:35:58 | 显示全部楼层
恩,我只有支持的份了,就能看懂楼主写的
shiming_zhang 发表于 2011-1-14 18:15:23 | 显示全部楼层
为什么我在编译的时候说Configuration is up-to data.(配置已到期)
 楼主| outman 发表于 2011-1-14 20:43:05 | 显示全部楼层
你用rebuild all试试呢?
wuxiujiang 发表于 2011-3-2 19:18:47 | 显示全部楼层
怎么一直都没有跟新啊
 楼主| outman 发表于 2011-3-2 20:18:41 | 显示全部楼层
最近会推出CC2531 USB dongle及相关的教程,多谢您对飞比的关注!
yuqihong 发表于 2011-3-27 14:22:47 | 显示全部楼层
是用rebuild all试试吗?
chenenzhi 发表于 2011-5-19 16:46:21 | 显示全部楼层
这个很实用!
zhengya198902 发表于 2011-8-12 16:25:37 | 显示全部楼层
哈哈,学习,也只能学习了,因为刚开始看这个
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表