仓库地址

https://github.com/shuai132/ScopeMCU



ScopeMCU

Oscilloscope for MCU

MCU: STM32F103C8Tx

需配合ScopeGUI使用

截图说明见wiki

最新版Releases

Introduction

用最少的硬件成本,做一个实用的虚拟示波器。

这是硬件部分,基于STM32最小系统,不使用任何片外外设。
可以方便地移植到其他硬件(只需要ADC、定时器、串口/USB即可)。
采样率和采样深度等参数取决于芯片性能。

Features

  • Timer触发ADC+DMA 精确采样
  • ADC数值已校准(使用内部基准电压)
  • 采样率无级可调 最高采样率1Msps
  • 采样深度可调 当前6144(1024*6)点
  • 内置自测信号(1kHz方波)
  • 多种触发方式(自动、正常、单次)
  • FFT频谱分析(上位机实现)
  • USB CDC 高速数据传输

注:

  • 未设计前端运放电路,只用于采集0~3.3V信号。
  • 为了采样精度和校准,当前最高采样率: 70ksps

IO Map

必需

管脚 作用
PA0 ADC通道
PA11 USB DM USB接口
PA12 USB DP USB接口

可选

管脚 作用
PC13 LED指示灯 采样过程为低电平
PA8 1kHz方波信号 用于自测
PA9 USART1 TX 调试串口
PA10 USART1 RX 调试串口

移植

设计上把可移植性作为重要目标,可以很方便地移植到其他单片机、Arduino、DSP等硬件。

只需硬件提供指定功能实现函数即可,具体见ScopeCore中public方法的注释或移植步骤。

注:

  • 需要C++11支持,推荐使用arm-none-eabi编译器和cmake构建,已在Windows、macOS、Ubuntu下测试通过。
  • 为了方便软件设计和数据解析,直接打包结构体作为消息单元。注意要和上位机保持一致的字节序(arm、x86、arduino均为小端模式)。

移植步骤

  • 初始化scope
    // 在全局初始化static const size_t MaxSn = 1024 * 6;   // 取决于RAM大小static uint8_t Buffer[Message::CalcBytes(MaxSn)];static ScopeMCU scopeMcu(MaxSn, Buffer);...scopeMcu.setVolLimits(0, 3300);scopeMcu.setFsLimits(1, 10000);scopeMcu.setMcuImpl({.sendData = [](uint8_t* data, size_t size) {// 用串口发送数据},.startADC = []{// 开始采样},.stopADC = []{// 停止采样},.setSampleFs = [](uint32_t fs) {// 设置采样率 返回实际的采样率},.onSampling = [](bool sampling) {// 可用来控制指示灯状态},});
  • 当收到串口数据
    scopeMcu.onRead(data, size);
  • 当一次ADC转换完成
    scopeMcu.onADC(vol);

注:

  • startADC之前不要触发onADC

DevelopTools

  • STM32CubeMX
  • arm-none-eabi-gcc
  • CLion(CMake)
  • OpenOCD
  • ST-LINK

Install Requirements(for macOS)

  • config OpenOCD and ST-LINK
brew install openocd
brew install stlink
brew cask install gcc-arm-embedded

Usage

  • blog

Links

  • arm-none-eabi-gcc

