masterine 发表于 2010-12-31 12:02:39

Si4432 RSSI信号强度问题

我做了一个简单的测试程序一个模块发一个数据包,然后另一个模块将另一个数据包放过来。发送方不断检测RSSI值。
   现发现,无论接收方有无工作,无发出数据,RSSI值都是一样的,大概是80左右。资料上说RSSI值可以冻结,但我找不到怎么冻结。
   请问这个RSSI是怎么设定才能得到有效数据?

NJ8888 发表于 2010-12-31 12:10:04

你测量到50,那是噪声,不是接收的信号

masterine 发表于 2010-12-31 12:55:07

那如何检测到信号呢?

NJ8888 发表于 2010-12-31 13:00:42

前提是频段一致,工作正常,你如果不停检测并实时观察(比如串口传给PC)就能看到有信号时RSSI会变大,因为发射时个短时间的过程,RSSI也是个动态变的,停止发射RSSI回到噪声电平上

masterine 发表于 2010-12-31 13:32:03

怎么能够直接观测到发射时间那个值呢?这个RSSI应该是接收到的值?难道是发送时候产生的值

wuxinju 发表于 2010-12-31 13:42:13

在同步字侦测中断时读

masterine 发表于 2010-12-31 14:03:16

楼上的方法可以,还有其他办法吗?这样会占用一些资源跟时间

wuxinju 发表于 2010-12-31 16:32:19

期待更好的办法出现

victorlee1988 发表于 2011-1-25 11:10:18

RSSI(Received Signal Strength Indicator)测量的是你接収到的信号强度,信号越强,该值就越大。

610396783 发表于 2011-9-29 12:54:57

回复【5楼】wuxinju
-----------------------------------------------------------------------

5楼说的很对哦 我试验了,效果明显。但是RSSI返回的值是怎么算出来的呢,不是说他的值是接收到的信号的强度吗,是dbm,但是我发送端最大是5dbm,但是rssi的值是80 。怎么理解 ,求明白人解答。

meilitianshi 发表于 2011-10-10 15:05:30

回复【9楼】610396783
-----------------------------------------------------------------------

请问rssi值在什么时候读取,接收数据之后吗?谢谢!

40560335 发表于 2011-10-21 15:47:09

我试过了,查询到接收中断后取值已经来不及了,5楼的办法可行!~

1、把06H设置为0X80使能同步子侦测。
2、写个中断查询函数,如果检测到中断,则查询04H是否为0X80(侦测到同步字),如果为真,读26H即可。

zplmcu 发表于 2011-11-12 00:09:09

one of the following options is recommended: majority polling,
reading the RSSI value within 1 Tb of the RSSI interrupt, or using the RSSI threshold described in the next
paragraph for Clear Channel Assessment (CCA).
IC资料给出两种方式
下面的程序供参考
#define RSSI_SAMPLES 10
U8sampleRSSI (void)
{
   U8 i;
   U8 sample;

   U8    min = 255;
   U8    max = 0;
   U16   sum = 0;

   for(i=0;i<RSSI_SAMPLES;i++)
   {
      sample = phyRead(0x26);

      sum += sample;

      if(sample > max)
      {
         max = sample;
      }

      if(sample < min)
      {
         min = sample;
      }
   }

   sum -= min;
   sum -= max;

   sum /= (RSSI_SAMPLES-2);

   return sum;
}
S16   calcInputPower (U8 rssi)    //线性计算      根据下面的图可以看成是线性的,得出线性方程
{
   S16 value;

   value = rssi;
   value *= 10;
   value /= 19;
   value -=127;

   if(value< -120)
      value = -120;
   else if (value > 0)
      value = 0;

   return value;

}
while(1)
      {
         rssi = sampleRSSI();

         inputPower = calcInputPower (rssi);
}
http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_694403RQNXVX.jpg
(原文件名:QQ截图未命名.jpg)

duguchengxin 发表于 2011-11-18 09:55:06

我用的是SI1000芯片,接收程序一直停在等待接收中断状态,读寄存器状态,RSSI位为1,这表示什么?
页: [1]
查看完整版本: Si4432 RSSI信号强度问题