基于【STC示波器笔】的升级版
使用了STM32G030F6P6单片机,支持双通道的可调频率可调占空比PWM输出,以及ADC双通输入,且将单片机超频到了100M的主频
板子也可集成到其他模块上进行采集
展示视频【链接】,开源仓库【GitHub】
目前功能为:
AD输入电压0-3.3V
12bits @ 5Mhz
1-2-5时基步进从200ns到500us
垂直放大1-2-5-10倍
三种触发方式,0-90%的10种触发电平
波形测量功能
1-2-5时基切换PWM输出频率从10MHz到200Hz
10%步进切换PWM输出占空比从0%到100%
3个独立按键多层次菜单切换
1个可编程LED灯
预留USB串口通信,但是我搞不出来摆了
---------
BOM不可信,请自行去X信购买类似封装的元件(指接插件)
---------
代码整理中,暂未开源,目前仅提供固件下载已开源,见上文
若运行过程中出现bug,请通过立创开源/b站私信/评论区或邮箱,本人会及时修改程序并更新。
若需要更多的合作请唯一指定邮箱 Defenver@foxmail.com
------------讲解环节----------
原理其实不难,使用DMA+ADC+TIM循环采样,随后将数据搬运到内核处理即可
而根据实际操作,发现ADC的时钟貌似可以超频,只需要保证AXI总线时钟对齐即可,因此将其超频到100M的ADC时钟,并适当增加采样延时,使得ADC采样速率达到恐怖的5M(TSMC yyds)
定时器采用了TIM1的TRGO,连接到ADC作为时钟触发源,随后DMA一直搬运数据到内存中方便后续处理,此处可见安富莱相关教程了解原理
还有一个PWM输出,这玩意原理非常简单就不解释了,可以参考安富莱的教程来了解原理,总的来说G0相较其他系列,这方面调节方式较为简单
接下来是其他的外设,之前的项目使用的是0.96寸的屏幕,虽然能用但是显示的东西不多,因此此处换了个1.14寸的屏幕
原来的按钮手感太$了,因此这里换了个波轮开关,手感确实好了不少
串口坏掉了,感觉是芯片问题,等后继者修复吧(
最后是软件部分,软件部分和先前两个示波器没多大区别,基本都是把所有东西丢进while(1)里面处理
页面显示部分经典画点函数,触发点部分为了节约代码大小使用了三目运算符来判断,最后是页面切换部分使用了switch语句配合键值来进行对选项的切换等
本项目代码和思路大致如此
实物图见下
------------
!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。
器件 | 类型 | 描述 | 数据手册 |
---|---|---|---|
K1-1502SA-02 | 多功能开关 | 点击下载 | |
SMLMN2WB1CW1 | 发光二极管/LED | 点击下载 | |
GT-TC018A-H0375-L1 | 轻触开关 | 2×4侧按轻触开关180gf | 点击下载 |
67997-210HLF | 排针排母 | 针脚数:10 连接器类型:排针 排数:2 触头类型:公形引脚 间距:0.100"(2.54mm) | 点击下载 |
A2541HWV-4P | 排针排母 | 针脚数:4 连接器类型:排母 排数:1 触头类型:母形插口 间距:0.100"(2.54mm) - | 点击下载 |
CH340N | USB芯片 | 点击下载 | |
MK-12C02-G020 | 滑动开关 | 点击下载 | |
USB-TYPE-C-018 | USB连接器 | 点击下载 | |
ME6211C33M5G-N | 低压差线性稳压(LDO) | 输出类型:固定 最大输入电压:6V 输出电流:500mA 输出电压(最小值/固定值):3.3V - | 点击下载 |
17-21SURC/S530-A3/TR8 | 发光二极管 | 照明颜色:红色 主波长/色坐标:624~632nm 亮度值Iv=61mcd(Typ) @IF=20mA | 点击下载 |
STM32G030F6P6 | 单片机(MCU/MPU/SOC) | 点击下载 |
欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。
EEWorld Datasheet 技术支持