0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解析简易示波器和信号发生器的实现

电子森林 来源:电子森林 作者:电子森林 2021-04-01 09:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本项目为南京工程学院刘昕禹同学完成并分享的作品

“简易示波器DIY套件V2.0 - 基于STM32G031最小系统模块”

因为本人也没学几天,如有错误,欢迎指正。

已经实现功能:

ADC模拟示波器,可以实现调节频率,单位电压,显示电压范围和选择频道(麦克风和Ain管脚)。

模拟函数发生,在Aux管脚可以实现正弦波、方波,并且可以调节频率。(今年大二,还没有学到模电,不知道怎么算三角波的占空比来实现信号的转换,理论上添加占空比数组后可以实现方波)。

可以实现同时输出波形(Aux)和接受波形的输入(Ain)。

未实现功能:

快速傅里叶变换(额,这个真不会,从网上复制来的FFT代码运行不起来,调用Cortex-M0的CMSIS DSP结果空间不足,使用之前Jack的FFT相关代码,也出现空间不足的情况。应该是使用了HAL库导致占用空间过大所导致的。写了两天代码,不想通过寄存器来实现,就算了吧,能退就退吧,我已经不想搞了)。

实现功能注意事项:

在这里就说说我遇到的坑吧。

空间不足,这类MPU的RAM的全局变量别开太大。(如果不添加FFT代码,目前代码可以实现局部刷新,提高显示速度)。

如果追求高刷新速度,建议使用局部刷新,经测试,局部刷新相对于全局刷新速度更快。

中断的合理安排。这类程序的设计需要添加多级中断,注意中断的优先级和中断内的代码的安排。

对于如果想要调用CMSIS来实现FFT的同学,希望注意空间的合理安排,或者自己来搞这里头的代码(我是真不想弄了,这两天让我心力憔悴)。

几个对开发板的建议吧:

开发板总体质量不错也挺小巧。

MPU的SPI总线和OLED的SPI总线对接(额,活动内页面说已经是对接的了,但是实际原理图和引脚测试结果都表明没有对接,望修改)。

能不能换用空间更大的MPU,就像我我添加HAL_UART的库后,代码一下子大了一半。

通过上位机来实现MPU进入下载模式,我看该该CH340那RTS,CTS没有接入开发板,通过置位这两个脚来实现开发板的上电和Boot0的拉低。

Reset按下后能够使得OLED(或整个开发板)的断电,有些时候因为传输给OLED的信号存在问题,重新初始化OLED是无效的,需要重新上电。

实现的思路:

先说简单的吧,信号发生,因为该模块在Aux上级加了滤波,所以可以调节信号的占空比来生成正弦波,我是通过调节预分频器来实现波形频率的变化(额,这个说实话我也不太懂,我也是看了网上的内容才知道的,就不多说了,以免误导。同时因为放假前嫌示波器太重了,带起来不方便,就没带回家了,我现在还不太清楚预分频数值和频率的关系,所以代码上就写了预分频的数值,希望知道的人能告诉我一下,谢谢)。

示波器,通过ADC中断来实现对数值的写入,写入后对屏幕进行滚动输出。

这段代码中存在一个问题,就是由于中断的性质,我们在上一屏和下一屏之间是不太推荐去采样的,所以会导致在快速刷新的时候,上一屏和下一屏画面不太连续(说实话也看不太出来,但是理论上是这样子的)。

由于屏幕分辨率的原因,对于方波这类上升沿和下降沿变化很快的信号他的上升沿和下降沿显示就不太够,就会出现上升沿和下降沿是一个点来表示的情况,但是可以通过算法来调节[1]。

达到的性能:

实现10us、20us、50us、0.1ms、0.5ms、2.5ms的采样速度,并且支持仅调节源代码里头的数组不改变函数内容来实现更多的采样率。

实现1.0v、0.8v、0.4v、0.1v的电压间隔,可以调节0-5v内电压显示范围,并且支持仅调节源代码里头的数组不改变函数内容来实现更多的电压间隔。

在较高电压时以x.x来显示,在低电压时以.xx来显示,同时改变电压间隔该功能仍能复现。

支持局部刷新,来实现更高的显示速率。

函数发生,目前因为按键的限制,预分频在0-999内调节,但是可以调节源代码里头的变量大小的限制变量来实现更多的预分频即频率。

函数发生,支持添加占空比表来实现更多不同的函数发生。

源代码和以编译文件:

注意事项:

请勿修改CubeMX的时钟,这会导致与实际标称值对应不上。

已禁用UART端口,如有需要望启用。

KEIL MDK版本,请对应版本打开。

补充:

经过测试,HAL库在不添加管脚、中断,在仅有初始化的时候,添加cortex-m0 dsp库,空间不够,添加zerofft也存在空间不够的情况。不排除是本人配置存在的问题,希望了解的大佬,不吝赐教,谢谢。

看了Jack大佬直播的视频,找到了有关[1]问题的解决方法,可以通过插值来实现波形的连续。但是,在下文提交的代码中,若采用插值的方法,面对Aux输出正弦波,Ain输入的情况,由于分辨率的原因,会出现一团糊的情况。不排除本人代码水平问题,希望了解的大佬,不吝赐教,谢谢。

