微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > Z-Stack中RSSI和LQI值的获取

Z-Stack中RSSI和LQI值的获取

时间:10-02 整理:3721RD 点击:
以下内容为转载,感觉对于了解RSSI和LQI有益,特分享下,最后再次感谢原作者的分享精神
1.简介

RSSI:信号强度值

LQI:连接质量

在协议栈中中,LQI是可以直接从接收数据后的结构体中得到,例如接收数据使用的结构定义为pkt

:LQI = pkt->LinkQuality;

RSSI是通过读取max_rx.c文件中的数组rxBuf的第一位得到的,这里得到的信号强度值是以2进制补码的形式体现,具体使用可以参看CC2430 Data Sheet。

RSSI = rxBuf[0];

2.RSSI与LQI之间的转换关系如下:

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

3.补充

RSSI反映接收信号强度,LQI反映信号的连接质量,两者都可以通过读取芯片的寄存器得到。LQI虽然能够判断连接质量,但会因调制方式的不同而不同。

RSSI是判断两个节点距离的很好的参数。在从RSSI寄存器中读到数值后我们需要进行一系列转化,才能得到接收强度值。首先判断RSSI寄存器中的值RSSI dec是否大于128,如果成立,则:

如果小于128,则:

http://blog.sina.com.cn/s/blog_5581213b0100ppra.html

LinkQuality其实就是LQI值,通过这个公式RSSI = -(81-(LQI*91)/255)转换成了RSSI值,RSSI值再通过这个公式d=10^((ABS(RSSI)-A)/(10*n))得到距离了,至于精确度可以自己做实验测得对应曲线图,环境不一样精确度都会不一样的。

调试:(串口调试助手为十六进制显示)

在RefNode.c文件中通过UartTX_Send_String(rspMsg[LOCATION_XY_RSSI_RSSI_IDX]);语句向串口读取RSSI值。

由于rspMsg[LOCATION_XY_RSSI_RSSI_IDX]是一个int8类型的值,即有符号的8位二进制补码的形式,

因此在读取之前需要对其进行补码到原码的转换,

语句为:temp=(rspMsg[LOCATION_XY_RSSI_RSSI_IDX]-1);

temp为rspMsg[LOCATION_XY_RSSI_RSSI_IDX]的原码的绝对值。

当参考节点与盲节点距离为1m时,RSSI的范围在-30dbm~-50dbm,即temp:00011110~00110010,1E~32.

但是,实际1m距离得到的temp值=98,与temp范围值不符。

于是,转向读取mac_rx.c文件中的pMacDataTx->internal.rssi= rssiDbm值

通过temp=(pMacDataTx->internal.rssi-1)语句求出rssi的原码的绝对值

得到1m的temp值为29

*************************************************************************

谢谢分享!

您好,您的这个公式


中的RSSI_dec是指的寄存器中的rssi值?RSSI_dBm是指的最后实际应用的rssi值?另外,用作补偿的RSSI_offset是多少啊?"RSSI值再通过这个公式d=10^((ABS(RSSI)-A)/(10*n))得到距离了,至于精确度可以自己做实验测得对应曲线图,环境不一样精确度都会不一样的。"
我测试时在1m或者2m或3m等固定节点时,静止情况下,采样200次,rssi值一直在上下波动,最好的情况下波动范围是5dB左右,怎样取值比较好?
后来我直接用这些采样的平均值计算。但是多个节点处的rssi值进行拟合对数曲线、得到对数公式后,将平均rssi代入rssi公式,与真正的距离差别很大,



有其他比较好的处理方法吗?

另外,那个小于128情况下的链接http://blog.sina.com.cn/s/blog_5581213b0100ppra.html失效了,


还有原文地址吗?麻烦您再发一下,或者我的邮箱:acd8040@qq.com,谢谢

感谢分享。

非常感谢分享

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top