STM32简易示波器
基于STM32G031的寒假小项目简易示波器,实现了一些比较基础的功能
标签
STM32
Next
更新2021-02-27
1903

项目描述 - 项目需求

1.完成对板上音频信号的采集和波形显示,可以通过手机播放音乐或App产生音频信号的方式提供声音信号源,通过板上电路的放大、MCU中ADC的采集以后将波形显示在OLED屏幕上,可以通过板上按键的操作在两个方向(横轴 - 时间;纵轴 - 幅度)来扩展、压缩波形的显示,按键的功能可自行定义;

2.实现信号发生器的功能,能够产生2KHz以内的正弦波、三角波、方波三种常用波形,通过按键的操作能够实现频率可调、幅度可调,通过调整板上的R、C的值,可以最高生成200KHz的模拟信号;

3.能够通过Ain管脚测量外部模拟信号(0-3.3V,DC-200KHz),并能够对外部的周期性波形测量其周期和峰峰值;

4.能够对采集到的信号进行FFT变换,并在屏幕上显示其基频及低次谐波(比如2、3、4、5次)的分量。

 

实现思路,完成的功能,达到的性能,问题

关于信号采集,spwm,不同波形显示等很多重要的实现思路都来自https://www.eetree.cn/project/detail/78刘同学的代码,他的直播也为我解答了很多疑惑。

对板上音频信号的采集和Ain管脚测量外部模拟信号主要采用的实现方法,即用一个ADC端口对两路信号循环转换,在采集到的信号中通过下标将两路信号进行区分。由于在家中没有其他元件,所以只能用手机的FrequencyGenerator产生不同频率的声音信号来作为输入信号,如果用外部电路生成外部模拟信号的话效果应该相差不大。

ADC采用DMA方式,一次转换完成后获得一组数据,在回调函数中通过选择两路信号并显示在OLED屏上,通过设置几种采样间隔的选择来实现时间方向的扩展压缩,当外界信号频率比较高时由于采样间隔选取不合适的原因可能会出现失真的情况,选择适当的外界信号频率即可看到比较好的扩展压缩的效果;通过设置电压显示范围来实现波形在纵轴上的扩展压缩,这个实现效果比较好。

五个按键从左到右依次实现波形显示采样间隔,电压显示范围调节,信号发生器中不同波形的选择,信号发生器和测量模拟外界信号的切换,FFT窗口显示。

信号发生器是通过spwm实现的,设置一个TIM端口,可以输出spwm波和设置波形信息,spwm是占空比不同的方波信号,通过ADC端口采集到数据后后,设置合适的采样频率,进行取点求和即获得占空比的信息,再将相应占空比对应的信号的值显示在OLED上即可生成不同的波形,只需要设置spwm波数组的值即可实现不同频率和幅值的方波,正弦波,三角波的显示。

测得外部周期性模拟信号后根据采样值的最值容易测得峰峰值,由于我没有生成波形的仪器,只能用手机产生正弦周期信号,正弦信号的周期测量是容易的,方波等多频率成分信号的周期可能就难以测量了,我也没有什么思路,所以没有尝试周期的测量。

FFT变换是对外界输入的音频信号进行分析的,选择的点数是32,选择64点的话会经常出现卡死的现象,这样去掉前两个点表示的直流成分后将频谱可以显示在OLED屏幕上,ADC时钟频率为16MHz,两路通道均选用160.5 cycles,这样算出采样频率为16*10^6Hz/(2*(160.5+12.5))=46.24KHz,所以能测量的频率最高是23.1KHz,通过手机生成的特定频率声音信号进行测试,可以发现计算结果跟实验结果是相符的。

 

4kHz声音信号输入

Fn9UzGwCx_mxx5xrUnVae6plTzB8

4kHz信号FFTFrnoewstB1m6hIiU-fcHQEBi69xO

10kHz信号FFT

FhCXAAN1A6lcYI3y1ER9_yBxVEgy

生成正弦波

Fn5yLETcY0mWpUJhjUBh4L6YA_sr

生成三角波

FrxnlULDvxTqX4ZKm3jnJZL9KbAI

附件下载
Scope.zip
团队介绍
北京理工大学
团队成员
张立润
学生
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号