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

rf_rx例程

1 功能概述

rf_rx演示了RF在PAN262xb1_evb上接收数据的使用方法,主要包括:

  • XN297普通型接收

  • XN297增强型接收

  • 24L01普通型接收

  • 24L01增强型接收

2 环境准备

  • Board: PAN262xb1_evb两块(另一块烧录rf_tx程序)

  • Micro USB线 用于供电和查看串口打印Log

  • 硬件接线:

    • 将 J19 开关拔至TX侧,将P3_1与UART的TX引脚相连

3 编译和烧录

例程位置:pan262x_dk\01_SDK\example_basic\rf\rf_rx

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

4 演示说明

PAN262xb1_evb接收数据,可以通过串口打印出接收的状态。

下面对使用XN297L私有XN297L私有2.4G协议进行数据发送时的不同配置示例进行说明,使用24L01私有2.4G协议的示例效果一致,不再额外说明。

4.1 普通工作模式

AckPayload不使能(RF_APL_DISABLE), DynamicPayload不使能(RF_DPL_DISABLE)

  • 参数配置

    序号

    参数配置

    参数说明

    1

    RF_CHIPMODE_XN297

    xn297芯片模式

    2

    RF_WORKMODE_NORMAL

    普通型工作模式

    3

    RF_APL_DISABLE

    不使能ackpayload

    4

    RF_DPL_DISABLE

    不使能dynamic payload

  • 过程说明

    发送端发送一包数据后,等待发送完成中断置位,就表示发成功,硬件上没有重发机制;

    接收端收到一包数据后,接收完成中断会置位,用户即可读取接收到的数据。

  • 发送端成功发送64字节长度的数据

    TxLen[64]: E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1

    TxLen[64]: E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2

  • 接收端成功接收64字节长度的数据

    RxLen[64]: E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1

    RxLen[64]: E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2

4.2 增强型工作模式1

  • 参数配置

    序号

    参数配置

    参数说明

    1

    RF_CHIPMODE_XN297

    xn297芯片模式

    2

    RF_WORKMODE_ENHANCE

    增强型工作模式

    3

    RF_APL_DISABLE

    不使能ackpayload,
    回复ack时不带用户数据

    4

    RF_DPL_DISABLE

    不使能dynamic payload

  • 过程说明

    发送端发送一包数据后,必须等到接收端回复的ack包后,才表示发送成功;

    否则会按用户设定的发送次数继续发送直到接收到ack包,或者达到最达发送次数才会停止发送。

    另外,由于动态负载长度未使能,发送端和接收端必须设定相同的数据长度才能正常通信。

    RxTx之间数据发送的流程如下:

    tx

  • 发送端成功发送64字节长度的数据

    TxLen[64]: E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1

    TxLen[64]: E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2

  • 接收端成功接收64字节长度的数据

    RxLen[64]: E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1

    RxLen[64]: E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2

4.3 增强型工作模式2

  • 参数配置

    序号

    参数配置

    参数说明

    1

    RF_CHIPMODE_XN297

    xn297芯片模式

    2

    RF_WORKMODE_ENHANCE

    增强型工作模式

    3

    RF_APL_ENABLE

    使能ackpayload,
    回复ack时可带用户数据

    4

    RF_DPL_DISABLE

    不使能dynamic payload

  • 过程说明

    发送端发送一包数据后,必须等到接收端回复的ack数据包后,才表示发送成功;

    否则会按用户设定的发送次数继续发送直到接收到ack数据包,或者达到最达发送次数才会停止发送。

    另外,由于动态负载长度未使能,发送端和接收端必须设定相同的数据长度才能正常通信。

    RxTx之间数据发送的流程如下:

    tx

  • 发送端成功发送64字节长度的数据

    TxLen[32]: E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1

    RxLen[64]: E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8

    TxLen[32]: E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2

    RxLen[32]: E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9

  • 接收端成功接收64字节长度的数据

    RxLen[64]: E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1

    TxLen[64]: E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8

    RxLen[64]: E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2

    TxLen[64]: E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9

4.4 增强型工作模式3

  • 参数配置

    序号

    参数配置

    参数说明

    1

    RF_CHIPMODE_XN297

    xn297芯片模式

    2

    RF_WORKMODE_ENHANCE

    增强型工作模式

    3

    RF_APL_ENABLE

    使能ackpayload,
    回复ack时可带用户数据

    4

    RF_DPL_ENABLE

    使能dynamic payload,
    发送端可以发送可变长包,
    接收端可以接收可变长包

  • 过程说明

    发送端发送一包数据后,必须等到接收端回复的ack数据包后,才表示发送成功;

    否则会按用户设定的发送次数继续发送直到接收到ack数据包,或者达到最达发送次数才会停止发送。

    另外,由于使能动态负载,发送端和接收端不必设定相同的数据长度才能正常通信。

    RxTx之间数据发送的流程如下:

    tx

    修改发送端代码中的RF_TX_BUF_SIZE,验证动态负载(可变长包)功能:

    #define RF_TX_BUF_SIZE 35 
    
  • 发送端成功发送35字节长度的数据,并接收到接收端回复的64字节数据

    TxLen[35]: 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D RxLen[64]: 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F

    TxLen[35]: 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E RxLen[64]: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30

  • 接收端成功接收35字节长度的数据,并回复64字节数据给发送端

    RxLen[35]: 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D TxLen[64]: 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F

    RxLen[35]: 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E TxLen[64]: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30

注:

与上一节内容对比,当DynamicPayload 使能时,允许发送端的发送缓冲区长度RF_TX_BUF_SIZE(31)小于Rx端的接收缓冲区长度RF_RX_BUF_SIZE(32),可以看到接收端正确接收到了长度为31字节的数据。

5 开发说明

用户只需配置gRfConfig中的成员,即可实现上以上各个功能的验证过程。

RFConfig_t xdata gRfConfig =
{
    /*.Channel        =  */ 2418,
    /*.TxPower        =  */ 7,
    /*.DataRate       =  */ RF_DR_1Mbps,
    /*.ChipMode       =  */ RF_CHIPMODE_XN297,
    /*.WorkMode       =  */ RF_WORKMODE_ENHANCE,
    /*.EnAPL          =  */ ENABLE,
    /*.EnDPL          =  */ ENABLE,
    /*.EnTxNoAck      =  */ DISABLE,
    /*.EnWhite        =  */ ENABLE,
    /*.Crc            =  */ RF_CRC_2BYTE,
    /*.AddrWidth      =  */ RF_ADRESS_SIZE,
    /*.TRxAddr        =  */ {0x10, 0x22, 0x55, 0x0F, 0x71},
    /*.RxTimeoutUs    =  */ 1000,
    /*.TxSetupTimeUs  =  */ 200,
    /*.TxBuf          =  */ {0},
    /*.RxBuf          =  */ {0},
    /*.TxLen          =  */ 0,
    /*.RxLen          =  */ 0,
};

RF参数初始化

APP_RfInit(&gRfConfig);

6 RAM/Flash资源使用情况

Program Size: data=40.1 xdata=127 const=57 code=6233