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