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

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

通過實施多線程方案,屏幕可以在另一個線程從 USB 線捕獲新數據時構建,同時用戶將鼠標懸停在用戶界面上。
安裝應用程序:
該應用程序不是那么用戶友好的使用:
1) Arduino 板(或任何其他 ADC/USB 捕獲設備)需要實現同步 USB 數據傳輸。默認情況下,ArduinoCore 不支持此功能。在本項目提供的草圖中,我提供了 Arduino 代碼,以使用等時 USB 接口擴展 ArduinoCore(同時不會失去仍然使用Serial.print功能的可能性)。該擴展可在常規 Arduino IDE 中使用(因此無需更改 ArduinoCore 本身)。
2) WinUSB.inf驅動文件需要在測試模式下運行Windows安裝。這是因為沒有駕駛證。
3) 目前我在 Github 上留下了未編譯的 YetAnotherUSB 示波器軟件。這是為了邀請用戶進入代碼并自行調整、編譯和構建。
未來的改進:
YetAnotherUSB 示波器軟件是在 VS 2019 上使用最新的 .NET 框架開發的,并在 64 位上進行了測試。換句話說,該應用程序相對未經測試且開發不足,無法在多個平臺(32 位或 linux)上運行。
此外,多線程還沒有變得超級健壯。(在極端情況下可能會出現無限循環,例如在讀取時拔下 USB 等)
仍然缺少一些功能,即。FFT 分析、觸發和記憶能力。
我希望這對您有所啟發,并且您可以使用/借用代碼進行自己的(進一步)開發。
繼續制作!
- 使用Arduino MKR1000通過WiFi進行HID攻擊
- 如何使用Arduino MKR GSM 1400的蜂窩定位
- Arduino MKR WAN 1300 LoRa現場網關客戶端
- 通過Telstra窄帶網絡的Arduino MKR NB 1500
- 如何將Arduino MKR和Portenta安裝到機柜中
- Arduino MKR1000的大負載
- 基于Arduino MKR ZERO的天氣數據記錄器 0次下載
- 使用Arduino MKR1000構建溫度傳感設備
- 在Raspberry Pi上使用Arduino MKR ENV Shield
- Arduino MKR1000通用Remonster
- 使用Arduino Mkr Wifi 1010和Thincloud構建連接燈的過程
- 帶有Arduino MKR1010和MKR RGB Shield的Otto Biped
- 使用MKR IoT載體的Arduino燈控制器
- Arduino MKR GSM 1400和DTMF開源
- 使用Grove Sensor的Arduino MKR1010和阿里云IoT
- 模擬示波器和數字示波器的區別 2956次閱讀
- 混合示波器與數字示波器的區別 1008次閱讀
- 數字示波器和模擬示波器的區別 2172次閱讀
- DeepSpeed里面和Zero相關技術教程 3787次閱讀
- 如何利用樹莓派zero實現AirPlay揚聲器的設計 4435次閱讀
- 淺談泰克示波器鮮為人知的10個特異功能 4390次閱讀
- dfrobot樹莓派ZERO外殼簡介 1621次閱讀
- dfrobotZero/Zero W microUSB Hub分線器簡介 1967次閱讀
- 香橙派Orange Pi Zero Plus2技術分析 4153次閱讀
- 示波器應該如何使用示波器的使用方法詳細介紹 7.2w次閱讀
- 簡評FPGA——Arduino MKR Vidor 4000 6977次閱讀
- 示波器帶寬是什么_示波器帶寬如何選擇 3.3w次閱讀
- arduino是什么以及arduino能干什么 4.5w次閱讀
- 示波器怎樣使用_示波器選用_示波器怎么測量 5896次閱讀
- 模擬示波器與數字示波器的區別 7798次閱讀
下載排行
本周
- 1涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 2錦銳科技CA51F2 SDK開發包
- 24.06 MB | 29次下載 | 1 積分
- 3錦銳CA51F005 SDK開發包
- 19.47 MB | 3次下載 | 1 積分
- 4蘋果iphone 11電路原理圖
- 4.98 MB | 3次下載 | 2 積分
- 5基礎模擬電子電路
- 3.80 MB | 3次下載 | 1 積分
- 6RA-Eco-RA6M4-100PIN-V1.0開發板資料
- 34.89 MB | 1次下載 | 免費
- 7STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊
- 3.32 MB | 1次下載 | 免費
- 8聯想A820t手機維修圖紙包括主板原理圖 尾板原理圖 點位圖
- 0.62 MB | 次下載 | 5 積分
本月
- 1AI智能眼鏡產業鏈分析
- 4.43 MB | 383次下載 | 免費
- 2蘇泊爾電磁爐線路的電路原理圖資料合集
- 2.02 MB | 296次下載 | 5 積分
- 3貼片三極管上的印字與真實名稱的對照表詳細說明
- 0.50 MB | 94次下載 | 1 積分
- 4長虹液晶電視R-HS310B-5HF01的電源板電路原理圖
- 0.46 MB | 91次下載 | 5 積分
- 5涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 6錦銳科技CA51F2 SDK開發包
- 24.06 MB | 29次下載 | 1 積分
- 7AO4803A雙P通道增強型場效應晶體管的數據手冊
- 0.11 MB | 28次下載 | 2 積分
- 8長虹液晶彩電LS29機芯的技術資料說明
- 3.42 MB | 16次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191388次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論