当前文档版本为 v0.8.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

RSSI应用参考

1 功能介绍

PAN3029/3060读取RSSI功能是指在芯片接收到数据时,读取当前数据包的信号强度值的功能。在收到RX_IRQ信号之后,直接读取寄存器获取RSSI值。

2 软件设计参考

2.1 软件设计流程

1、芯片初始化;

2、配置相关参数;

3、芯片进入接收模式;

4、芯片接收数据,并读取RSSI值。

2.2 软件设计验证

参照SDK Rx Demo。

2.2.1 SDK示例

参考代码:

ret = rf_init();												//初始化
if(ret != OK)
{
    printf("  RF Init Fail");
    while(1);
}
rf_set_default_para();											//配置参数
rf_enter_continous_rx();										//进入连续接收模式
while (1)
{ 
    rf_irq_process();		//3029中断处理
    key_scan();
    key_event_process();
    process_rf_events();		//事件处理
}			

示例代码配置了连续接收模式,并在接收到数据后,将接收到的数据内容及SNR、RSSI值打印出来。

if(irq & REG_IRQ_RX_DONE)
       {
            RxDoneParams.Snr = rf_get_snr();
            RxDoneParams.Rssi = rf_get_rssi();
            RxDoneParams.Size = rf_recv_packet(RxDoneParams.Payload);
			 irq &= ~REG_IRQ_RX_DONE;
			 rf_clr_irq(REG_IRQ_RX_DONE);
			 rf_set_recv_flag(RADIO_FLAG_RXDONE);
        }	

中断处理函数中,当芯片接收到数据,产生REG_IRQ_RX_DONE(RX_IRQ)中断时,通过rf_get_rssi接口函数读取当前数据包的信号强度值。

2.2.2 验证结果

串口助手显示结果为:

wps18

图 2-1 串口助手显示结果

3 注意事项

3.1 关于RSSI

RSSI功能读取信号强度值需要在接收到数据包的时候读取,且在清除rxdone中断之前。如果清除中断,这个值就会失效。RSSI的测量范围是-10到-125,不同参数(SF、BW)模式下,测量范围略有不同。