波形的生成,经测试,调节预分频的大小同时保持占空比的不变可以调节波形的频率,但是,由于占空比的计算要使用专门的算法,不同的幅值对应某一时刻的占空比是不同的,故需要保存多个码表来实现不同的幅值。[提交版已实现]

由于fft代码占用空间太大,同时由于水平有限,无法实现,提交版已经注释有关fft代码(引用后可能会导致堆栈的问题,导致屏幕花屏),但是仍保留代码在里面同时fft界面也已预留,水平较强的同学可以试一试。

去除掉fft代码后,空间剩余好多,就添加几组幅值不同的正弦波函数占空比表以及重新启用了局部刷新的功能(经测试,局部刷新相对于全局刷新有肉眼上速度的提升)。

追加:Total RO Size (Code + RO Data) 21856 ( 21.34kB)

Total RW Size (RW Data + ZI Data) 6960 ( 6.80kB)

Total ROM Size (Code + RO Data + RW Data) 21924 ( 21.41kB) 可以看到,RAM空间快不足了,可能提交的这份代码有点难以实现,如果要用的话可以手动关闭局部刷新,可以省出来1k的RAM。

贴几张图吧:

o4YBAGBlKJCAGaZaAAfhhGGehQ4749.png

o4YBAGBlKL6AO8dMABMT44cCCJc383.png

pIYBAGBlKYyATg3lABG-bcDqAu0606.png

o4YBAGBlKOOAIrw3ABQh6T_cR2Y826.png

pIYBAGBlKT6AGShVABN6ZkO9x38101.png

update:添加波形幅值调节

pIYBAGBlKReAMQ2lAA2cGOYpznk349.png

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 示波器
    +关注

    关注

    113

    文章

    6967

    浏览量

    194687
  • OLED
    +关注

    关注

    121

    文章

    6331

    浏览量

    232520
  • adc
    adc
    +关注

    关注

    100

    文章

    7392

    浏览量

    553790

原文标题:简易示波器和信号发生器的实现

文章出处:【微信号:xiaojiaoyafpga,微信公众号:电子森林】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    信号发生器的构成和工作原理

    信号发生器作为现代电子测试与测量领域中的关键设备,其精密的构造和巧妙的工作原理使之能够产生各种所需的电信号。本文将深入探讨信号发生器的构成及
    的头像 发表于 11-13 11:45 121次阅读
    <b class='flag-5'>信号</b><b class='flag-5'>发生器</b>的构成和工作原理

    国产射频信号发生器好在哪

    信号发生器
    西安同步电子科技有限公司
    发布于 :2025年11月12日 16:52:27

    微波信号发生器介绍

    信号发生器
    西安同步电子科技有限公司
    发布于 :2025年11月06日 16:01:44

    脉冲信号发生器

    发生器
    西安同步电子科技有限公司
    发布于 :2025年11月04日 17:24:04

    可延迟信号发生器介绍

    gps信号发生器
    西安同步电子科技有限公司
    发布于 :2025年10月28日 10:36:45

    高频信号发生器怎么用

    信号发生器
    西安同步电子科技有限公司
    发布于 :2025年10月21日 17:48:58

    信号发生器选型指南:函数、射频与任意波形的差异与适用场景

    在现代电子测试与测量领域,信号发生器是不可或缺的工具。面对市场上函数发生器、射频信号发生器与任意波形发生
    的头像 发表于 09-23 18:01 675次阅读
    <b class='flag-5'>信号</b><b class='flag-5'>发生器</b>选型指南:函数、射频与任意波形的差异与适用场景

    看看我们维修工程师新修了哪些信号发生器#信号发生器#修理仪器

    信号发生器
    安泰仪器维修
    发布于 :2025年07月10日 17:32:48

    用CYC8038搭建简易函数发生器

    。文章详细解析了CYC8038的引脚功能,并提供了简易信号发生器的电路搭建方案,包括频率调节、波形失真度调整等实用技巧,延续了40年来的技术传承。
    的头像 发表于 06-11 16:29 1119次阅读
    用CYC8038搭建<b class='flag-5'>简易</b>函数<b class='flag-5'>发生器</b>

    信号发生器PM调制信号设置

    信号发生器与PM调制的重要性 在现代通信技术和电子实验中,信号发生器已成为测试和验证设备中必不可少的工具。无论是在科研实验、产品开发,还是设备调试过程中,
    的头像 发表于 02-20 16:56 1392次阅读
    <b class='flag-5'>信号</b><b class='flag-5'>发生器</b>PM调制<b class='flag-5'>信号</b>设置

    信号发生器的组成元件

    信号发生器是电子测试和实验过程中常用的电子仪器,能够输出各种高品质、高性能的波形。它主要由多个关键元件和组件构成,这些元件共同协作,实现信号的生成、调节和输出。本文将详细探讨
    的头像 发表于 02-03 16:13 1560次阅读

    DDS信号发生器支持单通道50个正弦载波!#信号发生器 #AWG #DDS

    信号发生器
    虹科卫星与无线电通信
    发布于 :2024年12月23日 18:03:30