在做一个实验,具体想法是:在节点中设置RSSI门限.然后其中某些节点向其他节点发出消息,其他节点收到后,把测得的RSSI值发给中心节点.因为实验的场地面积很小,为避免采集数据过多,故设一个门限,只有RSSI值高于这个门限的,才会接收到.
看了手册里,关于门限设置的,有AGCCTRL寄存器. 手册里有一个绝对门限的公式 THRrssi=MAGN_TARGET+CARRIER_SENSE_ABS_THR-GAINmax 同时手册上有个表(P32,表27),为当数据率250kbps,MAGN_TARGET设为011(33dB)时,AGCCTRL2其他五位的不同组合对应的不同增益值,里面的值都是负数,我把它理解为式中的-GAINmax项,不知道对不对.
然后我的程序中,已经使用了GDO0和GDO2上的信号用于同步字收发检测和串行时钟,故我将IOCFG1设为0x09(当RSSI低于门限时为高电平),在进行接收时,程序中先检测GDO1是否为高,如果为高就不会接收.以达到门限作用.
可是我试了一下,在门限设为-57dBm时,走了很远还能接收(参看了一篇论文,里面相同门限下的距离很短的).
PS:这个-57dBm,我是这样计算的:MAGN_TARGET设为011(33dB),然后参照手册上的表,将另5位设为01000(-90dBm),CARRIER_SENSE_ABS_THR=0000(等于MAGN_TARGET). 然后按照公式THR=33+0-90=-57
不知道这样算是否正确? 还有,利用GDOx上的信号来判断门限是否到达的方法是否正确?
请牛人指点!呵呵,先谢过啦. |