資料介紹
描述
大多數(shù)基于 Arduino Zero/MKR 的示波器是:
- 使用計(jì)算機(jī)的聲卡
Arduino Zero/MKR 具有一個(gè) 350kSps 12 位 ADC。考慮到它,這是很棒的規(guī)格。然而,釋放這種能力是另一回事。托管在 Arduino Zero/MKR 中的 SAMD21G18 提供 USB2.0 全速。
因此,訪問 350kSps ADC 需要示波器解決方案來捕獲這些樣本,通過 USB2.0 線路傳輸它們并以 60Hz 的速率將它們投射到屏幕上,即在 16ms 的時(shí)間范圍內(nèi)。此外,為了允許準(zhǔn)確定時(shí)采樣,ADC 讀數(shù)需要伴隨時(shí)間測(cè)量。
該項(xiàng)目繼續(xù)尋求破解這一挑戰(zhàn)!
下圖列出了該應(yīng)用程序的主要功能:

數(shù)字挑戰(zhàn):
每幀 60hz 或 16ms vs ADC:350kSps
=> 每 16 毫秒 5600 個(gè)樣本,
1 個(gè)樣本 = 開銷字節(jié)(至少完整性)+ 12/16/8 位樣本 + 12/16/8 位時(shí)間戳 = 3 到 6 個(gè)字節(jié)
=> 5600 x 3 到 6 字節(jié)每 16 毫秒 = 16 800 到 33 600 字節(jié)每 16 毫秒
USB2.0 全速提供:
- 在 USB 批量傳輸中:每毫秒 64 字節(jié) ~ 每 16 毫秒 1024 字節(jié) --> 很少?。?/font>
- 在 USB 同步傳輸中:1023bytes per ms ~ 16 368bytes per 16ms --> OK
以上(錯(cuò)誤地)假設(shè) USB 傳輸可以與 ADC 捕獲并行發(fā)生。
=> 跨行實(shí)現(xiàn)多線程是可能的,因?yàn)橛斜匾M可能接近我們的目標(biāo)。
openGL 要求:
- 將 ADC 讀數(shù)和時(shí)間戳數(shù)據(jù)轉(zhuǎn)換為 {-1;1} 數(shù)據(jù)。我們想在另一個(gè)線程中的 CPU(判斷為最快)上執(zhí)行此操作。
- 屏幕的建設(shè)。由 OpenGL 在 GPU 上完成
上述示例(假設(shè)讀數(shù)準(zhǔn)確)顯示:
我們以 270kSps 采樣(當(dāng)我們采樣時(shí),請(qǐng)記住 Arduino 板上的 USB 傳輸也需要處理器時(shí)間)。
通過 USB 線收集和發(fā)送 1023 字節(jié)數(shù)據(jù)的時(shí)間大約需要 6.7 毫秒:這里的 1023 字節(jié)數(shù)據(jù)等于:1023 x 8 / (12 + 12 + 7) = 264 個(gè)樣本重復(fù) 4 次以獲得 1024 個(gè)樣本(理論上它會(huì)只需 4 毫秒)。
這些數(shù)據(jù)在 15ms+.35ms+1.6ms ~2.1ms 內(nèi)進(jìn)行轉(zhuǎn)換、構(gòu)建和繪制。
openGL 的總幀速率為 9.2 毫秒(讓程序盡可能快地運(yùn)行)。因此,我們可以嘗試將樣本讀數(shù)增加到 2048,而不會(huì)犧牲太多的屏幕刷新率。
正如我們上面所寫的,我們需要實(shí)現(xiàn)多個(gè)線程以盡可能地允許并行處理。
該應(yīng)用程序具有 3 個(gè)線程:
1) C#圖形用戶界面
(從其他線程中分離出來,讓相對(duì)較慢的 UI 至少盡可能地干擾主任務(wù),即捕獲 USB 并在屏幕上投影)
2) C++ DLL OpenGL。用于包裝 OpenGL 窗口的本機(jī) C DLL。好處是代碼易于移植到其他平臺(tái)/ UI。OpenGL 是開源的,并且是目前最快的之一。
3) C++ DLL USB。用于包裝 winUSB 驅(qū)動(dòng)程序的本機(jī) C DLL。選擇的原因是 winUSB.sys USB 驅(qū)動(dòng)程序安裝在每臺(tái) Windows 計(jì)算機(jī)上,它支持同步數(shù)據(jù)傳輸。同步數(shù)據(jù)傳輸用于流數(shù)據(jù)。它為速度留下了數(shù)據(jù)完整性檢查。通過這種方式,您可以每毫秒傳輸 1023 字節(jié)。

