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

PRF 2.4G BLE Trx

1 功能概述

本例程演示 PAN271 在 BLE 模式下的基础收发流程,对应两个独立工程:

  • 07_ble_tx:按 BLE 广播方式发送广播包

  • 08_ble_rx:按 BLE 模式接收广播包,并打印 Payload 与 RSSI

当前示例的实际行为是:

  • Tx 端依次在 CH37、CH38、CH39 三个广播信道发送同一份广播数据

  • Rx 端默认只固定监听 CH37,因此能收到 CH37 上的广播包

2 例程位置与工程文件

  • 发送例程目录:\01_SDK\samples\proprietary_rf\07_ble_tx

  • 接收例程目录:\01_SDK\samples\proprietary_rf\08_ble_rx

  • 发送 Keil 工程:07_ble_tx\keil\ble_tx.uvprojx

  • 接收 Keil 工程:08_ble_rx\keil\ble_rx.uvprojx

  • 发送主代码:07_ble_tx\src\main.c

  • 接收主代码:08_ble_rx\src\main.c

3 环境准备

3.1 硬件设备

建议准备两套硬件做对测:

  • PAN271x EVB 核心板与底板各 2 套

  • JLink 仿真器

  • USB-TypeC 线

  • 杜邦线或跳线帽

3.2 硬件接线

每套板按以下方式连接:

  1. 将核心板插到底板上

  2. 串口连接:

    • PC 通过 USB-TypeC 连接到底板 USB 转串口口

    • 按例程默认 UART0 引脚连接跳线

    • 例程中 UART0 复用为:P0.5 = TX,P0.6 = RX

  3. JLink SWD 连接:

    • SWD_CLK -> P00

    • SWD_DAT -> P01

    • GND -> GND

3.3 PC 软件

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

  • 串口参数:115200, 8N1

4 编译与烧录(Keil)

4.1 烧录发送端

  1. 打开 07_ble_tx\keil\ble_tx.uvprojx

  2. 选择目标工程 ble_tx

  3. Build

  4. Download

4.2 烧录接收端

  1. 打开 08_ble_rx\keil\ble_rx.uvprojx

  2. 选择目标工程 ble_rx

  3. Build

  4. Download

说明:工程下载配置依赖 SDK 自带 JFlash 与 settings.jflash,Keil 中执行 Download 会调用对应烧录流程。

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

5.1 上电顺序

  1. 给 Tx 板和 Rx 板上电

  2. 分别打开两个串口终端

  3. 观察发送端与接收端日志

5.2 运行现象

  • Tx 端启动后循环广播

  • 每轮依次发送:CH37 -> CH38 -> CH39

  • 三个广播信道发完后延时 500 ms,再进入下一轮

  • Rx 端初始化后固定在 CH37 进入接收状态

  • 收到广播包后打印长度、原始数据和 RSSI

5.3 当前示例的信道注意事项

当前 08_ble_rx 的 main.c 只执行了一次:

  • 设置 Channel = BLE_CHANNEL_37

  • 设置 WhiteInit = PAN271_BLE_WH_INIPHA_CH37

  • 调用 PAN271_RF_TrxStart() 进入持续接收

因此当前 Rx 不会自动跟随 Tx 在 37/38/39 三个信道之间跳频。若需要完整监听三个广播信道,需要在接收端增加信道切换逻辑,并同步更新对应白化初始值。

6 关键配置说明(RFConfig_t)

发送端与接收端的 RFConfig_t 都位于各自的 src\main.c 中,关键配置如下。

6.1 通用 BLE 配置

  • ChipMode = PAN271_CHIPMODE_BLE:BLE 模式

  • DataRate = PAN271_DR_1Mbps:BLE 1M

  • WorkMode = PAN271_WORKMODE_NORMAL:普通工作模式

  • EnWhite = ENABLE:使能白化

  • EnDPL = ENABLE:使能动态长度

  • EnTxNoAck = ENABLE:广播场景下不等待 ACK

  • AddrWidth = PAN271_WIDTH_4BYTES:地址宽度 4 Bytes

  • TxLen = 19

  • RxLen = 19

6.2 BLE Header 配置

