
【新手向】天空星数字示波器扩展板
简介
本项目基于立创·天空星STM32F407VET6开发板,开发出一套适合新手学习STM32的拓展学习板。以数字示波器项目为学习载体,全方位了解开发板功能,并开发出一个实用示波器和波形发生器。
简介:本项目基于立创·天空星STM32F407VET6开发板,开发出一套适合新手学习STM32的拓展学习板。以数字示波器项目为学习载体,全方位了解开发板功能,并开发出一个实用示波器和波形发生器。开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
本项目参加了立创开发板的天空星拓展板征集令活动
作品获得二等奖
前言
- 2024.11.24 更新说明:由于作品已经交给立创,软件部分无法进行调试更新;故本项目待合适的活动,等硬件优化后再继续更新(不排除参加其他活动制作更便捷实用示波器设备的可能)。
本项目基于立创·天空星STM32F407VET6开发板,开发出一套适合新手学习STM32的拓展学习板。以数字示波器项目为学习载体,学习者使用基础库在开发过程中可以接触到GPIO、定时器、中断、串口通信、SPI通信、ADC(模数转换器)、DAC(数模转换器)、DMA等功能,从而全方位入门STM32开发。
完成本项目,你将获得:
- 入门立创 · 天空星STM32F407VET6开发:
- 了解立创 · 天空星 STM32F407VET6开发板的功能特点;
- 熟练掌握在 Keil 环境下开发STM产品的能力;
- 学会使用 STM32进行GPIO、定时器、中断、串口通信、SPI通信配置;
- 学会使用 TIM+ADC+DMA 捕获模拟信号;
- 学会使用 TIM+DAC+DMA 输出5种模拟信号;
- 学会编写EC11旋转编码器驱动;
- 学会使用 STM32驱动 ST7796 显示屏,了解ST7796有关驱动命令;
- 学会使用 SPI+DMA 高速传输数据。
- 掌握示波器硬件电路基本原理:
- 学会示波器电源各类电压(负压、电压调理)产生电路;
- 掌握运算放大器基本原理,并学会将其应用于模拟信号输入输出电路;
- 掌握比较器基本原理,并学会将其应用于比较器测频电路。
- 获得一个初级示波器+波形发生器:
- 示波器采样率2.8MHz,采集档位1Hz-2.8MHz可调,自动计算VPP/VP/AVG;
- 支持通过FFT变换显示波形频域曲线,支持通过FFT估算波形频率,档位正确时误差在5%以内;
- 支持实时采集波形、暂停查看波形(上下左右平移、上下放缩);
- 波形发生器设计1KHz-1MHz频率发生,支持波形电压幅值调整;
- 支持不同频率下方波、反锯齿波、锯齿波、三角波、正弦波输出。
一、项目概述
1.1 项目由来
本人是嵌入式开发爱好者,利用工作之余入门有3个月左右,尚处于学习阶段。如果你像我一样也是未深入接触STM32开发的初学者,同时又因刚入门嵌入式开发手头检测设备有限,那么可以跟我一起使用立创 · 天空星一边学习STM32开发,一边开发一款适合新手使用的示波器设备。
1.2 实现功能
本项目定位为天空星拓展学习板。在实现开发板功能拓展的基础上,实现了初级数字示波器的具体功能,同时开源了各类功能实战项目源码,帮助初学者更快上手学习。
-
本项目是一个拓展版:该扩展板外设支持LCD屏幕、按钮、LED灯、编码器等交互设备,方便更多功能的开发;在PCB设计方面优化了开发板供电,同时考虑优先使用较少功能的IO接口,将更多功能的IO口引出至排母,充分体现了STM32外设接口的优势,方便学习者外接其他设备实现更多功能的开发学习。
-
本项目已开发为一个示波器+波形发生器:借助STM32的计时器、中断、SPI、ADC、DAC、DMA等功能,实现了不同频率波形探测。设计高低压2档±5.5V、±16.5V电压量程,理论采样率2.4MHz(单路)。设备还支持多个频率方波、锯齿波、反锯齿波、三角波、正弦余弦波形发生。
-
本项目还是一个学习板:为了体现拓展版的学习属性,本项目没有按照常规项目将示波器所有功能完善(进度太紧张了,本人也仍在学习完善中),反而提供了各类外设驱动源码、各模块功能的实战源码(后续整理上传)以及一个波形发生+波形检测的DEMO,方便学习者充分发挥主动性,增强学习的成就感。
另外提醒读者,复刻前须阅读本文有关【提示】内容。
二、硬件实现
本项目硬件实现其主要包含电源及供电电路、模拟信号输入/输出电路、比较器测频电路,除此之外配有LCD和按钮、LED等人机交互电路。
2.1 原理图说明
2.1.1 电源及供电电路
电源供电电路分为电源及LDO电路、负压产生电路、电压调理电路。
1. 电源及LDO电路
- 要点解读
- 使用4Pin TYPEC接口进行5V供电,SE8533进行3.3V电压调理。
- C1/C2/C4使用铝电解电容,不建议使用陶瓷电容或钽电容。
- 【提示】SW3使用了双刀双掷自锁开关(用作单刀),触电电流为110mA,测试整机工作时电压为4.9V,可能存在限流问题(未单独测试)。
2. 负压产生电路
- 要点解读
- 使用XD7660电荷泵提供-5V负压。该芯片具有宽工作电压特点(1.5V-10V),可在电压范围内将正压变为负压。
- 使用1N4148防止电压变化损坏芯片,但是该元件会产生0.7-1V的正向压降,从而使输出负电压与设计值出现偏差。
- 依据技术手册,该XD7660最大输出电流100mA,同时负载电流压降较大(下方曲线图可见负载电流在40mA时已降至-2V电压。该情况会使输出负电压与设计值出现偏差。
- 【提示】综合1N4148的压降问题以及XD7660负载电流导致压降问题,因原方案仅设计1组负压产生电路,实测负压输出值约为3.7V(压降很大),进而导致-1.65V电压调理电路和运放、比较器输入负电压出现设计偏差。虽有些测量可以通过代码修正,但仍会导致设计输入输出量程、甚至是输出波形出现偏差。读者在进行电路设计时可以考虑使用12V电压泵+分压电路或者多路7660。
3. 电压调理电路
- 要点解读
- 该电路配合运放以计算调理输入输出不同高低压,使用分压电路实现。
- 串联运放实现在不同电流下输出电压的稳定。
2.1.2 模拟信号输入电路
模拟信号输入和输出电路涉及到运算放大器的使用,需要了解运放的基本原理,并学会搭配不同电路实现不同运放电压的输出。
该电路分为两部分,前端部分是输入阻抗1M欧的信号衰减电路(电阻分压实现),中间是一个电压切换按键,后面是核心运放输入电路。
- 要点解读
- 衰减电路:根据分压原理,将±16.5V电压或±5.5V电压衰减至±0.825V。若需要更大量程可调整分压比例;若需要AC/DC电源切换可以增加一路串联电容的耦合电路。
- 电压切换电路:使用开关控制。该设计虽然成本低廉、硬件电路简单,但是需要手动切换,无法实现量程自动切换。可以考虑使用信号继电器。
- 运放电路:将±0.85V运放成0-3.3V电路。当U9.1的2引脚和1引脚连接时,结合运放的虚短/虚断概念,1处的电压为上图右上角计算方式,也就是增压倍数=(1+R10/R13);修正电压为2引脚输入电压值(设计为-1.65V),即可将-1.65V运放输出为0V,+1.65V运放输出为3.3V。
- 连接两个1N4148保护电路。
2.1.3 模拟信号输出电路
模拟信号输出电路和输入电路原理相同,信号通过STM32的DAC引脚发生,经过2组RC低通滤波器和运算放大输出为设计电压±5V。
2.1.4 比较器测频电路
示波器的频率测量可以通过软件FFT计算或者使用比较器测频电路。
- 要点解读
- 测频电路:该电路核心思想是将模拟信号波通过比较器调整为方波信号,进而测量方波信号的频率。比较器U10.1 的3号引脚输入电压可以更换为一个固定的分压电路。
- 触发实现:比较器U10.1 的3号引脚输入电压可以更换为可调电压值,这样即可实现设定电压阈值,配合比较器实现设定电压触发测量。
2.1.5 人机交互电路
人机交互电路设计3个按键、1个旋转编码器、2个指示灯以及一块可选电容触摸的LCD屏幕。
- 要点解读
- 按键:按键设计为低压按下,同时加上100nF电容实现硬件去抖。
- LCD屏幕:本项目LCD屏幕采用模块化设计方案,配套设计一个4寸带电容触摸的LCD屏幕PCB。其中,本项目未使用触摸模块(GT911触摸驱动,主要原因是手头有一个触摸坏了的LCD),这里预留触摸接口和IO引脚方便读者后续开发。配套电路板的电路图如下
2.2 Layout说明
由于项目使用天空星开发板,在实现示波器功能的同时还要引出未使用IO引脚,走线比较复杂,故使用四层板PCB设计。层序设计如下:
个人首次使用立创4层板打样服务,因此每层板展开描述用以备忘(笔记)。
2.2.1 底层
由于PCB包含贴片和插件两种元器件,为方便使用回流焊焊接,将所有贴片器件布置在PCB底层走线。
2.2.2 顶层
当底层信号线无法布设需要打孔时在顶层布线;同时顶层主要用于开发板、扩展板、按钮、排母引出走线。
2.2.3 PWR层(电源层)
因为示波器电源供电电压较多(±5V、3.3V、-1.65V、2.5V),因此在顶层下方设计一层电源层。主要用于器件和芯片供电、电压调理。
2.2.4 GND层
项目采用数字地和模拟地隔离的设计,同时传统PCB又要大面积铺铜。结合4层板的特点,可对GND层内建垫层,同时在元器件布局时考虑将数字地部分和模拟地部分分开,两个接地点用0欧电阻连接。
2.3 焊接及使用说明
主扩展板的PCB元器件较多、贴片和插件器件叫杂,同时BNC、EC11等器件高差较大,需要在焊接时注意焊接顺序。
- 首先使用回流焊将底面贴片器件进行焊接;
- 再进行除下图外范围插件焊接,遵循由低到高的顺序;
- 下图右上角区域和右侧区域按照先1后2的顺序焊接,顺序相反都会增加焊接难度甚至无法焊接。
因主扩展板尺寸较大,主扩展板和屏幕扩展板连接时还要兼顾按钮高度差,因此推荐采取以下措施:
- 主扩展板和屏幕扩展板之间连接使用超短排针(2.5+2.5+2.5)和排母(3.5高);
- 使用M3*18+6的六角尼龙柱+6角尼龙螺母固定四个螺丝孔位,方便开发时平放设备,保护元器件;
- 屏幕扩展板左侧悬空部位使用M3*6+6的六角尼龙柱+6角尼龙螺母支撑,在屏幕扩展板下侧贴个双面胶简要固定即可。
- 另外,EC11选择15mm梅花柄带按压开关,配合配套按键帽。如使用库内的旋转编码器不好适配键盘帽。
焊接完成后实物图如下:
三、软件实现(示波器DEMO)
本项目软件层面耗时占总项目较长时间。在学习STM32F4的各种功能的同时,通过不同功能搭配实现了示波器的各类功能。
3.1 功能框图
3.2 DAC波形发生功能
DEMO自带波形发生器,利用DAC+TIM+DMA实现。
- 要点解读
- 支持多种波形切换:发生方波、锯齿波、反锯齿波、三角波、正弦波;
- 支持切换发生频率:使用计时器功能发生波形,调整计时器频率实现波形频率切换;
- DMA搬运:支持高频模式下数据自动搬运,降低CPU占用。
3.3 ADC采样功能
DEMO核心功能为ADC波形采样功能,利用ADC+TIM+DMA实现。
- 要点解读
- 支持多种采样模式:支持自动触发、手动触发、单次(阈值)触发(正在开发中);
- 支持切换测量频率:使用计时器功能控制单次采样,调整计时器频率实现波形频率切换,21档位切换,档位范围为1Hz-2.8MHz;
- 理论采样率:理论采样率为2.8MHz,实测发生波形1MHz时可采集到波形并正确计算出频率值;
- 支持VP/VPP/AVG计算及输出;
- DMA搬运:支持高频模式下数据自动搬运,降低CPU占用。
下图当发生波形为1MHz时,示波器可正常采样并计算波形频率。
3.4 频率输出功能
- 要点解读
- 支持2中频率计算方式:使用计时器+触发计数测量、使用FFT测量;
- 支持FFT变换并输出频域波形曲线。
3.5 交互功能
- 要点解读
- EC11:频率调整、波形查看、FFT波形显示、功能切换选择;
- 按键:开启/暂停采集波形、开启/关闭波形发生、功能按键;
- 功能切换:发生波形切换、频率切换、其他UI。
四、写在后面
十月一直在加班,抽空结项,源代码混乱但先上传,抽空再慢慢整理,请多见谅~
硬件设计有瑕疵之处,敬请批评指正!新手自己摸索可太难了,请求大佬指导~
- 开发计划
- 拓展学习板开发源码包的整理、上传;
- 示波器DEMO功能的深化,如实现单次触发采样功能;
- 硬件层面的进一步完善(进一步与设计功能相符)。
设计图

BOM


工程成员



评论