聚丰项目 > 基于AB32虚拟示波器

基于AB32虚拟示波器

作为常年和硬件打交道的软件工程师,一直以来都想有一个小工具,可以做到比万用表多一个按时间记录波形的功能,比示波器便携,功能没那么重的简易工具,这样能够满足自己在调试上监测硬件状态变化的需求。 在软件层面上,有找到国外开源的一套代码(serial_port_plotter),看介绍可以实现自己的第一步需求。1. 在硬件调试上,能够满足触摸按键状态监控 2. 比万用表多一个波形记录功能,但是缺少硬件平台实现数据抓取,无法确认该工具是否可用。 硬件层面上,刚好看到RTT有做开发者大会,从中看到了两片板卡,AB32和 CH32,查看芯片规格,发现AB32比较适合做这类功能,因此尝试使用AB32实现该功能。

oxlm_1 oxlm_1

分享
0 喜欢这个项目
团队介绍

oxlm_1 oxlm_1

团队成员

oxlm 嵌入式系统

分享
项目简介
作为常年和硬件打交道的软件工程师,一直以来都想有一个小工具,可以做到比万用表多一个按时间记录波形的功能,比示波器便携,功能没那么重的简易工具,这样能够满足自己在调试上监测硬件状态变化的需求。 在软件层面上,有找到国外开源的一套代码(serial_port_plotter),看介绍可以实现自己的第一步需求。1. 在硬件调试上,能够满足触摸按键状态监控 2. 比万用表多一个波形记录功能,但是缺少硬件平台实现数据抓取,无法确认该工具是否可用。 硬件层面上,刚好看到RTT有做开发者大会,从中看到了两片板卡,AB32和 CH32,查看芯片规格,发现AB32比较适合做这类功能,因此尝试使用AB32实现该功能。
硬件说明

初期验证接口硬件:

1. 图片1.png

2. ADC采集部分使用PA5

3. 和上位机通信串口部分使用PA4

 

  后续接口(DMA和USB适配后):

  去掉硬件串口,改为USB直接上报,ADC采集部分先采用一路ADC,之后切换为多路同时采集

 

RT-Thread使用情况概述:

内核部分目前仅仅使用到posix接口

组件部分: 暂无,后续会用到USB device

软件包:

初期未添加 

设备驱动:

ADC(DMA方式驱动),USB Device HID 


软件说明

由于虚拟示波器主要工作量在上位机,对底层的要求是尽可能做到准确,快速的采集并上报,因此底层软件不会使用太复杂的多任务调度等操作。

目前设想的最终状态,DMA方式的ADC采集成功消息触发读取至上报缓冲区,CDC发送成功消息触发将上报缓冲区消息上传(其中上报稳定性由 usb interrupt 节点来保证),消息采用加时间戳方式实现。由于目前前置的DMA方式读取ADC和USB device功能原厂暂未打通,因此该实现思路处于设想阶段。

目前实现方式:

    采用大循环方式,降低系统开销,最大限度的检测硬件能力。

目前实现功能点:

1. 使用普通的ADC方式采集,验证ADC模块精确性

2. 采用串口上报方式上报数据,确认上位机状态并发现上位机问题点并逐步解决

  后续实现方式:

采用事件驱动方式实现,在执行重度采集任务的同时,预留系统资源做一些低性能算法。

   待实现功能点:

1. USB CDC设备(后期上位机切换为USB HID设备,底层切换为USB HID设备)

2. DMA方式的ADC采集

3. 上位机配置底层参数接口


代码路径:

    

主仓库:

https://gitee.com/ShaquilleLiu/VIrtualOSI

上位机仓库:

https://gitee.com/ShaquilleLiu/serial_port_plotter


演示效果

测试硬件和上位机软件视频

附件

(5.29 MB)下载

评论区(0 )