低门槛DIY示波器,CH32示波器,完全兼容STM32,ADC+DMA+TIM+USB,仅需一块最小系统板
Posted 简单|纯粹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了低门槛DIY示波器,CH32示波器,完全兼容STM32,ADC+DMA+TIM+USB,仅需一块最小系统板相关的知识,希望对你有一定的参考价值。
前言
玩电子不能没有示波器,毕业后也无法再白嫖学校示波器。俗话说:没有条件创造条件。那没有示波器,就创造一个示波器。听起来高大上,其实并不难,网上也有许多开源示波器,最具代表性的是老刘示波器。虽然电路简单,功能强大,懒得动手党来说也有很大的门槛,不想焊接,不想画PCB,更不想挑各种元器件,就想要一个简单实用、成本低廉、快速实现、方便拓展的示波器,懒得找了,还是自己造轮子吧。
提示:本项目仅使用某宝成品CH32F103C8T6开发板,硬件简单,可自行根据需要自行添加软硬件功能。
一、先看成果
说明:A1管脚为信号输入管脚,A0输出1KHz方波信号进行校正,具有以下功能和特点:
- A0口有3.3V 1KHz基础方波输出,用于校准。
- A1信号输入口信号测量范围0~3.3V。
- 32单片机最高支持1M采样率,但系统时钟为72M时最高支持857.1k采样率(跟ADC时钟分频系数有关)。符合奈奎斯特采样定律,采样精度12位。
- 上位机采用Python开发,兼容Linux、Windows系统,通过32单片机的USB虚拟串口通信。
- USB虚拟串口通信数据包缓存最大1200字节,故程序中限制单次采样点数为512个(一个采样点占两个字节)。
- 具有基础测量功能:测量频率,脉宽,占空比(自己读数)。
- 仅有自动上升沿触发功能。
- 添加贝塞尔插值功能
- 项目开源https://github.com/ClassmateXie/32Oscilloscopes
二、使用步骤
1 运行软件
1.1 Windows用户直接运行打包好的软件
CH32示波器.exe
1.2 安装Python环境运行源代码(入坑)
进入CH32示波器.py文件所在目录,右键打开终端
输入命令行
python .\\CH32示波器.py
若报错需根据提示自行安装对应的python库,例如:
pip install pyqtgraph
pip install numpy
pip install pyserial
pip install PyQt5
pip install scipy
2 选择端口
初始界面如下:
修改虚拟串口为对应的端口(设备管理器中查看,默认COM7),通信波特率默认1000000
三、源码分析
项目开发过程的大部分时间都在巩固基础知识,虽然项目整体难度不大,但是在开发过程中对32单片机的ADC、DMA、TIM、NVIC以及USB等功能有了更加深刻的理解,特此记录开发过程。
1 程序总体流程图
1.1 USB串口中断服务函数
1.2 ADC采样过程
1.3 DMA传输过程
2 下位机源代码
2.1 TIM配置函数
配置TIM4通道4产生PWM的频率,作为ADC规则组触发源