跳转至

硬件测试与验证

本文引用的文件
- hci_uart_tester.py - hci_test_server.c - hci_passthrough.c - hci_transport.c - hci_transport.h - hci_test.html - config.h - CH390H_Wiring.md - README_Gateway.md - CMakeLists.txt - platformio.ini

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件面向ESP32S3 BLE网关的硬件测试与验证,提供完整的测试流程与方法,覆盖UART通信测试、SPI接口测试、电源管理测试与信号完整性验证。重点围绕nRF52833作为BLE协处理器的HCI UART链路,结合上位机工具与嵌入式WebUI进行系统化验证,并给出自动化测试脚本与可靠性评估方法。

项目结构

项目采用ESP-IDF工程组织方式,核心目录与文件如下: - 根构建配置:顶层CMakeLists与PlatformIO配置 - 主程序:包含测试服务器与透传模式入口 - 组件:硬件抽象层与驱动实现(如HCI传输层) - 静态资源:WebUI页面与测试界面 - 文档:CH390H接线指南与整体说明

graph TB
A["根构建<br/>CMakeLists.txt"] --> B["主程序<br/>hci_test_server.c / hci_passthrough.c"]
A --> C["组件<br/>hci_transport.c / hci_transport.h"]
A --> D["静态资源<br/>hci_test.html"]
A --> E["配置<br/>config.h / platformio.ini"]
A --> F["文档<br/>CH390H_Wiring.md / README_Gateway.md"]

图表来源 - CMakeLists.txt - platformio.ini - hci_test_server.c - hci_passthrough.c - hci_transport.c - hci_transport.h - hci_test.html - config.h - CH390H_Wiring.md - README_Gateway.md

章节来源 - CMakeLists.txt - platformio.ini - README_Gateway.md

核心组件

  • HCI传输层:实现H4 UART协议、硬件流控、命令/事件同步与回调机制
  • 透传模式:USB串口与NRF52833之间透明转发,便于上位机直连
  • 测试服务器:WebUI + HTTP API,提供命令下发与事件轮询
  • 配置中心:统一的引脚、波特率、缓冲区等硬件参数
  • CH390H以太网:SPI接口与引脚映射,支持10/100M以太网

章节来源 - hci_transport.c - hci_transport.h - hci_passthrough.c - hci_test_server.c - config.h - CH390H_Wiring.md

架构总览

下图展示硬件与软件交互:ESP32-S3通过UART与nRF52833通信;WebUI通过HTTP API与嵌入式服务器交互;CH390H通过SPI接入以太网。

graph TB
subgraph 硬件
ESP["ESP32-S3"]
NRF["nRF52833"]
ETH["CH390H(以太网)"]
end
subgraph 软件
WEB["WebUI(HTTP)"]
API["REST API"]
HCI["HCI传输层"]
PASSTHRU["透传模式"]
TESTSRV["测试服务器"]
end
ESP -- "UART(H4)" --> NRF
ESP -- "SPI" --> ETH
WEB --> API
API --> TESTSRV
API --> PASSTHRU
TESTSRV --> HCI
PASSTHRU --> HCI

图表来源 - README_Gateway.md - hci_test_server.c - hci_passthrough.c - hci_transport.c - CH390H_Wiring.md

详细组件分析

UART通信测试(nRF52833-HCI)

  • 协议与参数:H4传输、1Mbps波特率、8N1、硬件流控(RTS/CTS)
  • 透传模式:USB UART与HCI UART双向转发,便于上位机直接控制
  • 传输层:命令/事件解析、命令完成事件同步、ACL数据处理预留
  • 上位机工具:Python GUI,支持常用HCI命令、事件解析、设备列表与GATT服务发现
sequenceDiagram
participant Host as "上位机工具"
participant Web as "WebUI/HTTP"
participant Srv as "测试服务器"
participant UART as "UART(H4)"
participant NRF as "nRF52833"
Host->>Web : "选择命令/输入HEX"
Web->>Srv : "POST /api/hci/send {hex}"
Srv->>UART : "写入数据"
UART->>NRF : "H4包"
NRF-->>UART : "事件/ACL"
UART-->>Srv : "事件队列"
Srv-->>Web : "GET /api/hci/events"
Web-->>Host : "日志/解析/设备列表"

图表来源 - hci_test.html - hci_test_server.c - hci_transport.c - hci_uart_tester.py

章节来源 - config.h - hci_transport.c - hci_passthrough.c - hci_test_server.c - hci_test.html - hci_uart_tester.py

SPI接口测试(CH390H)

  • 引脚映射:MOSI/MISO/SCK/CS/INT/RST与ESP32-S3对应
  • 时钟频率:默认20MHz,可按需调整
  • 中断与复位:INT低电平有效,RST低电平复位
  • 使用方法:初始化后启动以太网,检查连接状态与IP
flowchart TD
Start(["开始"]) --> Pins["检查引脚连接<br/>MOSI/MISO/SCK/CS/INT/RST"]
Pins --> Clock["设置SPI时钟频率<br/>默认20MHz"]
Clock --> Init["初始化CH390H驱动"]
Init --> StartEth["启动以太网"]
StartEth --> Check{"连接成功?"}
Check --> |是| IP["获取IP并验证连通性"]
Check --> |否| Debug["检查硬件/固件配置"]
IP --> End(["结束"])
Debug --> End

图表来源 - CH390H_Wiring.md - config.h

章节来源 - CH390H_Wiring.md - config.h

