1. 上位机整体架构
1 | ┌──────────────────────────────────────────────────────────────────┐ |
2. 项目结构
| 组件 | 路径 | 职责 |
|---|---|---|
| PyComSender | COM2IIC/PyComSender/ | PyQt 上位机,加载CSV并发送命令 |
| PyEisAdcCreator | COM2IIC/PyEisAdcCreator/ | 根据 config.yml 生成 EIS 验证用 CSV |
| STM32F407IICBridge | STM32F407IICBridge/ | 串口转 I2C 桥接固件 |
3. PyComSender 主要功能
3.1 串口管理
- 自动扫描可用串口
- 波特率可选:9600 ~ 115200(默认 115200)
- 打开/关闭串口
3.2 CSV 加载
1 | # main_window.py - load_commands() |
- 解析 CSV 每一行
- 跳过
#注释行 - 调用
I2CCommand.from_csv_row(row)转换为命令对象
3.3 命令执行
- 顺序执行:按 CSV 行序依次执行
- 控制流:支持
DELAY、LOOP BEGIN/END、REPEAT - 异步调度:使用
QTimer.singleShot(0, ...)避免递归栈溢出,支持任意深度嵌套
3.4 日志
- 实时显示在 GUI
- 同时写入
logs/test_YYYYMMDD_HHMMSS.log - 颜色区分:命令(蓝)、成功(绿)、错误(红)
4. CSV 文件来源
4.1 手动编写
适用于简单 I2C 读写、寄存器配置调试。
4.2 PyEisAdcCreator 自动生成
针对 EIS 芯片验证:
1 | config.yml → PyEisAdcCreator → output_pycomsender.csv |
- 支持
FREQ_INDEX: 0~0xF等范围参数,自动生成多组配置 - 每组配置包含:寄存器写、DELAY、ADC 范围比较/读命令
- 输出格式符合 PyComSender 的 CSV 规范
5. 典型 EIS 验证 CSV 结构
1 | #=== 配置组 1/16 - FREQ_INDEX = 0 === |
- 每个配置组:写寄存器 → DELAY:10 → 17 个 ADC 点验证
- 16 个配置组 = 16 个频率点,完整 EIS 扫频验证
6. 数据流总结
- PyEisAdcCreator:算法 + 配置 → 生成 CSV
- PyComSender:加载 CSV → 解析为 I2CCommand 列表
- 执行引擎:顺序 + 控制流 → 通过串口发往 STM32
- STM32:串口协议 → I2C 时序 → 操作 FPGA 寄存器
- FPGA:寄存器配置 → 执行 EIS 测量 → 结果存于 EIS Cell 寄存器
- 验证:读回/范围比较 → 判断 Pass/Fail
下一篇文章将详细说明 STM32 的串口命令协议与 I2C 转发逻辑。
系列目录
01. EIS原理与电池阻抗谱
02. FPGA ADC激励与电池阻抗扫描原理
03. 上位机架构:PyQt与CSV流程(本文)
04. STM32命令转发与串口-I2C桥接
05. CSV脚本解释器实现精髓