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

PRF 2.4G 16M Crystal Trx

1 功能概述

本例程演示 PRF 2.4G 在 16MHz 外部晶振(XTH=16MHz) 条件下的 Tx/Rx 通信基本流程,重点展示:

  • 16MHz 外晶振条件下的系统时钟初始化(Clock_Init()

  • 使用 16MHz 专用 PRF 库 prf_lib_16m.lib

  • Tx 端周期性发送 Payload,Rx 端接收并打印 Payload 与 RSSI

注意:本例程仅适用于 16MHz 外部晶振 的芯片/模组;若硬件为 32MHz 外晶振,系统时钟会不正确,导致例程表现异常。

2 例程位置与工程文件

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

  • Keil 工程:keil\clock_16m_trx.uvprojx

  • 主要代码:src\main.c

  • 依赖库:proprietary_rf\prf_lib_16m.lib(与普通晶振例程使用的 prf_lib.lib 不同)

3 环境准备

3.1 硬件设备

建议准备两套硬件做对测(Tx 一套 + Rx 一套),并确保两套硬件均为 16MHz 外晶振版本

  • 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\clock_16m_trx.uvprojx

  2. 选择目标工程 clock_16m_tx

  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,编译并烧录

注意:Keil 工程只有一个目标 clock_16m_tx,Rx 侧同样通过修改 TX_MODE 来编译烧录。

5.2 上电运行

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

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

  • Rx 端持续处于接收状态,收到包就打印内容与 RSSI

6 16MHz 专用配置说明

6.1 系统时钟初始化(Clock_Init)

例程在 main()Clock_Init() 中包含 16MHz 外晶振相关的关键配置(摘取要点):

  • 使能 DPLL 16MHz 模式:PMU->DPLL_CTRL |= DPLL_CTRL_CLK_DPLL_16M_MODE_AON_Msk

串口打印会输出 SystemCoreClock,用于快速验证时钟是否正确:

  • 正常情况下应看到类似:CPU @ 48000000Hz

6.2 PRF 库选择(prf_lib_16m.lib)

本例程 Keil 工程已默认链接 16MHz 专用库:proprietary_rf\prf_lib_16m.lib

如果你将该例程移植到其他工程或手动改工程配置,请务必确认链接库仍为 prf_lib_16m.lib;否则在 16MHz 外晶振条件下,可能出现时钟/参数不匹配导致收发异常。

7 关键配置说明(RFConfig_t)

例程默认 RF 配置位于 src\main.cgRfConfig,Tx/Rx 需要保持一致:

  • WorkMode = PAN271_WORKMODE_NORMAL:普通模式

  • Channel = 55:工作信道

  • DataRate = PAN271_DR_1Mbps:速率

  • TxPower = PAN271_TXPWR_11dBm:发射功率

  • AddrWidth = PAN271_WIDTH_5BYTES:地址宽度

  • TxAddr / RxAddr[pipe0]:收发地址(TxAddr 与 Rx pipe0 地址需一致)

  • EnTxNoAck = ENABLE:例程默认不需要 ACK

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

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

8 串口输出示例

8.1 Tx 端

典型输出:

CPU @ 48000000Hz
tx done, count: 1
tx done, count: 2
...

8.2 Rx 端

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

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

9 注意事项与排查建议

  1. 硬件晶振必须为 16MHz 外晶振:若为 32MHz 外晶振,SystemCoreClock 打印值通常会异常,进而导致 RF 收发异常。

  2. Rx 收不到包时优先核对:两板 Channel/DataRate/AddrWidth/TxAddr/RxAddr/TxLen/RxLen 是否完全一致。

  3. 串口无打印时检查:波特率 115200、UART0 复用引脚(P0.5/P0.6)与底板跳线是否按要求短接、COM 口是否正确。