在Z-stack中怎么读取RSSI的值
时间:10-02
整理:3721RD
点击:
我想做ZigBee无线定位,刚刚接触RSSI,现在还不知道怎么在Z-stack中怎么读取RSSI的值,请帮忙!
你仔细看下你的数据包结构体,有rssi的变量
恩恩, 我找到了,因为这个值是一个有符号的char型数据,我把他的真值算出来(pkt->rssi)+1,这个就是它的真值吧,然后我带入公式计算,但是得到距离d的大概值,我改变ZigBee模块的距离,但是这个值不变,这个是怎么回事呢?如有代码指导,非常感谢
两种方式获取RSSI值:(1)直接读取RSSI寄存器(RSSI.RSSI_VAL);(2)读取数据包RSSI变量(pkg->rssi)。
RSSI_VAL寄存器值与RF接收信号功率的经验关系:
P=(RSSI_VAL+RSSI_OFFSET)dBm
RSSI_OFFET是来自前端增益的经验值,大约为-45。 CC2530发射功率范围为-22dBm+3dBm,可在协议栈中设置调整, RSSI的取值范围为-40-95dBm,CC2530中取整数。
RSSI和P都是表征功率的物理量,只是单位不同,二者的换算关系为:
RSSI=10lgP
P单位为mW,RSSI单位为dBm,1mW折算为0dBm,由于CC2530功耗较低,一般发射功率小于1mW,故RSSI取值为负,且绝对值越大信号越弱。
pkg->rssi是有符号数,以补码形式存储,而程序中多为无符号数,当rssi<0时要用2^8-rssi(256-rssi)来获取rssi的绝对值。