Skip to content

Repository files navigation

信号失真度测量仪 — STM32

综合电路设计课程 A 题,与 2021 年 TI 杯信号类题目要求相似。基于 STM32 采集输入信号,通过 FFT 频谱分析计算总谐波失真度 (THD),并在 LCD 上显示时域波形和频谱。

硬件方案

部件 型号 说明
主控 STM32G431 Cortex-M4F @ 80MHz,含 DSP 指令集 + FPU
ADC 板载 ADC TIM 定时触发 + DMA 自动搬运
显示屏 TFT LCD 显示波形、频谱、THD 值
调试 UART 串口打印波形数据和频谱

工作原理

模拟信号输入 → 抗混叠滤波
  → TIM 触发 ADC 采样(多通道同步)
  → DMA 自动搬运到 SRAM 缓冲区
  → CMSIS-DSP FFT 运算(实数 FFT)
  → 基波 + 各次谐波幅值提取
  → THD 计算:√(∑ 谐波有效值²) / 基波有效值 × 100%
  → LCD 显示 + UART 输出

功能特性

1. 数据采集

  • TIM 定时器产生固定频率触发信号
  • ADC 多通道同步采样,DMA 环形缓冲区搬运
  • 采样率可配置,满足不同频率信号分析需求

2. FFT 频谱分析

  • 调用 CMSIS-DSP 库实 FFT 函数
  • 支持窗函数(可配置,减少频谱泄漏)
  • 提取基波和各次谐波的分量幅值
  • 输出归一化频谱(基波 = 100%)

3. THD 计算

  • 自动识别基波频率
  • 提取 2~10 次谐波分量
  • THD = √(V₂² + V₃² + ... + Vₙ²) / V₁ × 100%

4. LCD 显示

  • 第一行:学号 + 姓名
  • 波形区:输入信号时域波形
  • 频谱区:归一化幅值频谱(含基波和谐波)
  • 数据区:THDx(总谐波失真度)

5. 串口输出

  • 输入波形数据(用于验证)
  • 频谱数据(各频率分量幅值)
  • 计算结果(THD 值)

开发环境

工具 版本
IDE Keil MDK uVision 5
MCU SDK STM32Cube FW_G4
配置 STM32CubeMX
DSP 库 CMSIS-DSP
PCB 设计 嘉立创 EDA

项目结构

├── Core/               HAL 配置 + main 函数
├── Drivers/            STM32G4 HAL 驱动
├── DSP/                CMSIS-DSP 库
├── Module/             LCD 驱动、按键等
├── App/                应用代码(FFT、THD 计算)
├── MDK-ARM/            Keil 工程文件
└── DistortionCalculator.ioc   CubeMX 配置文件

使用

用 Keil MDK 打开 MDK-ARM 目录下的工程文件,编译下载到 STM32G4 开发板。

输入被测信号(通过信号发生器或开发板 DAC 自产生),自动测量并显示 THD。

About

信号失真度测量仪 (THD)——STM32 FFT 频谱分析 + LCD 波形显示,2021 TI 杯信号题

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages