我想利用CC1101获取RSSI值,下面是我的while循环
while( 1 )
{
CC1101_Clear_RxBuffer( );
CC1101_Set_Mode( RX_MODE );
i = CC1101_Rx_Packet( g_CC1101RxBuffer ); //接收字节
if( 0 != i )
{
rssi_dec = CC1101_Read_Status(0x34);//获取RSSI值
delay_ms(10);
g_CC1101RxBuffer[9] = rssi_dec;
printf("\r\n您发送的消息为:\r\n");
for(t=0;t<10;t++)
{
USART_SendData(USART1, g_CC1101RxBuffer[t]); //向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
printf("\r\n\r\n");//插入换行
}
为什么每两次或者三次才能获取一次RSSI值,发射是每50ms一次(我感觉和这个没关系,因为我改成一秒一次,也是每隔两次才能得到一次),这个值rssi_dec 的格式为unsigned char,读出来的值一般很小,不知道对不对,比如说我在1米的时候读的是4,在2.5米的时候读的是40多,不知道对不对?
具体看下图,
这是1米左右的RSSI值为4,不知道对不对?
这是2.5米处的RSSI值,不太准确,以ASCII码显示的,其值以十进制显示的话在41~47波动,这个值是不是不准确?
请帮忙看一下