例程默认使用:

  • BLEHeadNum = BLE_LENGTH_HEADER0

  • BLEHead0 = 0x42

  • BLEHead1 = 0x00

其中:

  • Header0/Header1 用于构造 BLE 包头字段

  • 发送与接收两端需要保持一致

6.3 白化与广播信道

Tx 端发送广播时,会针对不同广播信道设置不同白化初始值:

  • CH37 对应 PAN271_BLE_WH_INIPHA_CH37

  • CH38 对应 PAN271_BLE_WH_INIPHA_CH38

  • CH39 对应 PAN271_BLE_WH_INIPHA_CH39

广播信道与频点关系:

  • CH37 -> 2402 MHz

  • CH38 -> 2426 MHz

  • CH39 -> 2480 MHz

Rx 端若切换信道,也必须同步切换对应的白化初始值,否则容易出现 crc、pid 或长度错误。

6.4 地址与白名单配置

例程中广播地址内容放在广播包前 6 字节:

  • AdvA = CC CC CC CC CC CC

配置里同时还设置了:

  • RxAddr[0] = D6 BE 89 8E 00

  • WhiteList = CC CC CC CC CC CC

  • WhiteListOffset = 0

  • WhiteListMatchMode = PAN271_BLE_WhiteList_4Byte

使用本示例时,建议至少保持以下内容一致:

  • 广播包前 6 字节地址内容

  • 接收端白名单相关配置

  • BLE Header 配置

  • TxLen / RxLen

7 广播包内容说明

发送端 main.c 中定义了 19 字节广播数据 BleTxPacket:

CC CC CC CC CC CC 06 09 50 41 4E 54 48 05 FF 58 58 AA BB

字段含义如下:

  1. 广播地址 AdvA,6 字节

    • CC CC CC CC CC CC

  2. AD Structure 1,7 字节

    • 06:后续长度为 6

    • 09:Complete Local Name

    • 50 41 4E 54 48:字符串 PANTH

  3. AD Structure 2,6 字节

    • 05:后续长度为 5

    • FF:Manufacturer Specific Data

    • 58 58:厂商标识

    • AA BB:自定义数据

在 BLE 扫描工具中,可将其理解为一个包含设备名和厂商自定义数据的广播包。

8 软件流程说明

8.1 发送端流程

07_ble_tx 的主流程如下:

  1. 时钟初始化与串口初始化

  2. 调用 PAN271_RF_Init(&gRfConfig) 初始化 BLE 射频参数

  3. 进入 while(1)

  4. 依次调用 BLE_Broadcast() 在 CH37、CH38、CH39 发送广播包

  5. 每次发送前设置当前信道与对应白化初始值

  6. 将 BleTxPacket 写入 TX FIFO

  7. 调用 PAN271_RF_TrxStart() 触发发送

  8. 等待发送完成中断置位 BleTxDownFlag

  9. 三个信道发送结束后延时 500 ms

8.2 接收端流程

08_ble_rx 的主流程如下:

  1. 时钟初始化与串口初始化

  2. 调用 PAN271_RF_Init(&gRfConfig) 初始化 BLE 射频参数

  3. 设置接收信道为 CH37

  4. 设置对应白化初始值为 PAN271_BLE_WH_INIPHA_CH37

  5. 调用 PAN271_RF_TrxStart() 进入接收状态

  6. 在中断回调中读取接收数据、打印 Payload 与 RSSI

9 串口输出示例

9.1 Tx 端

典型输出类似:

CPU @ 48000000Hz
BLE TX Start...
tx done, count: 1
BLE Broadcast on Channel 37 done.
WhitenInitVal: 53
tx done, count: 2
BLE Broadcast on Channel 38 done.
WhitenInitVal: 33
tx done, count: 3
BLE Broadcast on Channel 39 done.
WhitenInitVal: 73

9.2 Rx 端

当接收到 CH37 上的广播包时,典型输出类似:

CPU @ 48000000Hz
rx len:19
CC CC CC CC CC CC 06 09 50 41 4E 54 48 05 FF 58 58 AA BB
rssi:-45 dBm

若配置不一致或信道不匹配,可能出现:

crc
pid err
len err
acc addr err