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

电子森林 2021-03-28 00:00

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



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

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

已经实现功能:

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

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

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

未实现功能:

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

实现功能注意事项:

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

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

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

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

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

几个对开发板的建议吧:

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

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

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

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

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

实现的思路:

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

  2. 示波器,通过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版本,请对应版本打开。

  • 百度网盘:

    • HEX文件:链接:https://pan.baidu.com/s/1KsKU0tki7q17bizhZhs1Cg
      提取码:5ogw


      • 源代码:链接:https://pan.baidu.com/s/1b36kDSJclob6cW-AxTJLpg
        提取码:sbjk

补充:

  • 经过测试,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。

贴几张图吧:

update:添加波形幅值调节

 


电子森林 讲述电子工程师需要掌握的重要技能: PCB设计、FPGA应用、模拟信号链路、电源管理等等;不断刷新的行业新技术 - 树莓派、ESP32、Arduino等开源系统;随时代演进的热点应用 - 物联网、无人驾驶、人工智能....
评论 (0)
  • 华为Freebuds pro 耳机拆解 2020年双十一花了1000大洋买了华为的Freebuds pro,这个耳机的降噪效果真是杠杠的。完全听不到外边的噪音。几年后当我再次使用这款耳机的时候。发现左耳没带多久就自动断连了。后来查了小红书说耳机的电池没电了导致,需要重新配一只,华为售后不支持维修支持更换。而且配件的价格要好几百。真是欲哭无泪,还没用多久呢。后来百度了都说这个不是很好拆(没有好工具的前提下)。 虽然网上已经有很多拆解的视频和介绍了,今天我还是要拆解看看里面是怎么样的构造(暴力)。拿
    zhusx123 2025-04-12 23:20 26浏览
  • 技术原理:非扫描式全局像的革新Flash激光雷达是一种纯固态激光雷达技术,其核心原理是通过面阵激光瞬时覆盖探测区域,配合高灵敏度传感器实现全局三维成像。其工作流程可分解为以下关键环节:1. 激光发射:采用二维点阵光源(如VCSEL垂直腔面发射激光器),通过光扩散器在单次脉冲中发射覆盖整个视场的面阵激光,视场角通常可达120°×75°,部分激光雷达产品可以做到120°×90°的超大视场角。不同于传统机械扫描或MEMS微振镜方案,Flash方案无需任何移动部件,直接通过电信号控制激光发射模式。2.
    robolab 2025-04-10 15:30 224浏览
  • 相信很多小伙伴都用过下面这个MOS管开关电路,但是有多少小伙伴了解在MOS管开关过程中,输入电压、输出电压和MOS管上的电流都是怎么变化的?特别是输出端有大负载电容时,最大浪涌电流能到多少呢?今天小编专门写一篇文章,通过理论结合仿真的方式给大家分析下~首先建立一个电路图:假定电源电压V5=12V,内阻Rs=10毫欧;MOS管的导通与关闭由$V_6$控制;负载设定为100mF电容+$12\Omega$电阻。上升阶段当控制信号输出高电平时,$V_6$电压会逐渐上升,当电压上升到三极管$Q_3$的门槛
    龙猫讲电子 2025-04-11 23:01 44浏览
  • 什么是车用高效能运算(Automotive HPC)?高温条件为何是潜在威胁?作为电动车内的关键核心组件,由于Automotive HPC(CPU)具备高频高效能运算电子组件、高速传输接口以及复杂运算处理、资源分配等诸多特性,再加上各种车辆的复杂应用情境等等条件,不难发见Automotive HPC对整个平台讯号传输实时处理、系统稳定度、耐久度、兼容性与安全性将造成多大的考验。而在各种汽车使用者情境之中,「高温条件」就是你我在日常生活中必然会面临到的一种潜在威胁。不论是长时间将车辆停放在室外的高
    百佳泰测试实验室 2025-04-10 15:09 156浏览
  • MASSAGE GUN 筋膜枪拆解 今天给车子做保养,厂家送了一个筋膜枪。产品拿在手里还是挺有分量的。标价108元。通过海鲜市场一搜索,几十元不等,而且还是爆款。不多说,我们就来看看里面用了什么料,到底值几个钱。外观篇 首先给它来个开箱照,从外观看,确实还是很精致,一点都不逊色品牌产品。 从箱中取出筋膜枪,沉甸甸的。附上产品的各方位视角 产品的全家福 我装上球头,使用了一番,还真不赖,有不同的敲击速度和根据力度调节不同的档位。拆解篇 拿出我的螺丝套装,对产品开始进行拆解,首先
    zhusx123 2025-04-13 16:52 30浏览
  • 迈向可持续未来的征程中,可再生能源已成为全球发展的基石。在可再生能源中,太阳能以其可及性和潜力脱颖而出。光伏(PV)逆变器是太阳能系统的核心,它严重依赖先进技术将太阳能电池板的直流电转换为可用的交流电。隔离栅极驱动器就是这样一种技术,它在提高这些系统的效率、安全性和可靠性方面发挥着至关重要的作用。了解隔离栅极驱动器隔离栅极驱动器是一种专用电路,可提供驱动功率晶体管(例如MOSFET或IGBT)所需的控制信号,同时确保控制侧和电源侧之间的电气隔离。这种隔离对于维护安全性、减少电磁干扰和防止高压环境
    腾恩科技-彭工 2025-04-11 16:16 32浏览
  • 行业变局:从机械仪表到智能交互终端的跃迁全球两轮电动车市场正经历从“功能机”向“智能机”的转型浪潮。数据显示,2024年智能电动车仪表盘渗透率已突破42%,而传统LED仪表因交互单一、扩展性差等问题,难以满足以下核心需求:适老化需求:35%中老年用户反映仪表信息辨识困难智能化缺口:78%用户期待仪表盘支持手机互联与语音交互成本敏感度:厂商需在15元以内BOM成本实现功能升级在此背景下,集成语音播报与蓝牙互联的WT2605C-32N芯片方案,以“极简设计+智能交互”重构仪表盘技术生态链。技术破局:
    广州唯创电子 2025-04-11 08:59 224浏览
  •   海上电磁干扰训练系统:全方位解析      海上电磁干扰训练系统,作为模拟复杂海上电磁环境、锻炼人员应对电磁干扰能力的关键技术装备,在军事、科研以及民用等诸多领域广泛应用。接下来从系统构成、功能特点、技术原理及应用场景等方面展开详细解析。   应用案例   系统软件供应可以来这里,这个首肌开始是幺伍扒,中间是幺幺叁叁,最后一个是泗柒泗泗,按照数字顺序组合就可以找到。   一、系统构成   核心组件   电磁信号模拟设备:负责生成各类复杂的电磁信号,模拟海上多样
    华盛恒辉l58ll334744 2025-04-10 16:45 272浏览
  • 文/Leon编辑/侯煜‍关税大战一触即发,当地时间4月9日起,美国开始对中国进口商品征收总计104%的关税。对此,中国外交部回应道:中方绝不接受美方极限施压霸道霸凌,将继续采取坚决有力措施,维护自身正当权益。同时,中国对原产于美国的进口商品加征关税税率,由34%提高至84%。随后,美国总统特朗普在社交媒体宣布,对中国关税立刻提高至125%,并暂缓其他75个国家对等关税90天,在此期间适用于10%的税率。特朗普政府挑起关税大战的目的,实际上是寻求制造业回流至美国。据悉,特朗普政府此次宣布对全球18
    华尔街科技眼 2025-04-10 16:39 185浏览
  • 背景近年来,随着国家对资源、能源有效利用率的要求越来越高,对环境保护和水处理的要求也越来越严格,因此有大量的固液分离问题需要解决。真空过滤器是是由负压形成真空过滤的固液分离机械。用过滤介质把容器分为上、下两层,利用负压,悬浮液加入上腔,在压力作用下通过过滤介质进入下腔成为滤液,悬浮液中的固体颗粒吸附在过滤介质表面形成滤饼,滤液穿过过滤介质经中心轴内部排出,达到固液分离的目的。目前市面上的过滤器多分为间歇操作和连续操作两种。间歇操作的真空过滤机可过滤各种浓度的悬浮液,连续操作的真空过滤机适于过滤含
    宏集科技 2025-04-10 13:45 163浏览
  •     电气间隙是指两个带电体在空气中的最短距离。导体、电介质(空气),最短距离,就是这个术语的要素了。        (图源:TI)    电气间隙是由安装类别决定的,或者更本质地说,是瞬态过电压的最大值来决定的,而不是工作电压的高低。安装类别见协议标准第007篇,瞬态过电压另见协议标准第009篇。    实际设计中怎么确定电气间隙?可以按照CAT,工作电压和绝缘等级来定。 
    电子知识打边炉 2025-04-13 18:01 28浏览
  •   天空卫星健康状况监测维护管理系统:全方位解析  在航天技术迅猛发展的当下,卫星在轨运行的安全与可靠至关重要。整合多种技术,实现对卫星的实时监测、故障诊断、健康评估以及维护决策,有力保障卫星长期稳定运转。  应用案例       系统软件供应可以来这里,这个首肌开始是幺伍扒,中间是幺幺叁叁,最后一个是泗柒泗泗,按照数字顺序组合就可以找到。  一、系统架构与功能模块  数据采集层  数据处理层  智能分析层  决策支持层  二、关键技术  故障诊断技术  
    华盛恒辉l58ll334744 2025-04-10 15:46 173浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