测试结果仅供参考,结果受多种因素影响,测试结果不一定正确!!!
文档信息
| 文档名称 | WS8204-EVB SLE 传输性能与双向互传综合测试报告 |
| 版本 | v1.0 |
| 日期 | 2026-10-25 |
| 状态 | 已执行、已汇总 |
| 测试对象 | WS8204-EVB ×2 |
| 固件 | +GMR="WS8204","silent-smart","V0.1.0","V1.4.0" |
| 测试工具 | ws8204_perf.exe(C# / .NET Framework 4.8) |
| 测试执行 | 自动化测试脚本 + 手工 AT 命令 |
| 附件 | 见第 14 节 |
修订记录
| v0.1 | 2026-10-24 | 完成测试执行与分项记录 |
| v1.0 | 2026-10-25 | 汇总为综合报告,补充复现步骤与附件清单 |
1. 结论摘要
两块板 H-UART 的 AT 通信、主从连接、AT 模式双向小数据均正常。
AT 模式单向有效吞吐约 4.17 KB/s(payload 200 B、115200、1M PHY、25 ms),B→A 约 1.69 KB/s。
PHY 从 1M 提升到 2M/4M、UART 从 115200 提升到 460800,均没有数量级提升;瓶颈是 AT 命令握手。
同时双向 AT 模式基本不可用(约 0.16 KB/s);透传同时双向有丢包/CRC 错误。
持续 AT 传输约 9 s / 32 KB 后出现 CH9102 串口写错误,链路断开并重连。
文件互传:8 KB 单次双向 PASS;64 KB 采用 4 KB 分块 + 复位/重试,双向 SHA-256 一致。
小包 RTT:32 B 平均 143 ms,p95 175 ms;200 B ping-pong 超时率 54%。
1.1 测试结果汇总
| TC-02 固件/默认参数 | PASS | V1.4.0,115200,MTU 248,interval 200 |
| TC-03 角色/连接 | PASS | 约 1 s 自动连接,对端 MAC 正确 |
| TC-04 AT 双向小数据 | PASS | hello/world 双向正确 |
| TC-05/06 透传 | PASS/受限 | 双向 100 B 正确;同时双向丢包 |
| TC-07 断连/重连 | PASS | +SDISCONN:0,17 后约 1 s 重连 |
| TC-08 恢复出厂 | PASS | 默认参数全部恢复 |
| TC-09 异常参数 | PASS | 非法参数返回 +ERROR,不挂死 |
| TC-10 吞吐 vs payload | PASS | 200 B 最佳;A→B 4.17 KB/s |
| TC-11 吞吐 vs PHY | PARTIAL | 2M/4M 无显著提升 |
| TC-12 吞吐 vs 波特率 | PARTIAL | 460800 略高但不稳定 |
| TC-13 吞吐 vs 间隔 | PARTIAL | 160/200 可用;400/800 不稳定 |
| TC-14 AT vs 透传 | PASS | AT 更稳更快 |
| TC-15 同时双向 | FAIL/受限 | AT both 0.16 KB/s |
| TC-20 小包 RTT | PASS | 32 B mean 143 ms |
| TC-40 持续传输 | FAIL | 约 9 s/32 KB 后串口错误 |
| TC-50/51 文件互传 | PASS | 8 KB/64 KB 双向 SHA 一致 |
| TC-54 全字节/+++ | PASS | 1 KB SHA 一致 |
2. 测试目的与范围
本报告覆盖以下实际执行的测试:
AT 固件、默认参数、主从连接与双向小数据
AT 模式与透传模式
单向吞吐:payload、PHY/format、UART 波特率、连接间隔
同时双向吞吐
小包 RTT
持续传输稳定性
文件双向传输与 SHA-256 完整性
异常参数、断连重连、恢复出厂
测试拓扑为 PC 通过 H-UART 连接两块 EVB,数据经 SLE 空口传输;吞吐均为应用层有效 payload,不含自定义帧头和 AT 命令开销。
3. 被测系统
3.1 硬件与固件
| A 板 | COM3,MAC 54:ef:80:1a:51:d9,Client/Master |
| B 板 | COM4,MAC 1a:ac:10:3d:36:e6,Server/Slave |
| 模组 | WS8204(Hi2821/BS21 系列 SLE+BLE) |
| 固件 | AT V0.1.0 / Software V1.4.0 |
| 测试距离 | 约 0.5 m,直视,非金属桌面 |
3.2 拓扑与角色
PC COM3 ──USB(H-UART)── WS8204-A ──SLE── WS8204-B ──USB(H-UART)── PC COM4
A = COM3,AT+SROLE=1(Client/Master)
B = COM4,AT+SROLE=0(Server/Slave)
默认参数:115200、MTU 248、interval 200(25 ms)、PHY 0(1M)、format 1、SMUX 8、TX power 6 dBm
3.3 软件环境
| 操作系统 | Microsoft Windows NT 10.0.26200.0 |
| PowerShell | 5.1.26100.8115 |
| .NET Framework | 4.8 |
| C# 编译器 | C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe |
| 串口驱动 | CH9102 USB-Enhanced-SERIAL |
| 测试工具 | tools\ws8204_perf\ws8204_perf.exe |
| 工具 SHA-256 | AC3C1CF7745E7CCF724517DF50CC29EFEA0DCF50FADA1B3AC0478C0585EF7E5C |
| 工具大小 | 38400 bytes |
3.4 AT 固件关键约束
| UART 波特率 | 9600~1M,改后需 AT+RST |
| MTU | 20~248;有效 payload 最大 240 B |
| 连接间隔 | 160~16000 ×125 µs(20 ms~2 s) |
| PHY | AT+SPHY=<phy>,<format>,0=1M/1=2M/2=4M,format 0~13 |
| SMUX | 1~8,透传需 1 |
| 角色 | 0=Server/Slave,1=Client/Master |
| 发送 | AT+SSEND=<connid>,<length> → +OK\r\n> → 原始数据 → +SSEND:<length> |
| 接收 | +SRD:<connid>,<length> + 原始数据 |
| 透传 | AT+SMUX=1,AT+SSEND 无参数进入,+++ 退出 |
3.5 测试依据
《WS8204 Data Sheet CN v1.2》
《WS8204-EVB QuickStart Guide CN v1.0》
AT+HELP 与 AT+<CMD>=? 实测输出(docs\04_参考资料\at_probe\)
4. 测试方法
4.1 AT 命令模式
主机发送 AT+SSEND=<connid>,<len>\r\n。
模块返回 +OK\r\n> 后,主机发送正好 <len> 字节。
模块返回 +SSEND:<len> 表示本次发送完成。
接收端模块输出 +SRD:<connid>,<len>,随后输出 <len> 字节原始数据。
4.2 透传模式
AT+SMUX=1,复位并重新连接。
双方发送 AT+SSEND(无参数)进入透传。
主机直接写入原始数据。
发送 +++ 退出透传,再发送 AT 确认回到命令模式。
4.3 自定义帧格式
| Magic | 4 B | WS82 |
| Version | 1 B | 0x01 |
| Type | 1 B | DATA/PING/PONG/FIN |
| Flags | 1 B | 保留 |
| Header length | 1 B | 26 |
| Payload length | 2 B | 大端 |
| Sequence | 4 B | 大端 |
| Timestamp | 8 B | 发送端 tick |
| CRC32 | 4 B | 头部+payload |
| Payload | N B | 数据 |
帧头 26 B。AT 模式有效 payload 240 B,因此应用 payload 建议 ≤200 B。
4.4 指标定义
有效吞吐:接收端 CRC 正确的 payload 字节数 / 测试时长;KB/s = bytes / 1024 / s。
丢帧/缺口:发送序号与接收序号不连续;CRC 错误单独统计。
RTT:A 发 PING 到收到 B 的 PONG 的时间,包含主机、USB-UART、AT 握手、SLE 空口和连接间隔。
文件完整性:发送端与接收端 SHA-256 完全一致。
采样约定:
吞吐:每点 3 s,连接建立完成后开始计时,按全时长计算。
时延:每组 100 次 ping-pong。
文件:8 KB 单次;64 KB 按 4 KB 分块,每块单独复位/重连。
所有结果保存 summary.json、per_second.csv、原始串口日志。
5. 测试执行记录
| 2026-10-24 | TC-02~TC-09 | INFO_baseline\、TC-09_negative\ |
| 2026-10-24 | TC-10 | TC-10_*_nr_*\ |
| 2026-10-24 | TC-11 | TC-11_*_nr_*\ |
| 2026-10-24 | TC-12 | PERF_AT_460800_v4\ |
| 2026-10-24 | TC-13 | TC-13_*_nr_*\ |
| 2026-10-24 | TC-14 | TC-14_transparent_*\ |
| 2026-10-24 | TC-15 | TC-15_both_p200_stable\、TC-15_transparent_both\ |
| 2026-10-24 | TC-20 | TC-20_rtt_p32_nr_*\、TC-20_rtt_p200_nr_*\ |
| 2026-10-24 | TC-40 | TC-40_soak_3min\ |
| 2026-10-24 | TC-50/51 | TC-50_chunked_64k_a2b_v3\、TC-51_chunked_64k_b2a_v3\ |
| 2026-10-24 | TC-54 | TC-54_file_plus\ |
| 2026-10-25 | 最终状态确认 | FINAL_STATE\ |
6. 功能测试结果
TC-02 固件与默认参数
| 固件 | V0.1.0 / V1.4.0 |
| UART | 115200 |
| MTU | 248 |
| interval | 200,0,500 |
| PHY | 0,1 |
| SMUX | 8 |
| TX power | 6 dBm |
结果:PASS。
TC-03 角色与连接
A AT+SROLE=1,B AT+SROLE=0,双方 AT+RST。
双方收到 +SCONN:0,"对端 MAC",AT+SPMAC? 返回 +SPMACNUM=1。
连接建立时间约 1 s。
结果:PASS。
TC-04 AT 双向小数据
A→B 发送 hello,B 收到 +SRD:0,5 + hello。
B→A 发送 world,A 收到 +SRD:0,5 + world。
结果:PASS。
TC-05 / TC-06 透传模式
AT+SMUX=1 后双方 AT+SSEND 进入透传。
A→B 100 B 正确;B→A 100 B 正确。
同时双向有丢包,不适合作为可靠双向通道。
结果:单向和反向 PASS;同时双向受限。
TC-07 断连/重连
A AT+SDISC → +OK,随后 +SDISCONN:0,17。
约 1 s 内自动 +SCONN,AT+SPMAC? 恢复。
结果:PASS。
TC-08 恢复出厂
两块 AT+RESTORE → +OK + WS8204 Ready。
恢复为 SROLE=0、SMUX=8、UART 115200、MTU 248、interval 200、PHY 0,1。
结果:PASS。
TC-09 异常参数/边界
| AT+SMTU=249 | +ERROR=2 |
| AT+SMUX=9 | +ERROR=2 |
| AT+SPHY=3,0 | +ERROR=2 |
| AT+SCONPARA=159,0,500 | +ERROR=2 |
| AT+UART=2000000 | +ERROR=2 |
| AT+SSEND=7,10 | +ERROR=9 |
| AT+FOO | +ERROR=100 |
错误后 AT 仍正常,不挂死。
结果:PASS。
7. 吞吐测试结果
TC-10 单向吞吐 vs payload
配置:AT 模式、115200、1M PHY、interval 200。
| 32 | 0.656 | 63 / 0 | 0.563 | 54 / 0 |
| 64 | 1.333 | 64 / 0 | 0.229 | 56 发/11 收 / 0 |
| 128 | 1.875 | 45 / 0 | 1.333 | 32 / 0 |
| 200 | 4.167 | 64 / 0 | 1.693 | 25/26 / 0 |
| 220 | 0 | 0 | — | — |
结论:
200 B 是最佳点;220 B 因 26 B 帧头 + 220 B 超过 240 B 有效 payload 而失败。
B→A(Server 发送)明显慢于 A→B,且易丢帧。
CRC 错误为 0,吞吐差异来自调度/握手,不是误码。
TC-11 吞吐 vs PHY/format
| 1M / 1 | 4.10 | 基线 |
| 2M / 1 | 3.32 | 无提升 |
| 2M / 10 | 4.30 | 略高,波动 |
| 4M / 10 | 3.97 | 无提升 |
| 4M / 13 | 4.10 | 无提升 |
部分 PHY 切换后连接重建失败。AT 握手是瓶颈,PHY 提升无明显收益。
TC-12 吞吐 vs UART 波特率
| 115200 | 约 4.1 KB/s,稳定 |
| 460800 | 单次约 4.4 KB/s,但出现串口写错误/重连,不稳定 |
TC-13 吞吐 vs 连接间隔
| 160 | 20 ms | 4.10 | 可用 |
| 200 | 25 ms | 3.91 | 默认、稳定 |
| 400 | 50 ms | 3.45 | 早期样本,稳定性差 |
| 800 | 100 ms | 1.24 | 丢帧,不稳定 |
TC-14 AT 模式 vs 透传模式
| AT | A→B | 4.17 | 最稳定 |
| AT | B→A | 1.69 | Server 较慢 |
| 透传(限速) | A→B | 0.74 | 可用但慢 |
| 透传(限速) | B→A | 1.80 | 波动 |
结论:当前固件 AT 模式反而比透传更稳、更快。
TC-15 同时双向
| AT both | 5 帧 / 4 帧 | 0.16 | 基本不可用 |
| 透传 both | 222 帧 / 70 帧 | 2.73 | 2 CRC、3846 B 垃圾 |
结论:同时双向不可靠。双向业务建议分时 A→B、再 B→A。
8. 时延测试结果
TC-20 小包 RTT
| 32 B | 100/100 | 0 | 143.05 ms | 149.66 ms | 175.01 ms | 176.21 ms | 17.32 ms |
| 200 B | 46/100 | 54 | 189.38 ms | 175.30 ms | 225.09 ms | 378.72 ms | 33.09 ms |
说明:RTT 包含主机、USB-UART、AT 握手、25 ms 连接间隔,不是纯空口时延。
结果:32 B PASS;200 B 不稳定。
9. 稳定性测试结果
TC-40 持续传输
计划 180 s,AT 模式,payload 200 B,目标 3.75 KB/s。
前 9 s 正常,约 32 KB 后出现 SEND_PAYLOAD_ERROR(CH9102 “device not functioning”)。
随后 +SDISCONN:0,7 并自动重连。
实际发送 141 帧/28.2 KB,接收 99 帧/19.8 KB;按 180 s 计平均 0.107 KB/s。
结果:FAIL。约 9 s / 32 KB 是当前连续 AT 传输的实际上限。
10. 文件互传结果
| TC-50 A→B | 8 KB | 单次连续 | PASS | 一致 |
| TC-51 B→A | 8 KB | 单次连续 | PASS | 一致 |
| TC-50 A→B | 64 KB | 4 KB ×16 块 | PASS(首次全过) | 一致 |
| TC-51 B→A | 64 KB | 4 KB ×16 块 | PASS(4 块重试) | 一致 |
| TC-54 全字节/+++ | 1 KB | AT 模式 | PASS | 一致 |
64 KB 源文件 SHA-256:
7daca2095d0438260fa849183dfc67faa459fdf4936e1bc91eec6b281b27e4c2
A→B、B→A 接收文件 SHA-256 均与源文件一致。
11. 根因分析
AT 模式握手瓶颈:每帧 AT+SSEND 命令、> 提示、+SSEND 完成,主机与模块往返约 40~50 ms,吞吐被限制在约 4 KB/s。
MTU 限制:有效 payload 240 B,自定义 26 B 帧头后应用 payload ≤约 214 B。
持续发送失败:模块 UART RX 缓冲在连续 AT+SSEND 下被填满,CH9102 返回 ERROR_GEN_FAILURE,链路重连。
同时双向不可用:AT 固件单方向调度明显;透传虽可双向,但无流控,丢包/CRC 严重。
透传无流控:突发写入会丢字节,必须限速。
PHY/波特率不是瓶颈:提高 PHY 或 UART 速率不能突破 AT 握手限制。
12. 结论与建议
结论:
当前硬件/固件适合低速率控制、状态上报、小数据双向交互。
单向约 4 KB/s、双向需分时、持续传输约 9 s/32 KB 即失败。
64 KB 文件可通过分块+复位实现,但耗时较长。
建议:
| 低速率控制/状态 | 当前 AT 模式可用;payload 200 B、25 ms 间隔 |
| 双向通信 | 分时 A→B / B→A,不要依赖同时双向 |
| 文件 ≤8 KB | AT 模式单次传输 |
| 文件 64 KB | 4 KB 分块 + 每块复位/重连 + SHA-256 |
| 高吞吐 | 当前方案不可行;需自定义 SLE 固件/内部跑流或 Wi-Fi |
| 低时延 | 当前 32 B RTT 约 143 ms;需降低 AT 握手/连接间隔 |
13. 复现步骤
13.1 环境准备
Windows 10/11 x64,安装 CH9102 串口驱动。
两块 WS8204-EVB 的 H-UART 分别接 PC,确认 COM3、COM4。
确认 .NET Framework 4.8 和 PowerShell 5.1。
将 WS8204_测试脚本_20261025.zip 解压到项目根目录,得到 tools\... 和 docs\03_测试脚本\...。
将 WS8204_测试数据_20261025.zip 解压到项目根目录,得到 docs\02_测试数据\...。
进入项目根目录 D:\WorkSpace\VSCode\WS8204。
13.2 编译工具
cd D:\WorkSpace\VSCode\WS8204 .\tools\ws8204_perf\build.ps1
13.3 读取信息与建立链路
.\tools\ws8204_perf\ws8204_perf.exe info --a COM3 --b COM4 ` --out "docs\02_测试数据\INFO_repeat" .\tools\ws8204_perf\ws8204_perf.exe config --a COM3 --b COM4 ` --baud 115200 --interval 200 --phy 0 --format 1 --smux 8 --mtu 248 ` --out "docs\02_测试数据\LINK_repeat"
13.4 吞吐、时延、稳定性
# 单向吞吐 .\tools\ws8204_perf\ws8204_perf.exe perf --mode at --direction a2b ` --payload 200 --duration 3 --interval 200 --a COM3 --b COM4 --no-reset ` --out "docs\02_测试数据\PERF_repeat" # 同时双向 .\tools\ws8204_perf\ws8204_perf.exe perf --mode at --direction both ` --payload 200 --duration 5 --interval 200 --a COM3 --b COM4 --no-reset ` --out "docs\02_测试数据\BIDIR_repeat" # 透传 .\tools\ws8204_perf\ws8204_perf.exe perf --mode transparent --direction a2b ` --payload 200 --duration 5 --rate 40000 --a COM3 --b COM4 ` --out "docs\02_测试数据\TRANSPARENT_repeat" # 时延 .\tools\ws8204_perf\ws8204_perf.exe latency --payload 32 --count 100 ` --a COM3 --b COM4 --no-reset --out "docs\02_测试数据\RTT_repeat" # 持续传输 .\tools\ws8204_perf\ws8204_perf.exe perf --mode at --direction a2b ` --payload 200 --duration 180 --rate 30000 --interval 200 ` --a COM3 --b COM4 --no-reset --raw no --out "docs\02_测试数据\SOAK_repeat"
13.5 文件互传
# 8 KB 单次 .\tools\ws8204_perf\ws8204_perf.exe file ` --file "docs\02_测试数据\TC-50_source\source_8k.bin" ` --direction a2b --chunk 200 --delay-ms 50 --a COM3 --b COM4 --no-reset ` --out "docs\02_测试数据\FILE8K_repeat" # 64 KB 分块 + 重试 .\tools\run_chunked_file_v2.ps1 -Direction a2b ` -Source "docs\02_测试数据\TC-50_source\source_64k.bin" ` -OutRoot "docs\02_测试数据\FILE64K_repeat"
13.6 数据校验
# 查看结果 Get-Content "docs\02_测试数据\PERF_repeat\summary.json" # 校验文件 Get-FileHash "docs\02_测试数据\FILE64K_repeat\combined_a2b.bin" -Algorithm SHA256
预期 64 KB 文件 SHA-256:
7daca2095d0438260fa849183dfc67faa459fdf4936e1bc91eec6b281b27e4c2
source_64k.bin 位于测试数据附件 TC-50_source\ 目录。
13.7 异常参数复现
AT+SMTU=249 AT+SMUX=9 AT+SPHY=3,0 AT+SCONPARA=159,0,500 AT+UART=2000000 AT+SSEND=7,10 AT+FOO
预期分别返回 +ERROR=2、+ERROR=2、+ERROR=2、+ERROR=2、+ERROR=2、+ERROR=9、+ERROR=100,随后 AT 仍返回 +OK。
13.8 复现注意事项
AT+SSEND=<connid>,<len> 后必须发送正好 len 字节;串口工具不要自动追加 \r\n。
透传模式需先 AT+SMUX=1,复位/重连后双方再发 AT+SSEND 进入。
修改 AT+UART 后必须 AT+RST,并在主机侧重新打开新波特率。
460800 可能触发 CH9102 写入错误;基线复现建议使用 115200。
8 KB 以上文件建议使用 4 KB 分块 + 复位/重试,避免 UART 缓冲累积。
所有串口操作前关闭 SSCOM 等占用端口的程序。
14. 附件清单
附件位于 attachments\,可直接上传:
| WS8204_综合测试报告.md | 本报告 | 见文件 | 见 SHA256SUMS.txt |
| WS8204_测试数据_20261025.zip | 全部原始日志、summary、CSV、文件传输结果 | 1,131,618 B | d950177d015788dcfb734aca981d0f28e52bc3216726eaaef217a9157853045b |
| WS8204_测试脚本_20261025.zip | C# 源码、exe、build/run 脚本、脚本说明 | 43,042 B | 18c42f987ae4250fc2625c0921a383c63cd248c65f4316fe97b0bcaf1d13719f |
| SHA256SUMS.txt | 附件校验和 | 见文件 | — |
| README_附件说明.md | 附件内容与复现说明 | 见文件 | — |
15. 数据字典
| summary.json | 单次测试的结构化结果:模式、方向、payload、吞吐、帧数、CRC、缺口 |
| per_second.csv | 每秒发送/接收字节和帧数 |
| COM3_raw.bin / COM4_raw.bin | 串口原始字节(含 AT 响应、+SRD、payload) |
| COM3_decoded.log / COM4_decoded.log | 带时间戳的解码日志 |
| console.txt | 测试工具标准输出/错误 |
| *_result.txt | 文件传输源/接收 SHA-256 和结果 |
| key_results.csv | 关键结果汇总 |
| matrix_summary.csv | 吞吐矩阵原始汇总 |
| FINAL_STATE\ | 测试结束后的默认参数确认 |
16. 判定标准
| PASS | 达到预期,数据完整 |
| PARTIAL | 部分配置有效,部分配置不稳定或失败 |
| FAIL | 未达到预期,但已保留原因和数据 |
测量边界: 本报告的吞吐为 PC→H-UART→SLE→H-UART→PC 的端到端应用层有效吞吐,包含 AT 握手/主机开销,不代表 12 Mbps 空口峰值;测试距离约 0.5 m。
我要赚赏金
