Z-Stack中RSSI和LQI值的获取

1.简介

RSSI:信号强度值

LQI:连接质量

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

:LQI = pkt->LinkQuality;

RSSI是通过读取max_rx.c文件中的数组rxBuf的第一位得到的,这里得到的信号强度值是以2进制补码的形式体现,具体使用可以参看2430 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

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


  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值