如何使用ZStack——获取RSSI和LQI

本文详细介绍了RSSI(信号强度值)和LQI(链接质量指示)的概念及应用,包括它们如何通过读取芯片寄存器获取,RSSI与LQI之间的转换公式,并提供了实际使用的代码示例。

1.简介

RSSI:信号强度值

LQI:连接质量

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

:LQI =pkt->LinkQuality;

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

RSSI = rxBuf[0];

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

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

3.补充

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

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

如果小于128,则:

RSSI与LQI - weidebao1985 - 我的博客



CC2430内置接收信号强度指示器(RSSI),其数字值为8位有符号二进制补码,可以从寄存器RSSIL.RSSI_VAL读出。RSSI寄存器值RSSI.RSSI_VAL在RF上涉及的电能P为:P=(RSSI_VAL+RSSI_OFFSET) dBm,式中:RSSI_OFFSET是一个系统开发期间得到的来自前端增益的经验值,RSSI_OFFSET近似值为-45。

ZStack中获得P的语句为:

#define MAC_RADIO_RSSI_OFFSET  HAL_MAC_RSSI_OFFSET

#define HAL_MAC_RSSI_OFFSET  -45

rssiDbm = PROPRIETARY_FCS_RSSI(rxBuf) + MAC_RADIO_RSSI_OFFSET;

链路质量指示(LQI)计量所收到的数据包的强度和质量,可使用接收信号强度指示器(RSSI)软件产生LQI值,尽管这样计算有若干缺点,但ZStack中的确是这样计算的。
#define MAC_RADIO_RECEIVER_SENSITIVITY_DBM      -91
#define MAC_RADIO_RECEIVER_SATURATION_DBM       10 

#define MAC_SPEC_ED_MIN_DBM_ABOVE_RECEIVER_SENSITIVITY    10

#define ED_RF_POWER_MIN_DBM   (MAC_RADIO_RECEIVER_SENSITIVITY_DBM + MAC_SPEC_ED_MIN_DBM_ABOVE_RECEIVER_SENSITIVITY)
#define ED_RF_POWER_MAX_DBM   MAC_RADIO_RECEIVER_SATURATION_DBM

ed = (MAC_SPEC_ED_MAX * (rssiDbm - ED_RF_POWER_MIN_DBM)) / (ED_RF_POWER_MAX_DBM - ED_RF_POWER_MIN_DBM);

pRxBuf->mac.mpduLinkQuality = macRadioComputeLQI(rssiDbm, corr);

LQI值也可以在应用层通过afIncomingMSGPacket_t *pkt; pkt->LinkQuality直接获得。

RSSI和LQI的关系为:LQI=255*(RSSI+81)/91

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值