如何使用ZStack——获取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,则:



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

你可能感兴趣的:(如何使用ZStack——获取RSSI和LQI)