news 2026/8/18 14:41:13

Mini-DSO 采样原理深度解析:STC8 单片机 ADC 如何实现 250kHz 高速采样

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mini-DSO 采样原理深度解析:STC8 单片机 ADC 如何实现 250kHz 高速采样

Mini-DSO 采样原理深度解析:STC8 单片机 ADC 如何实现 250kHz 高速采样

【免费下载链接】Mini-DSO用STC单片机制作的简易示波器 / DIY Mini Digital Storage Oscilloscopes(DSO) with STC MCU项目地址: https://gitcode.com/gh_mirrors/mi/Mini-DSO

Mini-DSO 采样原理听起来很复杂,但当你真正读懂 STC8 单片机内置 ADC 的工作方式,会发现这块巴掌大的 DIY 示波器里藏着非常巧妙的工程智慧。本文从 ADC 时钟配置、逐点查询采样、触发预缓存到 Bandgap 电压校准,一步步拆解 Mini-DSO 如何用一颗 STC8A8K64S4A12(27MHz 主频)实现最高 250kHz 的等效采样率,把模拟信号变成 OLED 屏幕上稳定的波形。

Mini-DSO 是什么:一块 STC8 单片机做出来的示波器

Mini-DSO 是"用 STC 单片机制作的简易数字存储示波器",核心只有一颗 STC8A8K64S4A12 单片机、一块 SSD1306 OLED 屏、一个 EC11 编码器旋钮和简单的外围电路。它没有专用的 ADC 芯片,采样任务全部由 STC8 单片机内置的 12 位逐次逼近型 ADC 完成,这就是 Mini-DSO 采样原理最值得研究的地方。

硬件成本极低,功能却不含糊:支持 12 档横轴时间区间(500ms 到 100us)、最高 30V 电压量程、自动/普通/单次三种触发方式,还能测量波形频率。主控代码主要集中在 adc_stc8.c 和 chart.c 中,整体电路可以参考 Mini_DSO_Scheme_V0.3.pdf。

250kHz 采样率的由来:ADC 时钟是怎么配置的

要理解 Mini-DSO 采样原理,先要明白一个概念:STC8 内置 ADC 的转换速度由 ADC 时钟决定,而 ADC 时钟来自系统时钟分频。在 adc_stc8.h 中可以看到一串宏定义,比如:

ADC_SPEED_512 512 个时钟 → 最慢 ADC_SPEED_32 32 个时钟 → 最快

27MHz 主频下,ADC 时钟配置为ADC_SPEED_32时,完成一次 12 位转换只需要约 4us,换算过来就是1 / 4us ≈ 250kHz 的采样率。这正是 Mini-DSO 高速采样的秘密:不是硬件有多豪华,而是把分频比压到了极限。

ADCInit()函数会根据当前时间档位动态设置ADCCFG寄存器,档位越"快",ADC 分频越小,转换速度越快。

ADC 采样核心流程:查询方式实现逐点采样

