返回项目列表
STM32H723 Waveforms 上位机

STM32H723 Waveforms 上位机

2026.05 – 2026.072026年7月13日Vibe coding
PythonPyQt6STM32串口通信波形发生器ADCSPIDAC

基于 PyQt6 的 STM32H723 多功能波形发生器上位机,集成波形时序编辑、ADC 多通道采集、SPI 寄存器配置与 DAC 电压控制,支持串口通信与 Excel 数据导入导出。

硬件平台
  • STM32H723ZGT6
  • 串口转 USB 模块
软件工具
  • Python 3.10+
  • PyQt6
  • pyserial
  • pyqtgraph
  • openpyxl
  • PyInstaller

项目概述

本项目是一款为 STM32H723ZGT6 微控制器配套开发的多功能上位机软件,基于 PyQt6 构建图形界面,通过串口与下位机进行自定义二进制帧协议通信。应用集成了波形时序编辑器、ADC 多通道采集、SPI 寄存器批量写入、DAC 电压输出控制与快照采集五大功能模块,覆盖了嵌入式开发调试中常见的外设测试需求。

核心特性:

| 模块 | 功能 | |------|------| | 波形发生器 | 5 通道时序规则编辑,实时预览,单周期/连续播放 | | ADC 采集 | 3 通道同步采集,支持连续与单次 Burst 模式 | | SPI 面板 | 寄存器批量写入,多预设管理,Excel 导入导出 | | DAC 控制 | 12-bit 精度电压输出,滑块 + 输入框双模式 | | 快照采集 | PA6/PA7 模拟 + CLK/XYNC 数字同步采集,含像素映射导出 |

系统架构

┌─────────────────────────────────────────────────────┐
│                  PyQt6 主窗口                        │
│  ┌───────────┐ ┌───────────┐ ┌───────────────────┐  │
│  │  波形面板  │ │  SPI 面板  │ │    ADC 面板       │  │
│  │ WavePanel │ │ SpiPanel  │ │   AdcPanel        │  │
│  └─────┬─────┘ └─────┬─────┘ └────────┬──────────┘  │
│        │             │                │              │
│  ┌─────┴─────────────┴────────────────┴──────────┐  │
│  │           SerialLink (串口通信层)               │  │
│  │    Reader Thread → Frame Queue → Processor     │  │
│  └─────────────────────┬─────────────────────────┘  │
│                        │                            │
└────────────────────────┼────────────────────────────┘
                         │  USB-Serial
              ┌─────────────────────┐
              │  STM32H723ZGT6 MCU  │
              │  自定义二进制帧协议   │
              └─────────────────────┘

通信协议设计

采用自定义二进制帧协议,帧结构如下:

┌──────┬──────┬────────┬─────────┬──────┬──────┐
│ SOF  │ CMD  │ Length │ Payload │ CRC8 │ EOF  │
│ 2B   │ 1B   │ 2B     │ N bytes │ 1B   │ 1B   │
│ 0xA5 │      │ LE     │         │      │ 0x0A │
│ 0x5A │      │        │         │      │      │
└──────┴──────┴────────┴─────────┴──────┴──────┘

主要命令字:

| 命令码 | 方向 | 功能 | |--------|------|------| | 0x01 | Host→MCU | 波形配置(采样率、点数、通道掩码) | | 0x02 | Host→MCU | 波形数据(BSRR 位掩码数组) | | 0x03 | Host→MCU | 波形控制(开始/停止/单次触发) | | 0x10 | Host→MCU | ADC 配置 | | 0x12 | MCU→Host | ADC 采集数据 | | 0x20 | Host→MCU | SPI 配置 | | 0x21 | Host→MCU | SPI 寄存器写入 | | 0x30 | Host→MCU | DAC 输出值 |

通信层采用双线程架构:Reader 线程只负责从串口读取字节并解析帧,解析后的帧推入线程安全队列;Processor 线程从队列消费帧并触发回调。这种设计避免了 UI 线程阻塞导致串口缓冲区溢出的问题。

功能模块详解

波形时序编辑器

支持 5 个 GPIO 通道(XYNC / SCLK / SH_R / SH_S / RST)的时序规则编辑:

  • 图形化规则编辑:指定触发边沿序号、新电平状态、脉宽(CLK 周期数)
  • 实时波形预览:基于 pyqtgraph 的多通道波形显示,支持缩放与平移
  • 模式编辑器:所有通道可在表格中直接编辑,所见即所得
  • 模板系统:常用时序配置可保存/加载为模板
  • Excel 导入导出:时序规则支持与 Excel 互转,方便跨团队协作

ADC 多通道采集

  • 3 通道同步采集(PA6 / PA7 / PC4),独立 Y 轴显示
  • 支持连续采集与单次 Burst 模式
  • 采集数据自动换算为电压值(12-bit, 3.3V 参考)
  • 配置持久化至 JSON 文件,兼容源码运行与 PyInstaller 打包两种场景

SPI 寄存器面板

  • 可配置 CPOL / CPHA / 波特率分频 / 帧位宽
  • 支持 8-bit 与 16-bit 寄存器数据宽度
  • 多预设管理:创建、切换、保存命名预设
  • 批量写入选中的寄存器,带应答校验

DAC 电压控制

  • 12-bit 精度(0~4095),对应 0~3.3V 输出
  • 滑块 + 数值输入框双模式控制
  • 实时显示当前 DAC 值与对应电压

技术亮点

  1. 线程安全的串口通信:Reader/Processor 双线程 + 帧队列解耦,队列满时丢弃旧帧而非阻塞读取
  2. CRC8 校验:每帧附带 CRC8 校验,保证数据完整性
  3. PyInstaller 兼容:配置文件路径自动适配源码运行与 EXE 打包两种场景
  4. 实时波形预览:基于 pyqtgraph 的高性能波形渲染,支持 Ctrl+滚轮缩放
  5. 模板系统:波形时序配置可序列化为 JSON 模板,方便复用与分享