电源管理测试

  • 供电要求:CH390H工作电压3.3V,与ESP32-S3电平兼容
  • 功耗监控:通过LED状态与日志观察系统活动
  • 稳定性:长时间运行后检查复位引脚与看门狗行为

章节来源 - CH390H_Wiring.md - config.h

信号完整性验证

  • UART链路:使用示波器或逻辑分析仪测量TX/RX/RTS/CTS波形,确保1Mbps、无噪声与足够眼宽
  • SPI链路:检查MOSI/MISO/SCK/CS时序,确认片选与极性正确
  • 串扰与回损:在高频段(如SPI)关注阻抗匹配与走线长度一致性

[本节为通用指导,无需具体文件引用]

依赖关系分析

  • 构建与环境:CMake与PlatformIO共同定义组件路径与编译标志
  • 配置耦合:config.h集中定义UART/以太网引脚与速率,被多模块共享
  • 传输层依赖:hci_transport.c依赖UART驱动与GPIO,提供命令/事件接口
  • 服务器依赖:hci_test_server.c依赖HTTP服务器、SPIFFS与LED指示
graph LR
CFG["config.h"] --> HT["hci_transport.c/.h"]
CFG --> TS["hci_test_server.c"]
CFG --> PP["hci_passthrough.c"]
HT --> UART["UART驱动"]
TS --> HTTP["HTTPD/SPIFFS"]
PP --> UART

图表来源 - config.h - hci_transport.c - hci_test_server.c - hci_passthrough.c

章节来源 - CMakeLists.txt - platformio.ini - config.h

性能考量

  • UART吞吐:1Mbps带宽下,合理设置缓冲区大小与队列深度,避免溢出
  • 事件轮询:WebUI定时轮询事件接口,避免频繁请求导致CPU占用
  • SPI速率:根据实际需求调整CH390H SPI时钟,平衡速度与稳定性
  • 任务栈:各任务栈大小按模块需求配置,避免堆栈溢出

[本节为通用指导,无需具体文件引用]

故障排查指南

常见连接问题

  • 无法建立UART链路
  • 检查波特率与串口参数是否一致(1Mbps、8N1、RTS/CTS)
  • 确认引脚连接正确(TX/RX/RTS/CTS)
  • 使用透传模式验证链路连通性
  • WebUI无法访问
  • 确认AP或STA网络已启动,获取IP
  • 检查HTTP服务器与SPIFFS挂载状态
  • 以太网不通
  • 核对CH390H引脚连接与SPI主机配置
  • 检查中断引脚与复位引脚电平

章节来源 - config.h - hci_passthrough.c - hci_test_server.c - CH390H_Wiring.md

信号质量检测

  • 使用示波器/逻辑分析仪测量UART与SPI关键信号
  • 关注上升/下降时间、过冲与回冲、时序余量
  • 在不同负载下重复测试,评估稳定性

[本节为通用指导,无需具体文件引用]

性能优化建议

  • 合理增大UART缓冲区与队列长度
  • 降低WebUI轮询频率,减少HTTP负载
  • SPI时钟按需下调,提升长线与高频稳定性
  • 优化LED指示与日志输出,降低系统开销

[本节为通用指导,无需具体文件引用]

结论

通过透传模式、WebUI与上位机工具的组合,可以全面验证ESP32S3与nRF52833之间的UART链路,以及CH390H的SPI接口与以太网功能。建议在严格参数与信号完整性测试基础上,结合自动化脚本与长期稳定性评估,确保硬件在工业场景中的可靠性。

附录

测试设备清单

  • 开发板:ESP32-S3(含nRF52833)
  • 串口工具:USB转串口适配器
  • 示波器/逻辑分析仪:用于信号完整性验证
  • 以太网线缆与交换机:验证CH390H以太网
  • 万用表:检查电源与地回路

[本节为通用指导,无需具体文件引用]

使用hci_uart_tester.py进行串口通信测试

  • 准备工作
  • 安装Python与依赖(tkinter、pyserial等)
  • 确保PC与ESP32-S3之间串口连通
  • 连接与配置
  • 选择端口与波特率(默认1Mbps),可选启用硬件流控
  • 点击“连接”建立会话
  • 常用测试步骤
  • 发送基础命令:如“HCI Reset”、“Read Local Version”
  • 设置事件掩码与LE特性:启用LE事件与扫描能力
  • 启动扫描:主动/被动扫描,观察广告报告与设备列表
  • GATT服务发现:连接设备后执行服务/特征发现
  • 日志与解析
  • 查看日志面板中的HEX数据与解析信息
  • 关注事件类型、子事件与错误码

章节来源 - hci_uart_tester.py - hci_test.html

自动化测试脚本与流程

  • WebUI自动化
  • 使用浏览器脚本或HTTP客户端轮询事件接口,记录响应
  • 批量发送命令序列,统计成功率与延迟
  • 透传模式自动化
  • 通过脚本控制USB与UART之间的数据转发
  • 记录往返时延与丢包率
  • 回归测试
  • 每次固件升级后执行完整链路测试
  • 采集日志与事件,生成测试报告

章节来源 - hci_test_server.c - hci_test.html - hci_passthrough.c

硬件可靠性测试与长期稳定性评估

  • 温度循环:在不同温度区间运行链路测试
  • 机械振动:模拟运输与安装过程中的振动影响
  • 长时运行:连续7×24小时运行,监控事件丢失与性能退化
  • 电源纹波:在不同负载下测量电源质量,评估对链路的影响

[本节为通用指导,无需具体文件引用]