Mini-DSO 采样原理的第二个关键是查询式转换ADCRead()函数执行以下步骤:

  1. 清零结果寄存器
  2. 通过ADC_CONTR选择输入通道(如 P1.6 对应ADC_CHS_06
  3. 置位ADC_START启动转换
  4. 循环等待ADC_FLAG标志位置位
  5. 读取结果:res = (ADC_RES << 8) | ADC_RESL

12 位结果被拆成高 8 位和低 8 位两个寄存器,合并后得到一个 0~4095 的原始 ADC 值。整个过程没有使用中断,代码路径极短,这正是能跑出 4us 采样间隔的前提——任何多余的操作都会拖慢采样节奏。

采样间隔怎么控制:从 500ms 到 100us 的 12 档位

Mini-DSO 采样原理中最巧妙的部分,是用延时函数精确控制采样间隔。屏幕横向共 4 格、每格 25 个采样点,共 100 个采样点组成一帧波形。switch_Dealy()根据当前时间档位插入不同的微秒级延时:

  • 500ms 档:插入约 19.97ms 延时(每格 500ms)
  • 100us 档:不插入延时,直接以 4us/点的极限速度连续采样

时间档位和 ADC 速度是联动的,ADCInit(scale_h)switch_Dealy(scale_h)由同一个档位参数驱动。源码注释里标注了每个档位对应的转换耗时,比如ADC_SPEED_32在 27MHz 下就是 4us,开发者甚至用_nop_()空指令做单周期微调,精细到极致。

触发采样原理:预缓存与环形缓冲

对于观察一次性信号(如按键毛刺),Mini-DSO 采用预缓存 + 触发检测的策略。采样开始后,先把PRE_BUF_NUM个点存入预缓存数组,构成环形缓冲;随后持续采样并检测当前点与上一点是否跨过触发电压(上升沿或下降沿)。

一旦触发成功,就继续采集触发点之后的点,最后把"触发前的预缓存 + 触发后的采样"拼接成完整波形,让触发点恰好落在屏幕中心。这就是为什么 adc_stc8.c 里的GetWaveADC()那么长——它同时要处理自动、普通、单次三种触发模式。

注意:100us 档(250kHz 采样率)下触发计算来不及执行,所以代码里该档位仅支持自动触发模式,这正是单片机算力边界的真实体现。

校准的秘密:Bandgap 内部参考电压

采样精度靠什么保证?答案是 STC8 单片机内置的Bandgap 带隙基准电压GetBGV()从 ROM 固定地址0xfdf7读取出厂校准的参考电压值(单位 mV),同时通过 ADC 第 16 通道(ADC_CHS_BG)实测 Bandgap 对应的 ADC 值,最终按公式计算真实电压:

Vx = BGV × ADCx × LSB ÷ ADCbg ÷ 100

这样即使芯片个体存在差异,也能通过内部基准自动校正。这也是为什么 settings.h 里强调 LSB 分压系数上限不能超过 777——12 位 ADC 满量程 4095 与 BGV 值相乘会逼近 32 位整数的上限。

采样数据如何变成屏幕上的波形

拿到 100 个原始 ADC 值后,chart.c 负责把数据"翻译"成画面:根据自动/手动量程换算成毫伏电压,计算波形的最大最小值与频率,再按矢量或点阵模式绘制到 SSD1306 OLED 上。频率测量则通过查找触发点两侧的等值点间隔来完成。

上图是 Mini-DSO 与专业示波器的同信号对比,1kHz 方波的频率和幅值读数基本一致,验证了这套采样方案的实用性。

总结:Mini-DSO 采样原理给你的启发

回顾整个 Mini-DSO 采样原理,你会发现它没有高深的技术,却处处是工程取舍:用查询代替中断换速度、用延时控制采样间隔、用预缓存实现触发、用 Bandgap 做自校准。对单片机初学者来说,把 adc_stc8.c 和 chart.c 从头读一遍,比看十篇理论文章收获都大——250kHz 采样率,就是这么"抠"出来的。

【免费下载链接】Mini-DSO用STC单片机制作的简易示波器 / DIY Mini Digital Storage Oscilloscopes(DSO) with STC MCU项目地址: https://gitcode.com/gh_mirrors/mi/Mini-DSO

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/18 14:40:43

多图一次看懂:North Micro Vision Instruct 多图像理解完整指南

多图一次看懂&#xff1a;North Micro Vision Instruct 多图像理解完整指南 【免费下载链接】North-Micro-Vision-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/CohereLabs/North-Micro-Vision-Instruct North Micro Vision Instruct 是 CohereLabs 开源的 2…

作者头像 李华
网站建设 2026/8/18 14:39:28

计算机毕业设计之基于Python的霍兰德职业倾向测试可视化系统

霍兰德职业倾向测试可视化系统采用B/S架构&#xff0c;数据库是MySQL。网站的搭建与开发采用了先进的Python进行编写&#xff0c;使用了Django框架。该系统从三个对象&#xff1a;由管理员和用户、企业来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;…

作者头像 李华
网站建设 2026/8/18 14:39:18

计算机毕业设计之个性化推荐电商平台的设计与实现

随着网络科技的不断发展以及人们经济水平的逐步提高&#xff0c;网络技术如今已成为人们生活中不可缺少的一部分&#xff0c;而信息管理系统是通过计算机技术&#xff0c;针对用户需求开发与设计&#xff0c;该技术尤其在各行业领域发挥了巨大的作用&#xff0c;有效地促进了个…

作者头像 李华
网站建设 2026/8/18 14:37:37

计算机毕业设计之基于Python的二手交易信息数据分析系统的设计与实现

本系统是一款基于Python的二手交易信息数据分析平台&#xff0c;融合了Django框架、爬虫技术等现代信息技术&#xff0c;旨在为用户提供便捷、高效的二手商品交易服务。系统分为用户端和管理员端&#xff0c;用户端功能模块包括系统首页、二手商品信息浏览、公告信息查看以及个…

作者头像 李华
网站建设 2026/8/18 14:37:21

五秒把B站缓存视频转成MP4:m4s-converter 免费开源工具实测手记

五秒把B站缓存视频转成MP4&#xff1a;m4s-converter 免费开源工具实测手记 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 最近我发现自己收藏夹…

作者头像 李华