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

rf_tx例程

1 功能概述

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

  • XN297普通型接收

  • XN297增强型接收

  • 24L01普通型接收

  • 24L01增强型接收

2 环境准备

  • Board: PAN2628b1_evb两块(另一块烧录rf_rx程序)

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

  • 硬件接线:

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

3 编译和烧录

例程位置:pan2628_dk\01_SDK\example_basic\rf\rf_tx

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

4 演示说明

PAN2628b1_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

  • 过程说明

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

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

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

    Tx[32]: [Hex] 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D

    Tx[32]: [Hex] 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E

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

    Rx[32]: [Hex] 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D

    Rx[32]: [Hex] 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E

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

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

    Tx[32]: [Hex] 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D

    Tx[32]: [Hex] 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E

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

    Rx[32]: [Hex] 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D

    Rx[32]: [Hex] 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E

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

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

    Tx[32]: [Hex] 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A Rx[32]: [Hex] 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C Tx[32]: [Hex] 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B Rx[32]: [Hex] 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

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

    Rx[32]: [Hex] 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A Tx[32]: [Hex] 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C Rx[32]: [Hex] 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B Tx[32]: [Hex] 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

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成31,验证动态负载(可变长包)功能:

    #define RF_TX_BUF_SIZE 31 
    
  • 发送端成功发送32字节长度的数据

    Tx[31]: [Hex] 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A Rx[31]: [Hex] 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C Tx[31]: [Hex] 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B Rx[31]: [Hex] 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

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

    Rx[31]: [Hex] 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A Tx[31]: [Hex] 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C Rx[31]: [Hex] 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B Tx[31]: [Hex] 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D

注:

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

5 开发说明

设备的物理层以及用户层配置分别存放在结构体gPhyCfggUsrCfg中,如需修改配置,修改该结构体即可。

RF_PhyCfg_t gPhyCfg = 
{
    10,             /* rf channel: 2400 + 10*/
    RF_DR_1Mbps,    /* rf date rate */
    RF_CRC_2BYTE,   /* rf crc schem */
    RF_TXPWR_13dBm  /* rf tx power */
};

RF_UsrCfg_t gUsrCfg = /* Use 'UsrConfig6' in the above config table */
{
    RF_CHIPMODE_XN297,    /* chip mode: xn297 */
    RF_WORKMODE_ENHANCE,  /* work mode: enhance */
    RF_APL_ENABLE,        /* ack payload: enable */
    RF_DPL_ENABLE,        /* dynamic payload: enable*/
    DISABLE               /* tx noack: disable */
};

RF参数初始化

APP_RfInit();

6 RAM/Flash资源使用情况

Program Size: data=53.1 xdata=73 const=64 code=6033