聚豐項目 > 基于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)下載