当前页面为 开发中 版本,查看特定版本的文档,请在页面左下角的下拉菜单中进行选择。

PRF 2.4G LP RF

1 功能概述

本例程演示 PRF 2.4G 发送(Tx)MCU Deepsleep 低功耗结合的基本流程:

  • 初始化 RF(PRF 库)并准备 32 字节 Payload

  • 进入 Deepsleep

  • 通过 SleepTimer(32k) 定时GPIO 上升沿唤醒

  • 唤醒后发送一次 Payload,并在发送完成回调里打印计数

  • 循环执行,实现“休眠-唤醒-发送”的低功耗间歇发射

2 例程位置与工程文件

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

  • Keil 工程:keil\lp_rf.uvprojx

  • 主要代码:src\main.c

3 环境准备

3.1 硬件设备

  • PAN271x EVB 核心板底板 1 套(仅演示“低功耗 + 发射”时 1 套即可)

  • 若要做对测:再准备 1 套板做 Rx

  • 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

可选:GPIO 唤醒口测试

  • 例程默认把 P1.3 (已扩展到J13)配为上升沿唤醒(见 LP_WakeUpPinConfig(P1, GPIO_Pin_3))。

  • 由于函数开启下拉(pulldown),如需外部唤醒,请让 P1.3 从低电平产生一次上升沿(例如接按键到高电平/或外部信号源)。

3.3 PC 软件

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

  • 串口参数:115200, 8N1

4 编译与烧录(Keil)

  1. 打开工程 keil\lp_rf.uvprojx

  2. 选择目标工程 lp_rf

  3. 编译:Build

  4. 下载:Download

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

5 使用方法

5.1 选择 Tx 或 Rx

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

#define TX_MODE (1)   // 1=Tx(默认,带Deepsleep演示), 0=Rx
  • Tx(默认):编译烧录后会周期性“睡眠→唤醒→发送一次”

  • Rx:修改为 TX_MODE=0 后编译烧录,设备会持续接收并打印 Payload + RSSI

5.2 Tx(Deepsleep 间歇发送)流程说明

Tx 模式下主循环核心逻辑如下(摘取要点):

LOG("Enter Deepsleep mode.\r\n");

LP_WakeUpPinConfig(P1, GPIO_Pin_3);     // GPIO 上升沿唤醒

LP_SetUsrSleepTimer(32000*1, 1);        // SleepTimer 比较值,单位=32k时钟周期
LP_EnableDeepsleepTimer1();             // 使能 SleepTimer1 中断 + 唤醒

GPIO_DisableDigitalPath(P0,GPIO_Pin_6); // 关UART0_RX数字通路,降低漏电(按实际RX引脚调整)
LP_EnterDeepSleep();                    // 进入 Deepsleep
GPIO_EnableDigitalPath(P0,GPIO_Pin_6);

LOG("Exit Deepsleep mode.\r\n");

TxBuf[0]++;
PAN271_RF_SetTxData(TxBuf, sizeof(TxBuf));
PAN271_RF_TrxStart();                   // 发送一次

要点说明:

  • LP_SetUsrSleepTimer(sleepTime, idx)sleepTime 单位是 32k 时钟周期数

    • 例如 1 秒约为 32000*1;3 秒可改为 32000*3(参见 drivers/pan_lp.h 的说明)。

  • LP_EnableDeepsleepTimer1() 使能的是 SleepTimer1(对应该例程的 SLPTMR1_IRQHandler)。

  • 进入低功耗前关闭 UART0_RX 的数字通路,常用于降低低功耗漏电;唤醒后再恢复。

5.3 Rx(对测/调试)使用说明

Rx 模式下会执行:

PAN271_RF_TrxStart();
while(1) { }

收到包后会在接收回调中打印:Payload 长度、十六进制内容、RSSI。

对测建议:

  • Tx 端:使用本例程(TX_MODE=1

  • Rx 端:可使用本例程编译成 TX_MODE=0,或直接使用 normal_trx 的 Rx 端

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

6 关键配置说明

6.1 RFConfig_t(结构体参数)

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

  • WorkMode = PAN271_WORKMODE_NORMAL:普通模式

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

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

  • TxPower = PAN271_TXPWR_11dBm:发射功率

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

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

  • RxAddr[0]:Pipe0 地址(示例启用且与 TxAddr 一致)

  • EnTxNoAck = ENABLE:不需要 ACK

  • TxLen/RxLen = 32:Payload 长度

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

6.2 RF 中断回调(发送完成打印)

例程在 src\main.c 实现了 PAN271_RF_ISR_Init(),用于注册 RF 中断回调(如 tx_cb)。

  • 发送完成后会进入 event_tx_fun() 并打印 tx done, count: N

  • 该函数由 RF 驱动在 PAN271_RF_Init() 内部调用(驱动里提供了弱定义,用户实现会覆盖)

6.3 低功耗相关配置

进入 Deepsleep 前,例程还做了两类常见的“降漏电”处理:

  1. 关闭下载口相关引脚数字通路/上拉(避免 SWD 引脚漏电):

GPIO_DisableDigitalPath(P0, 0x03);
GPIO_DisablePullupPath(P0, 0x03);
  1. 进入低功耗前关闭 UART0_RX 数字通路(P0.6),唤醒后恢复。

7 串口输出示例

7.1 Tx(Deepsleep + 发送)

典型输出:

CPU @ 48000000Hz
Enter Deepsleep mode.
slptmr1 int
Exit Deepsleep mode.
tx done, count: 1
Enter Deepsleep mode.
...

当 GPIO 唤醒触发时,可能看到:

P1 interrupt

7.2 Rx

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

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

8 常见问题排查

  1. 串口无打印:

    • 检查波特率是否 115200

    • 检查 UART0 复用引脚(P0.5/P0.6)与底板跳线是否按要求短接

    • 确认 USB->UART 口枚举到正确的 COM 口

  2. Rx 收不到包:

    • 确认两块板分别烧录了 Tx 与 Rx(TX_MODE 不同)

    • 确认 Channel/DataRate/AddrWidth/TxAddr/RxAddr/TxLen/RxLen 完全一致

    • 缩短两板距离、避开强干扰;必要时调整信道

  3. 低功耗电流不理想:

    • 确认进入 Deepsleep 前已按需关闭 UART RX 数字通路、下载口相关引脚数字通路/上拉

    • 断开不必要的外设连接(例如某些调试接口),并结合板级电路评估漏电来源