news 2026/10/1 17:21:41

开源EMBO:基于STM32的示波器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
开源EMBO:基于STM32的示波器

很多人刚听见「STM32示波器」,第一反应就是板子焊个TFT屏,波形直接在设备端画完。EMBO根本不走这条路。
采样全在STM32片内做完,触发面板、波形渲染、FFT运算全扔给电脑处理。一块两三块钱的Blue Pill最小系统板,刷上对应固件插USB,电脑端开Qt上位机,直接就能当示波器用。参数和台式专业仪器根本不是一个量级,作者自己在社区也明说:无输入保护、无硬件量程切换,标称采样率范围0.8~4MSps。它能活到现在,核心就两个理由:足够便宜,普通人照着文档走半小时就能跑通上手。

EMBO项目地址:github.com/parezj/EMBO,协议MIT,全栈作者是捷克理工大学测量系的Jakub Pařez,整个项目是他的硕士课题,开发期间还有ST官方的工程师提供过支持。仓库直接放了预编译好的HEX固件、全平台Win/Mac/Linux上位机和完整数据手册。

信号到底怎么走


图1:探头进 ADC,采样缓冲几乎占满 RAM(示意)

探头接完直连单片机脚,根本没绕什么复杂的外部电路,整条链路简单到离谱:

模拟输入脚 / 数字输入脚 → STM32片内自带ADC或GPIO → DMA直接往整块RAM里怼采样缓冲,几乎把RAM空间吃满 → FreeRTOS任务打包成帧 → USB CDC 或者 UART 走标准SCPI文本协议输出 → 电脑端Qt应用:直接分出示波器、逻辑分析仪、电压表多套界面

目前官方给过稳定固件支持的芯片就这几颗:STM32F103C8(Blue Pill)、F103RE、F303RE、L412KB。像L0、G0、G4、F4这些系列,仓库里只有预留的工程文件,作者明确标了实验性分支,第一次上手复刻别直接从这些版本开刀。

这套固件里直接叠了六件仪器的能力:示波器、逻辑分析仪、电压表是三个核心主工具,频率计、PWM输出、信号发生器是三个并行可用的副工具,不用来回烧固件就能直接切换。信号发生器完全靠片内12位DAC驱动,只有自带DAC的芯片才能跑,最典型的就是F303RE,能输出正弦、三角、锯齿、方波、白噪声,临时当个低压恒压源用也没问题。Blue Pill用的F103C8没有片内DAC,上位机里信号发生器那栏直接灰了——不是你软件装坏了,是芯片本身就没这块外设。

通信链路没自己瞎写私有二进制协议,固件里直接嵌了标准SCPI解析器,电脑发纯文本命令,开发板回采样数据和运行状态。好处是你拿普通串口助手敲几行命令,就能确认固件是不是还正常运行;坏处是高采样率下走UART尤其是ST-LINK转串口的通道,延迟很容易飙到几百毫秒。上位机状态栏里的Latency一涨,先去查通信通道有没有堵,别上来就乱改触发电平。两种路径USB CDC和UART都能通,但吞吐和延迟差一截,追求稳定采样直接插板载USB CDC。

三个新手最容易想当然踩的坑


图2:一套固件里叠了示波器、逻辑分析仪和电压表等(示意)

1. 它不是成品,没有任何输入保护

作者当年在EEVblog论坛写得特别直白:这套开发板直出方案,没有任何输入保护电路、没有硬件输入衰减、没有量程切换。引脚上的输入电压必须卡在MCU能承受的范围里,过压、反接、靠近市电的高压信号,完全不在这个项目的设计目标里。想当日常调试工具用,前端分压、运放缓冲、过压保护得你自己加上去。第一次接线别直接把未知设备的信号脚往ADC上怼,先拿板上PWM输出接ADC回环测通,稳了再接外部电路。烧一个Blue Pill倒是不贵,炸坏你要测的目标板就得不偿失了。

2. 采样率别跨芯片瞎吹

