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

PRF 2.4G Enhance Trx

1 功能概述

本例程演示 PRF 2.4G 增强(Enhance)工作模式下的 Tx/Rx 通信基本流程,重点展示:

  • 开启 .WorkMode = PAN271_WORKMODE_ENHANCE, ACK(EnTxNoAck = DISABLE)时的收发过程

  • Rx 端在接收中断中封装并发送 ACK Payload

  • 多 PIPE 地址配置(示例中启用 Pipe0/1/2)

例程工程支持通过宏一键切换 Tx/Rx(需要两块板分别烧录 Tx 与 Rx)。

2 例程位置与工程文件

  • 例程目录:<PAN271x-DK>\01_SDK\samples\proprietary_rf\01_enhance_trx

    • 若你的 SDK 外层还有 01_SDK 目录,也可能是:<PAN271x-DK>\01_SDK\samples\proprietary_rf\01_enhance_trx

  • Keil 工程:keil\enhance_trx.uvprojx

  • 主要代码:src\main.c

3 环境准备

3.1 硬件设备

建议准备两套硬件做对测(Tx 一套 + Rx 一套):

  • PAN271x EVB 核心板底板各 2 套(至少 2 块核心板)

  • JLink 仿真器(用于下载程序)

  • USB-TypeC 线(用于供电与查看串口 Log)

  • 杜邦线/跳线帽(用于连接 SWD 与串口相关跳线)

3.2 硬件接线

对每一套板:

  1. 将 EVB 核心板插到底板上

  2. 串口(UART0)连接:

    • 用 USB-TypeC 线,将 PC 与底板 USB->UART 口相连

    • 用跳线帽/杜邦线将底板排针:J8 (P06 & TXD) 与 J9 (P05 & RXD) 分别短接

      • 例程中 UART0 引脚复用为:P0.5=TX,P0.6=RX(见 Sys_Init()

  3. JLink(SWD)连接:

    • SWD_CLK → 底板 P00

    • SWD_DAT → 底板 P01

    • SWD_GND → 底板 GND

3.3 PC 软件

  • 串口工具:UartAssist / SecureCRT / MobaXterm 等

  • 串口参数:115200, 8N1

4 编译与烧录(Keil)

  1. 打开工程 keil\enhance_trx.uvprojx

  2. 选择目标工程 enhance_trx

  3. 编译:Build

  4. 下载:Download

说明:该工程在 Keil 的 Flash Download 配置里使用了外部烧录工具(JFlash)与 keil\settings.jflash,因此“下载”动作会调用 SDK 自带的 JFlash 执行擦除/烧录/启动。

5 使用方法(Tx/Rx 对测)

5.1 选择 Tx 或 Rx

src\main.c 顶部通过宏切换:

#define TX_MODE (1)   // 1=Tx, 0=Rx
  • Tx 板:保持 TX_MODE=1,编译并烧录

  • Rx 板:修改为 TX_MODE=0,编译并烧录

注意:Tx 与 Rx 的 RF 配置必须一致(频道、速率、地址宽度、Payload 长度、是否启用 ACK 等)。

5.2 上电运行

两块板均上电后,分别打开各自串口。

  • Tx 端约每 300ms 发送一次 Payload

  • Rx 端持续处于接收状态,收到包后打印 Payload + RSSI,并准备 ACK Payload

6 增强模式(ENHANCE)要点

本例程默认:

  • WorkMode = PAN271_WORKMODE_ENHANCE

  • EnTxNoAck = DISABLE(即 需要 ACK

启用 ACK 时的关键点:

  • Tx 端需要配置 RxTimeoutUs 用于等待 ACK(例程 Tx 侧设为 300us)

  • Rx 端需要在“接收完成中断”中准备 ACK payload,并调用 PAN271_RF_SetTxData()

    • 例程在 event_rx_fun() 中对 TxBuf 做自增并调用 PAN271_RF_SetTxData(TxBuf, gRfConfig.TxLen)

如果将 EnTxNoAck 改为 ENABLE(不需要 ACK),Rx 侧的 ACK 封装逻辑不会执行;此时现象更接近普通模式,但仍处于 ENHANCE workmode。

7 关键配置说明(RFConfig_t)

例程默认配置位于 src\main.cgRfConfig

  • Channel = 68:工作信道(Tx/Rx 必须一致)

  • DataRate = PAN271_DR_1Mbps:速率(Tx/Rx 必须一致)

  • AddrWidth = PAN271_WIDTH_5BYTES:地址宽度(Tx/Rx 必须一致)

  • TxAddr = {12 34 56 78 9A}:Tx 地址

  • RxAddr[0..2]:Pipe0/1/2 地址(示例中均启用)

    • 对测最简单做法:让 TxAddrRxAddr[0] 完全一致(例程默认就是这样)

  • TxLen / RxLen:Payload 长度(例程为 32 字节)

    • TxBuf/RxBuf 数组空间需要是 4 的整数倍(例程已有注释)

  • RxTimeoutUs:等待接收/ACK 的超时(例程 Tx 侧 300us,Rx 侧 0)

  • TrxTransTime = 50:收/发切换等待时间(例程注释说明默认固定为 50)

自动重发参数(例程默认关闭):

  • AutoDelayUs:自动重发间隔

  • AutoMaxCnt:自动重发最大次数

8 串口输出示例

8.1 Tx 端

典型输出:

CPU @ 48000000Hz
tx done cnt=1
tx done cnt=2
...

若开启 ACK 且对端未工作/地址不匹配,可能出现超时打印:

rx timeout

8.2 Rx 端

典型输出(内容会随实际 Payload 变化):

CPU @ 48000000Hz
rx len:32
00 01 02 03 04 05 06 07 ...
rssi:-45 dBm Cnt:1