聚豐項目 > 基于AB32虛擬示波器
作為常年和硬件打交道的軟件工程師,一直以來都想有一個小工具,可以做到比萬用表多一個按時間記錄波形的功能,比示波器便攜,功能沒那么重的簡易工具,這樣能夠滿足自己在調(diào)試上監(jiān)測硬件狀態(tài)變化的需求。 在軟件層面上,有找到國外開源的一套代碼(serial_port_plotter),看介紹可以實現(xiàn)自己的第一步需求。1. 在硬件調(diào)試上,能夠滿足觸摸按鍵狀態(tài)監(jiān)控 2. 比萬用表多一個波形記錄功能,但是缺少硬件平臺實現(xiàn)數(shù)據(jù)抓取,無法確認(rèn)該工具是否可用。 硬件層面上,剛好看到RTT有做開發(fā)者大會,從中看到了兩片板卡,AB32和 CH32,查看芯片規(guī)格,發(fā)現(xiàn)AB32比較適合做這類功能,因此嘗試使用AB32實現(xiàn)該功能。
oxlm_1
分享oxlm_1
團(tuán)隊成員
oxlm 嵌入式系統(tǒng)
初期驗證接口硬件:
1.
2. ADC采集部分使用PA5
3. 和上位機(jī)通信串口部分使用PA4
后續(xù)接口(DMA和USB適配后):
去掉硬件串口,改為USB直接上報,ADC采集部分先采用一路ADC,之后切換為多路同時采集
RT-Thread使用情況概述:
內(nèi)核部分:目前僅僅使用到posix接口
組件部分: 暫無,后續(xù)會用到USB device
軟件包:
初期未添加
設(shè)備驅(qū)動:
ADC(DMA方式驅(qū)動),USB Device HID 等
由于虛擬示波器主要工作量在上位機(jī),對底層的要求是盡可能做到準(zhǔn)確,快速的采集并上報,因此底層軟件不會使用太復(fù)雜的多任務(wù)調(diào)度等操作。
目前設(shè)想的最終狀態(tài),DMA方式的ADC采集成功消息觸發(fā)讀取至上報緩沖區(qū),CDC發(fā)送成功消息觸發(fā)將上報緩沖區(qū)消息上傳(其中上報穩(wěn)定性由 usb interrupt 節(jié)點來保證),消息采用加時間戳方式實現(xiàn)。由于目前前置的DMA方式讀取ADC和USB device功能原廠暫未打通,因此該實現(xiàn)思路處于設(shè)想階段。
目前實現(xiàn)方式:
采用大循環(huán)方式,降低系統(tǒng)開銷,最大限度的檢測硬件能力。
目前實現(xiàn)功能點:
1. 使用普通的ADC方式采集,驗證ADC模塊精確性
2. 采用串口上報方式上報數(shù)據(jù),確認(rèn)上位機(jī)狀態(tài)并發(fā)現(xiàn)上位機(jī)問題點并逐步解決
后續(xù)實現(xiàn)方式:
采用事件驅(qū)動方式實現(xiàn),在執(zhí)行重度采集任務(wù)的同時,預(yù)留系統(tǒng)資源做一些低性能算法。
待實現(xiàn)功能點:
1. USB CDC設(shè)備(后期上位機(jī)切換為USB HID設(shè)備,底層切換為USB HID設(shè)備)
2. DMA方式的ADC采集
3. 上位機(jī)配置底層參數(shù)接口
代碼路徑:
主倉庫:
https://gitee.com/ShaquilleLiu/VIrtualOSI
上位機(jī)倉庫:
https://gitee.com/ShaquilleLiu/serial_port_plotter
測試硬件和上位機(jī)軟件視頻
(5.29 MB)下載