作者公开的标称采样率是0.8~4MSps,实际数值完全取决于你用的芯片和开了多少并行通道。F303系列有多路独立ADC,峰值采样率表现自然比F103好不少;Blue Pill上的F103C8本身RAM容量就紧张,采样深度天生受限。F303RE的配置里DAQ缓冲最多能做到四万点量级。上位机的水平轴你可以手动调Fs和存储深度,也可以按当前显示宽度自动折中——界面波形随便缩放,所以它没按传统台式示波器「每格多少秒」的习惯来做交互。界面上标出来的Real Fs是实际测出的真实采样率,算频率全靠这个精度,别只盯着你自己手填的标称Fs瞎调参数。

3. 选FreeRTOS不是赶时髦,是被逼出来的

作者自己说选RTOS,核心需求就是看每个任务的栈余量HighWaterMark。主采样缓冲要尽可能铺满整块RAM,静态分配,整机运行时RAM占用直接顶到99%,不知道栈的剩余余量,高采样运行时分分钟直接爆栈死机。把采样、通信、控制拆成独立任务之后,还能接SEGGER SystemView看系统调度状态。FFT、平均滤波、8位传输加速、光标测量这些吃算力的活全扔给电脑端的FFTW3库做,开发板这边专心采样和传数据。新手改固件千万别上来就把EM_DAQ_MAX_MEM往大了拉,编译大概率能过,运行时栈和堆的边界却脆得一碰就碎,官方缓冲本来就已经贴着MCU的RAM上限了。

现象优先排查方向
软件连不上开发板端口选对没、烧的HEX是不是对应你手上的芯片、走的USB还是UART通道
波形全是噪声或者直接贴满上下边输入信号有没有超量程、共地有没有接稳、信号源阻抗是不是太大
高采样率下丢点、频率计读数乱跳DMA过载;示波器拉满采样的时候其他并行仪器会抢资源
上位机找不到信号发生器入口当前用的MCU有没有片内DAC,F103C8根本没有这个外设
自己编译链接失败、符号重复报错新版本GCC/CubeIDE要额外加-fcommon;Release配置的头文件路径大概率不全
延迟长期卡在几百毫秒换USB CDC通道试、少开几个并行仪器、别在UART通道上硬拉满最高采样率

电脑上位机实际用起来是什么样

主界面先选对串口号再点连接,连上之后窗口顶部会直接读出当前MCU型号和固件版本,你刷错了不匹配的HEX,这里第一时间就会露馅。

左侧面板放示波器、逻辑分析仪、电压表三个核心工具页,底部是频率计、PWM输出、信号发生器三个副工具。示波器操作逻辑和台式示波器几乎对齐:Run/Stop/Single三个基础控制,触发模式分Auto带超时、Normal、Single,边沿、通道、触发电平和预触发都能调。Auto模式最常用:逻辑上和Normal一致,但触发超时后也会强制出一屏波形,偶发弱信号不会让屏幕一直黑着。Utils菜单里能开平均滤波、降成8位传输提速、打开FFT;波形数据可导出CSV、TXT或截图。

逻辑分析仪共用大部分控件,触发去掉了电平触发只保留双边沿,数字信号不需要垂直增益,面板里直接把这个选项拿掉了。电压表固定采样率100Sps,靠NPLC平均压制50Hz工频干扰,测直流读数稳,但刷新慢;平均次数拉得越高,噪声越低,刷新也越慢。

PWM输出支持单通道或者同步双通道,临时驱小电机或者模拟正交编码够用。作者在文档里写明了:示波器或者逻辑分析仪拉满最高采样率时,频率计和PWM很容易被抢DMA资源,六个工具不可能同时拉满还全部稳定。频率计分慢速和快速两档:1MHz以下走慢速,更高切快速,两秒内没读到有效边沿就超时。

上手顺序:先烧通跑起来,再想着改源码


图3:先烧官方 HEX,用 PWM 回环到 ADC 看上位机有没有波形(示意)

