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

电子森林 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等开源系统;随时代演进的热点应用 - 物联网、无人驾驶、人工智能....
评论
  • 全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)宣布与Taiwan Semiconductor Manufacturing Company Limited(以下简称“台积公司”)就车载氮化镓功率器件的开发和量产事宜建立战略合作伙伴关系。通过该合作关系,双方将致力于将罗姆的氮化镓器件开发技术与台积公司业界先进的GaN-on-Silicon工艺技术优势结合起来,满足市场对高耐压和高频特性优异的功率元器件日益增长的需求。氮化镓功率器件目前主要被用于AC适配器和服务器电源等消费电子和
    电子资讯报 2024-12-10 17:09 88浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 79浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 50浏览
  • 概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些之前系列器件还未遇到的问题,这些问题将在本文中进行详细描述介绍。 在五代Cyclone器件内部系统时钟受限的情况下,意味着大量逻辑资源将被浪费在于实现较大长度的TDL上面。是否可以找到方法可以对此前TDL的长度进行优化呢?本文还将探讨这个问题。TDC前段BIN颗粒堵塞问题分析 将延时链在逻辑中实现后
    coyoo 2024-12-10 13:28 102浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 51浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 71浏览
  • 我的一台很多年前人家不要了的九十年代SONY台式组合音响,接手时只有CD功能不行了,因为不需要,也就没修,只使用收音机、磁带机和外接信号功能就够了。最近五年在外地,就断电闲置,没使用了。今年9月回到家里,就一个劲儿地忙着收拾家当,忙了一个多月,太多事啦!修了电气,清理了闲置不用了的电器和电子,就是一个劲儿地扔扔扔!几十年的“工匠式”收留收藏,只能断舍离,拆解不过来的了。一天,忽然感觉室内有股臭味,用鼻子的嗅觉功能朝着臭味重的方向寻找,觉得应该就是这台组合音响?怎么会呢?这无机物的东西不会腐臭吧?
    自做自受 2024-12-10 16:34 141浏览
  • 【萤火工场CEM5826-M11测评】OLED显示雷达数据本文结合之前关于串口打印雷达监测数据的研究,进一步扩展至 OLED 屏幕显示。该项目整体分为两部分: 一、框架显示; 二、数据采集与填充显示。为了减小 MCU 负担,采用 局部刷新 的方案。1. 显示框架所需库函数 Wire.h 、Adafruit_GFX.h 、Adafruit_SSD1306.h . 代码#include #include #include #include "logo_128x64.h"#include "logo_
    无垠的广袤 2024-12-10 14:03 71浏览
  • 智能汽车可替换LED前照灯控制运行的原理涉及多个方面,包括自适应前照灯系统(AFS)的工作原理、传感器的应用、步进电机的控制以及模糊控制策略等。当下时代的智能汽车灯光控制系统通过车载网关控制单元集中控制,表现特殊点的有特斯拉,仅通过前车身控制器,整个系统就包括了灯光旋转开关、车灯变光开关、左LED前照灯总成、右LED前照灯总成、转向柱电子控制单元、CAN数据总线接口、组合仪表控制单元、车载网关控制单元等器件。变光开关、转向开关和辅助操作系统一般连为一体,开关之间通过内部线束和转向柱装置连接为多,
    lauguo2013 2024-12-10 15:53 84浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-10 16:13 109浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 83浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