通過實(shí)施多線程方案,屏幕可以在另一個(gè)線程從 USB 線捕獲新數(shù)據(jù)時(shí)構(gòu)建,同時(shí)用戶將鼠標(biāo)懸停在用戶界面上。
安裝應(yīng)用程序:
該應(yīng)用程序不是那么用戶友好的使用:
1) Arduino 板(或任何其他 ADC/USB 捕獲設(shè)備)需要實(shí)現(xiàn)同步 USB 數(shù)據(jù)傳輸。默認(rèn)情況下,ArduinoCore 不支持此功能。在本項(xiàng)目提供的草圖中,我提供了 Arduino 代碼,以使用等時(shí) USB 接口擴(kuò)展 ArduinoCore(同時(shí)不會(huì)失去仍然使用Serial.print功能的可能性)。該擴(kuò)展可在常規(guī) Arduino IDE 中使用(因此無需更改 ArduinoCore 本身)。
2) WinUSB.inf驅(qū)動(dòng)文件需要在測(cè)試模式下運(yùn)行Windows安裝。這是因?yàn)闆]有駕駛證。
3) 目前我在 Github 上留下了未編譯的 YetAnotherUSB 示波器軟件。這是為了邀請(qǐng)用戶進(jìn)入代碼并自行調(diào)整、編譯和構(gòu)建。
未來的改進(jìn):
YetAnotherUSB 示波器軟件是在 VS 2019 上使用最新的 .NET 框架開發(fā)的,并在 64 位上進(jìn)行了測(cè)試。換句話說,該應(yīng)用程序相對(duì)未經(jīng)測(cè)試且開發(fā)不足,無法在多個(gè)平臺(tái)(32 位或 linux)上運(yùn)行。
此外,多線程還沒有變得超級(jí)健壯。(在極端情況下可能會(huì)出現(xiàn)無限循環(huán),例如在讀取時(shí)拔下 USB 等)
仍然缺少一些功能,即。FFT 分析、觸發(fā)和記憶能力。
我希望這對(duì)您有所啟發(fā),并且您可以使用/借用代碼進(jìn)行自己的(進(jìn)一步)開發(fā)。
繼續(xù)制作!
- 使用Arduino MKR1000通過WiFi進(jìn)行HID攻擊
- 如何使用Arduino MKR GSM 1400的蜂窩定位
- Arduino MKR WAN 1300 LoRa現(xiàn)場(chǎng)網(wǎng)關(guān)客戶端
- 通過Telstra窄帶網(wǎng)絡(luò)的Arduino MKR NB 1500
- 如何將Arduino MKR和Portenta安裝到機(jī)柜中
- Arduino MKR1000的大負(fù)載
- 基于Arduino MKR ZERO的天氣數(shù)據(jù)記錄器 0次下載
- 使用Arduino MKR1000構(gòu)建溫度傳感設(shè)備
- 在Raspberry Pi上使用Arduino MKR ENV Shield
- Arduino MKR1000通用Remonster
- 使用Arduino Mkr Wifi 1010和Thincloud構(gòu)建連接燈的過程
- 帶有Arduino MKR1010和MKR RGB Shield的Otto Biped
- 使用MKR IoT載體的Arduino燈控制器
- Arduino MKR GSM 1400和DTMF開源
- 使用Grove Sensor的Arduino MKR1010和阿里云IoT
- 模擬示波器和數(shù)字示波器的區(qū)別 2956次閱讀
- 混合示波器與數(shù)字示波器的區(qū)別 1008次閱讀
- 數(shù)字示波器和模擬示波器的區(qū)別 2172次閱讀
- DeepSpeed里面和Zero相關(guān)技術(shù)教程 3787次閱讀
- 如何利用樹莓派zero實(shí)現(xiàn)AirPlay揚(yáng)聲器的設(shè)計(jì) 4435次閱讀
- 淺談泰克示波器鮮為人知的10個(gè)特異功能 4390次閱讀
- dfrobot樹莓派ZERO外殼簡(jiǎn)介 1621次閱讀
- dfrobotZero/Zero W microUSB Hub分線器簡(jiǎn)介 1967次閱讀
- 香橙派Orange Pi Zero Plus2技術(shù)分析 4153次閱讀
- 示波器應(yīng)該如何使用示波器的使用方法詳細(xì)介紹 7.2w次閱讀
- 簡(jiǎn)評(píng)FPGA——Arduino MKR Vidor 4000 6977次閱讀
- 示波器帶寬是什么_示波器帶寬如何選擇 3.3w次閱讀
- arduino是什么以及arduino能干什么 4.5w次閱讀
- 示波器怎樣使用_示波器選用_示波器怎么測(cè)量 5896次閱讀
- 模擬示波器與數(shù)字示波器的區(qū)別 7798次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論