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