PRF Production Test¶
1. 功能概述¶
本工程为 PAN10xx 芯片的射频产测(生产测试)Demo 工程,支持两种 DTM(Direct Test Mode)测试模式,客户可根据需求选择并移植到自己的产品中进行产测阶段的射频测试。
支持的测试模式¶
HCI DTM 模式(默认):通过标准 HCI UART 协议与测试工具通信,兼容 PAN107x ToolBox 等工具。
2-Wire DTM 模式:通过简化的 2 线制协议进行通信,兼容nRF Connect for Desktop 中的 Direct Test Mode 测试工具。
主要功能¶
射频发射测试(单载波、调制发射)
射频接收测试(包统计)
发射功率配置
RSSI/增益读取
发射参数配置(间隔、包数)
2. 环境要求¶
硬件¶
项目 |
说明 |
|---|---|
开发板 |
PAN10xx EVB |
USB转串口工具 |
支持 115200 波特率 |
频谱仪 |
用于射频指标测试(频偏、EVM等) |
串口配置¶
项目 |
说明 |
|---|---|
波特率 |
115200 |
数据位 |
8 |
停止位 |
1 |
校验位 |
None |
流控 |
None |
3. 工程配置¶
配置文件位置:keil_107x/configuration/sdk_config.h(PAN107x)或 keil_101x/configuration/sdk_config.h(PAN101x)
关键配置项¶
配置项 |
默认值 |
说明 |
|---|---|---|
|
1 |
DTM 测试模式:0=2-Wire DTM,1=HCI DTM |
|
0 |
上电是否自动启动单载波测试:0=禁用,1=启用 |
|
0 |
默认发射功率等级(0=0dBm,可配置 0-9 对应 0-9dBm) |
|
921600 |
日志 UART 波特率 |
4. 编译和烧录¶
工程路径¶
芯片型号 |
工程路径 |
|---|---|
PAN107x |
|
PAN101x |
|
编译步骤¶
打开 Keil μVision
打开对应芯片的工程项目文件(
prf_production_test.uvprojx)点击 “Build” 按钮(或按 F7)进行编译
编译成功后,在
Objects目录下生成.hex文件
烧录步骤¶
连接 J-Link 调试器到 EVB 板
在 Keil 中点击 “Flash” → “Download”(或按 F8)
烧录完成后复位芯片
5. 硬件连接¶
PAN107x EVB 连接说明¶
PAN107x EVB 引脚 |
USB转串口工具 |
说明 |
|---|---|---|
P1.0 (UART1_TX) |
RX |
数据发送 |
P2.4 (UART1_RX) |
TX |
数据接收 |
VBAT |
VCC (3.3V) |
电源 |
GND |
GND |
地 |
PAN101x EVB 连接说明¶
PAN101x EVB 引脚 |
USB转串口工具 |
说明 |
|---|---|---|
P0.1 (UART1_TX) |
RX |
数据发送 |
P0.0 (UART1_RX) |
TX |
数据接收 |
VBAT |
VCC (3.3V) |
电源 |
GND |
GND |
地 |
注意:串口引脚可根据需求自行修改,也可使用 SWD 烧录口复用为串口。
6. 测试模式说明¶
6.1 HCI DTM 模式(默认)¶
HCI DTM 模式使用标准 Bluetooth HCI 命令进行射频测试,可通过 PAN107x ToolBox 工具进行测试。
测试流程¶
将编译好的固件烧录到 EVB 板
连接 UART 到 PC
打开 PAN107x ToolBox 工具
选择对应的串口和波特率(115200)
参照工具界面进行射频测试
详细操作步骤请参考 PAN107x RF Test 文档
支持的 HCI 命令¶
详见第 7 章《串口 HCI 协议说明》。
6.2 2-Wire DTM 模式¶
2-Wire DTM 模式使用简化的 2 字节命令协议,适合自定义测试工具开发。
适用场景¶
2-Wire DTM 模式适用于以下场景:
资源受限的环境:不需要完整的 HCI 协议栈,代码量更小
快速产线测试:命令简洁,测试流程更快
兼容 nRF 测试工具:可与 nRF Connect for Desktop 的 Direct Test Mode 工具配合使用
上位机工具¶
推荐使用 nRF Connect for Desktop 中的 Direct Test Mode 测试工具:
下载并安装 nRF Connect for Desktop
在应用中安装 Direct Test Mode 插件
连接 PAN10xx 开发板到 PC
在工具中选择对应的串口和波特率(115200)
选择 “2-Wire” 模式进行测试
注意:使用 nRF 工具时,需确保硬件连接正确,且已烧录 2-Wire DTM 模式的固件。
命令类型¶
Command Type |
值 |
说明 |
|---|---|---|
LE_TEST_SETUP (00) |
0 |
测试设置命令 |
LE_RECEIVER_TEST (01) |
1 |
启动接收测试 |
LE_TRANSMITTER_TEST (10) |
2 |
启动发射测试 |
LE_TEST_END (11) |
3 |
结束测试 |
示例命令¶
复位命令:
0x0000(设置测试模式为复位)启动接收测试(2402MHz):
0x4000(Command=01, Channel=0)启动发射测试(2402MHz, PRBS9):
0x8000(Command=10, Channel=0, Length=0, Payload=0)结束测试:
0xC000(Command=11)
响应格式¶
响应为 2 字节(MSB 优先):
[15:08] Event Type
[07:00] Return Parameter
成功:
0x0000错误:
0x0001接收包计数报告:
0x8000+ 16-bit 包计数
实际串口数据示例¶
以下为使用串口调试助手进行 2-Wire DTM 测试的实际数据示例(十六进制显示):
示例 1:复位命令
发送(2 字节):
00 00
接收(2 字节):
00 00 (成功)
示例 2:启动接收测试(2402MHz,Channel=0)
发送(2 字节):
40 00
接收(2 字节):
00 00 (成功)
示例 3:启动发射测试(2402MHz, PRBS9, Channel=0)
发送(2 字节):
80 00
接收(2 字节):
00 00 (成功)
示例 4:结束测试并读取接收包数
发送(2 字节):
C0 00
接收(2 字节):
80 2A (成功,接收到 0x002A = 42 个包)
注意:2-Wire DTM 模式的串口数据为每个命令/响应 2 字节,MSB 优先。使用串口调试助手时,请设置为十六进制发送/接收模式。
2-Wire 模式命令速查表¶
命令类型 |
命令值(Hex) |
计算方法 |
响应 |
说明 |
|---|---|---|---|---|
复位 |
|
固定值 |
|
复位 DTM 状态 |
接收测试 |
|
|
|
启动接收测试 |
发射测试(PRBS9) |
|
|
|
启动 PRBS9 发射 |
发射测试(11110000) |
|
|
|
启动 11110000 发射 |
发射测试(10101010) |
|
|
|
启动 10101010 发射 |
结束测试 |
|
固定值 |
|
结束测试,返回接收包数 |
命令格式详细说明:
Bit 位 |
名称 |
说明 |
|---|---|---|
[15:14] |
Command Type |
00=SETUP, 01=RECEIVER, 10=TRANSMITTER, 11=END |
[13:08] |
Parameter 1 |
信道号 (0-39) 或负载类型 |
[07:00] |
Parameter 2 |
负载类型(仅发射测试)或保留 |
常用信道与频率对应:
Channel |
频率(MHz) |
Channel |
频率(MHz) |
|---|---|---|---|
0 |
2402 |
19 |
2440 |
1 |
2404 |
20 |
2442 |
9 |
2420 |
29 |
2458 |
10 |
2422 |
30 |
2460 |
18 |
2438 |
39 |
2480 |
提示:完整的 0-39 信道对应 2402-2480 MHz,步长 2 MHz。
7. 串口 HCI 协议说明¶
7.1 HCI 命令格式¶
标准 HCI UART 传输格式:
[Packet Type] [Opcode] [Parameter Length] [Parameters...]
1字节 2字节 1字节 N字节
Packet Type: 0x01 (Command)
Opcode: OGF(6位) + OCF(10位)
Parameter Length: 参数长度
Parameters: 命令参数
7.2 HCI 事件格式¶
[Packet Type] [Event Code] [Parameter Length] [Parameters...]
1字节 1字节 1字节 N字节
Packet Type: 0x04 (Event)
Event Code: 0x0E (Command Complete) 或 0x0F (Command Status)
7.3 标准 HCI LE 测试命令¶
7.3.1 LE Test Reset¶
项目 |
值 |
|---|---|
OGF |
0x03 (Controller Baseband) |
OCF |
0x0003 |
Opcode |
0x0C03 |
参数 |
无 |
功能:每次测试前执行复位,重置测试状态。
命令示例:
发送: 01 03 0C 00
接收: 04 0E 04 01 03 0C 00
7.3.2 LE Receiver Test (v1)¶
项目 |
值 |
|---|---|
OGF |
0x08 (LE Controller) |
OCF |
0x001D |
Opcode |
0x201D |
参数 |
RX_Channel (1字节) |
参数说明:
参数 |
说明 |
|---|---|
RX_Channel |
0x00-0x27,对应 2402-2480 MHz |
命令示例(接收 2402MHz):
发送: 01 1D 20 01 00
接收: 04 0E 04 01 1D 20 00
7.3.3 LE Transmitter Test (v1)¶
项目 |
值 |
|---|---|
OGF |
0x08 (LE Controller) |
OCF |
0x001E |
Opcode |
0x201E |
参数 |
TX_Channel (1), Length (1), Payload (1) |
参数说明:
参数 |
说明 |
|---|---|
TX_Channel |
0x00-0x27,对应 2402-2480 MHz |
Length |
0x00-0xFF,数据包负载长度 |
Payload |
0x00=PRBS9, 0x01=11110000, 0x02=10101010 |
命令示例(2402MHz, 255字节, PRBS9):
发送: 01 1E 20 03 00 FF 00
接收: 04 0E 04 01 1E 20 00
7.3.4 LE Test End¶
项目 |
值 |
|---|---|
OGF |
0x08 (LE Controller) |
OCF |
0x001F |
Opcode |
0x201F |
参数 |
无 |
响应参数:
参数 |
说明 |
|---|---|
Status |
0x00=成功 |
Num_Packets |
2字节,接收测试时返回接收包数 |
命令示例:
发送: 01 1F 20 00
接收: 04 0E 06 01 1F 20 00 XX XX
(XX XX 为接收包数,LSB 优先)
7.4 HCI LE 测试命令 (v2)¶
7.4.1 LE Receiver Test (v2)¶
项目 |
值 |
|---|---|
OGF |
0x08 (LE Controller) |
OCF |
0x0033 |
Opcode |
0x2033 |
参数 |
RX_Channel (1), PHY (1), Modulation_Index (1) |
参数说明:
参数 |
值 |
说明 |
|---|---|---|
PHY |
0x01 |
LE 1M PHY |
PHY |
0x02 |
LE 2M PHY |
PHY |
0x03 |
LE Coded PHY |
Modulation_Index |
0x00 |
Standard Modulation Index |
Modulation_Index |
0x01 |
Stable Modulation Index |
命令示例(2402MHz, 2M PHY):
发送: 01 33 20 03 00 02 00
接收: 04 0E 04 01 33 20 00
7.4.2 LE Transmitter Test (v2)¶
项目 |
值 |
|---|---|
OGF |
0x08 (LE Controller) |
OCF |
0x0034 |
Opcode |
0x2034 |
参数 |
TX_Channel (1), Length (1), Payload (1), PHY (1) |
参数说明:
参数 |
值 |
说明 |
|---|---|---|
PHY |
0x01 |
LE 1M PHY |
PHY |
0x02 |
LE 2M PHY |
PHY |
0x03 |
LE Coded PHY (S=8) |
PHY |
0x04 |
LE Coded PHY (S=2) |
命令示例(2402MHz, 255字节, 11110000, 2M PHY):
发送: 01 34 20 04 00 FF 01 02
接收: 04 0E 04 01 34 20 00
7.5 厂商自定义 HCI 命令¶
7.5.1 HCI Vendor Debug Write Tx Power¶
项目 |
值 |
|---|---|
OGF |
0x3F (Vendor) |
OGF_EXT |
0x0F (Debug) |
OCF |
0x03 |
Opcode |
0xFFC3 |
参数 |
Tx_Power (1) |
参数说明:
参数 |
说明 |
|---|---|
Tx_Power |
-24 到 +7 dBm |
命令示例(设置 0 dBm):
发送: 01 C3 FF 01 00
接收: 04 0E 04 01 C3 FF 00
7.5.2 HCI Vendor Constant Tone Test (v1)¶
项目 |
值 |
|---|---|
OGF |
0x3F (Vendor) |
OGF_EXT |
0x0F (Debug) |
OCF |
0x0B |
Opcode |
0xFFCB |
参数 |
TX_Channel (1) |
功能:启动单载波测试。
命令示例(2402MHz):
发送: 01 CB FF 01 00
接收: 04 0E 04 01 CB FF 00
7.5.3 HCI Vendor Read RSSI GAIN¶
项目 |
值 |
|---|---|
OGF |
0x3F (Vendor) |
OGF_EXT |
0x0F (Debug) |
OCF |
0x0A |
Opcode |
0xFFCA |
参数 |
无 |
响应参数:
参数 |
长度 |
说明 |
|---|---|---|
Status |
1字节 |
0x00=成功 |
RSSI_OUT |
2字节 |
RSSI 输出值,转换为 dBm: (value - (2<<14)) / 4.0 |
RSSI_RAW |
2字节 |
RSSI 原始值 |
RSSI_SEG |
2字节 |
RSSI 段值 |
GAIN |
1字节 |
增益值 |
命令示例:
发送: 01 CA FF 00
接收: 04 0E 0B 01 CA FF 00 XX XX XX XX XX XX XX
7.5.4 HCI Vendor Debug LE Transmitter Parameters¶
项目 |
值 |
|---|---|
OGF |
0x3F (Vendor) |
OGF_EXT |
0x0F (Debug) |
OCF |
0x11 |
Opcode |
0xFFD1 |
参数 |
Tx_Interval (2), Packet_Count (2) |
参数说明:
参数 |
说明 |
|---|---|
Tx_Interval |
0x0000=使用默认值,其他=发射间隔(us) |
Packet_Count |
0x0000=持续发射直到收到停止命令,其他=发射包数 |
命令示例(间隔 1000us,发射 1000 包):
发送: 01 D1 FF 04 E8 03 E8 03
接收: 04 0E 04 01 D1 FF 00
8. 常见问题¶
Q2: 如何修改 UART 波特率?¶
A: 修改 src/app.c 中 uart1_init() 函数的 UART1_OBJ.initObj.baudRate 值,并重新编译。
Q3: 接收测试时如何读取接收包数?¶
A: 发送 LE Test End 命令,响应中包含 Num_Packets 字段。
Q4: 如何确认射频发射正常?¶
A: 使用频谱仪观察发射频点,确认频偏和功率在正常范围内。