查看: 15793|回复: 5

CC2530 显示上一跳信号强度 RSSI LQI

[复制链接]
我的生活 发表于 2012-11-30 10:49:12 | 显示全部楼层 |阅读模式
协议版本:2.3.1
工程:sampleApp
功能:显示上一跳信号强度

一、什么是RSSI   LQI

摘自葵花宝典3.2.4(OUTMAN):

3.2.4        连接质量指示――LQI
还记得电脑的WIFI指示吧,我也不了解WIFI协议,但我想这应该是相同的东西吧。在802.15.4中,有两种检测连接质量的方法,一个是检测“接收信号强度”――RSS,另外一个是检测“信噪比”――SNR。RSS值是通过检测接收到的信号的全部能量情况来判断的。

  又有人举手了?这位同学有什么问题?――什么,这是怎么做到的?

  呃、、、这个我真不懂,不过我知道肯定有个寄存器来读的。至于这个值是怎么来的,你还是问下做IC的人,或者你找个不是那么忙的教授,说不定他知道~~~不过这位小同学啊,看你问这个问题,我得多说你几句了。你这么“叫真”不好,倒不是打击你,我知道你说不定能成个人物,不过,学习是要讲“深度”和“广度”并举的,如果什么事情都一头钻进去,你会迷路的。。。

  我们继续,那“信噪比”SNR,顾名思义,就是信号除以噪声的比率了。当然,值越大表示信号质量越好。

  每一个接收到的数据包都会做一个LQI的测量,它至少有八个等级。这个测量是物理层很重要的一个任务,因为这个值不但他的直属领导-MAC层要用到,他的上几层领导-网络层和应用层都用得到。比如说网络层(NWK)在选择路由的时候,LQI就是一个很重要的指标,LQI值高的路径当然要优先考虑,当然,这也只是一个因素,比如说这个LQI高的路径里的设备都是电池供电的,那么在频繁选择这个路径的同时,必然会导致这些设备电池寿命缩短。所以,一定要多方面权衡――这就体现了“领导”的作用。。。


二、如何实现?

其实很简单,我们收到每个数据包的时候,RSSI和LQI已经打包好,我们只需要读出来就行了!

typedef struct
{
  osal_event_hdr_t hdr;     /* OSAL Message header */
  uint16 groupId;           /* Message's group ID - 0 if not set */
  uint16 clusterId;         /* Message's cluster ID */
  afAddrType_t srcAddr;     /* Source Address, if endpoint is STUBAPS_INTER_PAN_EP,
                               it's an InterPAN message */
  uint16 macDestAddr;       /* MAC header destination short address */
  uint8 endPoint;           /* destination endpoint */
  uint8 wasBroadcast;       /* TRUE if network destination was a broadcast address */
uint8 LinkQuality;        /* The link quality of the received data frame */
  uint8 correlation;        /* The raw correlation value of the received data frame */
int8  rssi;               /* The received RF power in units dBm */
  uint8 SecurityUse;        /* deprecated */
  uint32 timestamp;         /* receipt timestamp from MAC */
  afMSGCommandFormat_t cmd; /* Application Data */
} afIncomingMSGPacket_t;

这里我把程序贴出来,大家可以试验看一下



gEnableRssi是一个全局变量,默认是0,不打印RSSI,我们可以通过串口控制它:




收到RSSI和LQI后,可以用公式算一下,我试验的结果是基本相近:


串口收到:00 01 BC 24
网络地址:0x0001
RSSI: BC转换十进制是188,  188-255= -67dBm
LQI:24转换十进制 是36

RSSI=-(81-(LQI*91)/255) = -68.153dBm

本帖子中包含更多资源

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

x
萧忆 发表于 2013-4-22 22:53:13 | 显示全部楼层
请问楼主,可不可以把完整的程序发一份给我,我在做cc2530的定位毕设,不知道怎么提取rssi值,求指教...493215856@qq.com  十分感谢
zbee 发表于 2013-8-15 12:11:59 | 显示全部楼层
请问一下,如何把这些程序加入SensorDemo 内,求指教,十分感谢
frandom 发表于 2013-11-5 16:00:32 | 显示全部楼层
能不能看下您的完整程序啊,需要做cc2530定位,初学者,可是做项目继续啊,谢谢楼主了。邮箱573126582@qq.com
nicolenrr 发表于 2014-4-18 11:21:21 | 显示全部楼层
萧忆 发表于 2013-4-22 22:53
请问楼主,可不可以把完整的程序发一份给我,我在做cc2530的定位毕设,不知道怎么提取rssi值,求指教  十分 ...

有没有完整的定位程序,能不能发一份我看看学习一下
Hugo801122 发表于 2014-5-26 15:43:28 | 显示全部楼层
代码都有了,多谢@!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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