别上来就开CubeIDE自己从头编译,按这个步骤走:

  1. 直接去Release页面下现成包。固件HEX按芯片挑,上位机选对应系统。官方压缩包里连数据手册一起放了,引脚和参数对照表直接查。
  2. 对着引脚图接线。README里有F103C8和F303RE的Pinout,模拟通道、数字通道、PWM/DAC出口别接混。这种无隔离前端,地线必须和信号源共接,浮地探头采出来全是噪声。
  3. 烧完固件上电,电脑选对端口连接。主窗口能读到MCU型号和固件信息,再开示波器。连型号都读不到,别着急调触发电平,先回去查连接。
  4. 先做自测。拿板上的PWM或者信号发生器绕回ADC,确认触发、时基、通道开关正常。这一步通了,再接外部待测电路。
  5. 单独测试电压表。慢慢拉大平均次数,看读数稳不稳,顺便感受没有前端衰减时的原生量程,别上来就怼高压。
  6. 全跑通了再开CubeIDE改固件。新版本工具链记得给GCC加-fcommon,优先用Debug配置核对头文件路径。自己编出来的HEX体积和官方差太多,先对比链接脚本和优化选项,别上来就动采样缓冲。Cube包版本尽量贴近作者工程,跨大版本强行编译,坑多半在底层外设配置。

最后说死几个明确边界

  • 它绝对不是带高压探头、带多档硬件衰减的消费级成品示波器,无保护裸前端,输入电压和源阻抗必须你自己把关,别作死直接碰市电。
  • 采样率和采样深度受限于MCU的ADC性能和RAM容量,0.8~4MSps是作者实测的公开口径,别信营销号吹出来的虚高峰值。
  • 信号发生器完全依赖片内DAC,不是支持列表里的芯片都自带DAC,买板子之前先查手册。
  • 自己从源码编译时,坑多半出在工具链配置上,不是业务代码逻辑。官方预编译HEX能跑通,再动手动工程。
  • 项目协议MIT,背景是捷克理工大学测量系的学生课题;主页 embo.jakubparez.com,仓库 github.com/parezj/EMBO。

参考

  • https://github.com/parezj/EMBO
  • https://embo.jakubparez.com
  • https://www.eevblog.com/forum/projects/embo-embedded-oscilloscope-(stm32-bluepill-nucleo)-for-win-mac-linux/
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 17:21:35

NSL-KDD入侵检测实战指南:从数据清洗到模型评估的完整流程

简介:基于NSL-KDD数据集的网络入侵检测Python源码与运行说明打包为一体,是一个经导师指导并获评审98分的高分设计项目,主要面向计算机专业毕设、课程设计及期末大作业场景。压缩包共27个文件、约29.98MB,其中含10个CSV数据集文件、…

作者头像 李华
网站建设 2026/10/1 17:17:27

极客日报#2033

极客日报#2033 本期收录 代码审查不能被 AI 完全替代开源节点式 AI 绘图工具Univer 本期整理编辑:Jiayi。 本期推荐 1. 代码审查不能被 AI 完全替代 推荐人:Harry链接:https://www.adaptivecapacitylabs.com/2026/08/24/there-is-more-to-cod…

作者头像 李华
网站建设 2026/10/1 17:16:51

16G显卡也能畅跑Qwen-Image 2.1?量化与ComfyUI实战指南

16G 显卡能不能跑 Qwen-Image 2.1?这个问题最近被问得特别多,尤其是手里攥着 RTX 4060 Ti 16G、4070 系笔记本显卡,或者刚淘了张 16G 二手卡的朋友。先说结论:能跑,而且能跑得比较舒服,但前提是你得改变一下…

作者头像 李华
网站建设 2026/10/1 17:16:04

车载以太网中的TCP与UDP:诊断、服务通信与网络管理怎么选

车载以太网正在从高端车型向主流平台渗透。随着域集中式架构和中央计算架构的推进,车内通信不再只是CAN总线的天下,以太网承载的业务越来越多——DoIP诊断、SOME/IP服务通信、UdpNM网络管理,全部跑在传输层协议之上。而传输层的两个核心协议T…

作者头像 李华
网站建设 2026/10/1 17:14:16

Vivado 2026.1 和 Vitis 2026.1 软件安装

vavao 2026.2 安装 一、安装包下载 windows 安装包下载地址:https://www.amd.com/zh-cn/support/downloads/adaptive-socs-and-fpgas/development-tools/2026-1.html点击红色圈,下载windows安装包,安装包需要登录才能下载,所以&am…

作者头像 李华
网站建设 2026/10/1 17:13:36

BUUCTF SQL注入实战:Havefun1与EasySQL深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华