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

RX例程

1功能概述

本代码示例主要演示PAN3029的接收功能。

2 环境要求

  • Board: PAN3029 开发板

  • Mini USB线1根,用于给开发板供电和查看串口打印Log

  • J-Link下载器一个,用于程序下载

  • 将 J1,J4用跳帽连接

3 编译和烧录

例程位置:01_HCSDK\Demo\RX\MDK

打开目录下的pan3029.uvprojx工程,编译整个代码工程。

4 使用说明

根据环境要求一节的介绍,正确连接 EVB 开发板的跳线,编译、下载程序:

  1. 在电脑上打开串口调试工具,串口参数:115200/8bit/1stop/无校验

  2. 观察串口打印的内容,理论上初始化成功后,串口会打印相关信息

  3. RX例程需要搭配TX例程使用

串口输出信息如下:

RF Init OK
RX MODE
Rx : SNR: 10.662339 ,RSSI: -12 
0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 
###Rx cnt 1##
Rx : SNR: 11.183337 ,RSSI: -12 
0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 
###Rx cnt 2##
Rx : SNR: 9.770056 ,RSSI: -12 
0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 
###Rx cnt 3##

5代码流程图

image-20240103171606504

图 1 Rx代码流程图

6代码实现

ret = rf_init();												//初始化
if(ret != OK)
{
    DDL_Printf("  RF Init Fail");
    while(1);
}
rf_set_default_para();											//配置参数
rf_enter_continous_rx();										//进入连续接收模式
while (1)
{
    rf_irq_process();											//轮询中断标志
    if(rf_get_recv_flag() == RADIO_FLAG_RXDONE)				       //接收成功
    {
        BSP_LED_Toggle();
        rf_set_recv_flag(RADIO_FLAG_IDLE); 
        DDL_Printf("Rx : SNR: %f ,RSSI: %f \r\n", RxDoneParams.Snr, RxDoneParams.Rssi);
        for(i = 0; i < RxDoneParams.Size; i++)
        {
        DDL_Printf("0x%02x ", RxDoneParams.Payload[i]);
        }
        DDL_Printf("\r\n");
        cnt ++;
        DDL_Printf("###Rx cnt %d##\r\n", cnt); 	
    }
    if((rf_get_recv_flag() == RADIO_FLAG_RXTIMEOUT) || (rf_get_recv_flag() == RADIO_FLAG_RXERR))	//接收失败						
    {
        rf_set_recv_flag(RADIO_FLAG_IDLE); 
        DDL_Printf("Rxerr\r\n");
    }
}

7注意事项

当芯片配置进入连续接收模式后,就可以连续进行数据接收。不论接收成功还是接收失败,芯片都会在接收结束后继续保持接收状态,除非用户主动退出该状态(切换至standby3模式可退出接收状态)。