寒假一起练-1-有信号发生器功能的简易示波器DIY套件V2.0
使用硬禾学堂开发的16管脚MCU最小系统核心模块,编程制作一款能够采集200KHz以内模拟信号和麦克风、能够产生2KHz以内频率的任意波形发生器的简易示波器DIY套件。
标签
嵌入式系统
测试
void
更新2021-03-02
1362

功能:

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

  1. 实现信号发生器的功能,能够产生2KHz以内的正弦波、三角波、方波三种常用波形,通过按键的操作能够实现频率可调、幅度可调,通过调整板上的R、C的值,可以最高生成200KHz的模拟信号;
  2. 能够通过Ain管脚测量外部模拟信号(0-3.3V,DC-200KHz),并能够对外部的周期性波形测量其周期和峰峰值;
  3. 能够对采集到的信号进行FFT变换,并在屏幕上显示其基频及低次谐波(比如2、3、4、5次)的分量。

使用CubeIDE开发, 建立工程,配置引脚如下:

FtHQoFsMkJwUkjK_Ny715Kfqdxmt

片内外设及功能安排如下

Fsfmj4C94WcPW60tQq5qReZVnT4v

一图胜千言,所有的功能都可以参考出来

演示部分在视频中

ADC采样使用DMA+TIM, 连续采样完一组后停止采集, 标识一个完成标志

这样采集速度超快:1ksps~4Msps.也就意味着可以分析出5Hz~2MHz的波形.

主程序中当采集一组后, 进行数据分析, 包括幅度, 频率等

其中频率计算我使用arm内置的DSP库进行128点的FFT运算.(可以使用更多点数以获得细腻的频谱分辨率,处于内存消耗,我是用了128点)

调试阶段就用板载的串口, 发送波形与fft运算结果:

FhlUL4QfPaZmkbUYKW7_h9Sv_gsV

左边为128点原始数据,右边为128点fft的前64点(因为FFT运算的对称效果)

按键处理部分:

   并未使用程序消抖方法, 在按键中断中设立标志位, 主程序直接对标志位读取, 因为大循环时间的原因, 就是是重复触发也会当作一次按键事件.

波形合成:

   使用两个TIM定时器, 在1号中断里实时更新占空比放到TIM2的pwm输出, 我将pwm设置成了8位宽,(也就是幅度与偏置有256级调节空间),便于操作我每次调节改变16作为步进.输出PWM波通过RC低通滤波实现波形合成.

调整范围: 频率 50~2kHz, 幅度0~3.3v, 直流0~3.3v

 

总结:

核心使用的是STM32G031, 麻雀虽小五脏俱全, 引出引脚与外片内外设安排也非常合理, 资源可以充分发挥

感谢硬禾用心设计的迷你核心模块, 搭配底板使用效果绝佳

 

附件下载
miniOSC.rar
使用CubeIDE搭建
团队介绍
安徽师范大学
团队成员
Chou Ds
通信工程菜鸡一枚
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号