基于STM32的虚拟示波器相关推荐

  1. STM32使用虚拟示波器

    STM32使用虚拟示波器 在调试过程中.,经常会有需要看到数据实时变化的情况,这时候便需要用到虚拟示波器.如:制作平衡车时,需要了解拟合角度跟随加速度计和陀螺仪的动态变化情况:做电机PWM调速时需要了 ...

  2. 基于STM32的简易示波器的UCOS II嵌入式实时操作系统实现

    基于STM32的简易示波器的UCOS II嵌入式实时操作系统实现 在基于STM32的示波器的实现的基础上,在STM32上移植UCOS II嵌入式实时操作系统. 在UCOS II操作系统中将各个功能分发 ...

  3. 基于STM32的简易示波器项目(含代码)——HAL库

            前言:本文基于STM32的简易示波器项目,示波器作为嵌入式开发中必不可少的器件,其使用方式和工作原理是必须被掌握的.巧妙利用STM32可以实现媲美度非常高的示波器,本文中的简易示波器主 ...

  4. 【毕业设计】基于stm32的迷你示波器 - 单片机 嵌入式 物联网

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 4.1 硬件部分 4.2 软件部分 5 部分核心代码 5 最后 0 前言

  5. 山外多功能调试助手用作MM32虚拟示波器

    硬件:MM32L373 开发工具:IAR7.8 调试工具:山外多功能调试助手 Introduction 在调试MM32芯片的过程中,有时需要观察数据的实时变化,山外多功能调试助手中的虚拟示波器可以实现 ...

  6. 创意发明:基于stm32的微型掌上示波器 设计说明书电路及源代码

    其实本人进入芯片的世界的时间并不长,从接触51单片机到现在还不到一年,所以可以算是小白啦,因为制作时间很短,元器件不是很够用,所以只能做出这个只有初级功能的示波器了,只是菜鸟级程序,不建议大家做学习之 ...

  7. 基于STM32F103C8T6的USB虚拟示波器

    1.概述 很久很久以前,在立创买了块虚拟示波器的空板,没事的时候把它做出来了,然后就扔在那里了,回顾一下,顺便折腾下看能不能弄好. 这是官方给的效果图,我实际收到的板子是绿色的,其他跟图上基本一致,B ...

  8. 基于stm32示波器 一共有几套示波器实现方案,每套方案都含有原理图

    基于stm32示波器 一共有几套示波器实现方案,每套方案都含有原理图(部分是pdf),PCB以及源码,部分含boon清单. ID:6910669254897704TB_31840123

  9. 基于STM32的半导体制冷片控制系统设计

    一些医疗检测仪器在检测时需要模拟人体温度环境以确保检测的精确性,本文以STM32为主控制器,电机驱动芯片DRV8834 为驱动器,驱动半导体致冷器(帕尔贴)给散热片加热或者制冷.但由于常规的温度控制存 ...

最新文章

  1. 面试中有哪些经典的数据库问题?
  2. 如何将html转为report,如何使用XtraReport将报表导出为HTML
  3. 频繁gc是什么意思_[JVM]一次线上频繁GC的问题解决
  4. 用shell求两个文件的差集
  5. 基线_Origin入门教程(九):扣除基线常用小妙招
  6. 利用JS实现QQ空间自动点赞
  7. WPS Mac旧版该怎么彻底卸载干净
  8. FPGA数字IC的Verilog刷题解析基础版02——T触发器(异步复位和同步复位)
  9. BZOJ 2959 长跑 (LCT+并查集)
  10. 水木周平:就业难?招人更难!
  11. Web Scraper入门
  12. 《SysML精粹》学习记录--第九章
  13. 手机号不用后,这操作必须要做,不然银行卡里的钱就别人花了
  14. 比炒币还香的在线作图工具draw.io
  15. 1297: 小数化分数
  16. VS2015下解决:error LNK2019: 无法解析的外部符号 __iob_func
  17. Plants vs. Zombies【二分】
  18. 通讯安全相关博文链接
  19. 实操 VM Player和Instant Contiki安装
  20. 详细解释下小波去噪的原理

热门文章

  1. 铝电解电容器的寿命计算方法the actual service life equivalent calculation method
  2. 启动报错this is very likely to create a memory leak
  3. 诺顿杀毒软件下载试用
  4. 网站ICP备案快速通过,需要做好以下准备工作
  5. 利用深度学习进行时间序列预测
  6. Java多线程排序--睡眠排序
  7. 美国七大外卖O2O网站平台介绍
  8. 计算机毕业设计Java房屋中介网络平台(源码+系统+mysql数据库+lW文档)
  9. shaderTextView 闪动文字,static{}(静态代码块)与{}(非静态代码块)的异同点
  10. 公式文字识别神器---mathpix