0. 项目背景

在做国标相关 Wi‑Fi 非信令项目时,传统流程是:

  1. 手工在 EspRFTestTool 里点 UI 开始发射;

  2. 再手工到 N9912A 测量助手切换参数;

  3. 反复抄表到 Excel。

这个方式有三个问题:

  1. 易误操作;

  2. 频繁重复配置、效率低;

  3. 手工抄数易错且难复现。

我希望实现:

  • DUT 串口由上位机直接驱动;

  • 仪表参数由 FieldFox 自动记录与导出;

  • 每完成一项就写入 Excel,支持中断恢复。

1. 系统组成与环境

1.1 硬件与仪器

  • DUT:ESP32-S3(Scepter)

  • 天线:2.4G 外接 FPC 天线

  • 仪器:Keysight FieldFox N9912A

  • 通讯:串口 + LAN(N9912A)

  • 电脑:Windows

图1 测试环境整体连线与端口分布

1.2 软件与文件

  • ESPRFTestTool(用于烧录+调试)

  • 自研自动化:

    • RF全自动测试.ps1

    • RF全自动测试.cmd

    • RF全自动测试设置.json

  • 输出模板:Scepter_WiFi非信令测试数据.xlsx

2. 最初问题与排障过程

2.1 连接与网络问题

起初只有网线,先确认了 PC 与 N9912A 的网口设置(IPv4 缺失时先修复网络适配器)。

然后通过 ping 192.168.0.1 验证控制链路。

2.2 ESPRFTestTool 与脚本交互问题

  • 旧流程里 COM 口固定(COM18)导致换设备后失败;

  • RF全自动测试.cmd 曾出现闪退,根因是中文编码在 cmd 里导致执行异常;

  • 另一个关键点是:用户希望“只手动操作 EspRFTestTool 烧录”,测试时上位机独占 DUT 串口。

3. 关键实现思路(重点)

3.1 串口直接发指令(不点EspRFTestTool UI)

初始化序列

  • cmdstop

  • RF_init_sel 0 0x1fc000

普通非信令发射

  • cmdstop

  • cbw40m_en 0/1

  • tx_contin_en 1

  • esp_tx <ch> <ratecode> 0

  • 用返回的 Wifi tx out 校验实际执行参数

Tone 频点检查

  • cmdstop

  • cbww40m_en 0/1

  • wifiscwout 1 <ch> 0

  • 测量结束再执行 wifiscwout 0 ... 和 cmdstop

速率码映射(已按乐鑫规范)

  • 11b:1M=0x0,2M=0x1,11M=0x3

  • 11g:6M=0xb,54M=0xc

  • 11n:MCS0=0x10,MCS7=0x17

4. 测试矩阵(当前第一版覆盖范围)

4.1 普通点

  • 11b: 1M / 2M / 11M

  • 11g: 6M / 54M

  • HT20: MCS0 / MCS7

  • HT40: MCS0 / MCS7

  • 速率+信道按标准集合生成(含 CH1/6/13 或对应边界组)

4.2 Tone

  • 20M:CH1 / CH6 / CH13

  • 40M:CH3 / CH7 / CH11

4.3 频谱遮罩

9 组遮罩场景,按每组三信道取 worst envelope 结果

执行顺序设计为:

1) Tone(6)

2) 普通点(27)

3) 遮罩组(9)

共 42 项。

图2 测试矩阵与执行顺序表

5. 关键功能点(对应用户需求)

  1. 不再手工重复输入相同参数(COM 和 DUT 记忆 + 下拉选择)

  2. tone 频偏与测量频率自动回写,避免重复填写

  3. 一键新建完整表 / 断点续测

  4. 发生异常时安全停发,默认执行 cmdstop

  5. 支持多 DUT、不同 COM 口切换(Scepter/Dongle 分离记忆)

  6. 旧流程保持可用:失败可秒切回原手工自动化

6. 使用流程

自己编写的操作手册: ESPRFTestTool_v5.2操作手册.pdf

图3 UI 界面操作流程截图(按钮区+日志区)