手把手教你打造專屬STM32G4示波器!

隨着科技的飛速進步,曾經龐大笨重的示波器如今已經可以輕鬆裝進口袋,隨時隨地揭示電子世界的奧祕。這不僅是技術革新的象徵,更是便攜實用性的極致演繹。


最近,我發現了一個讓人眼前一亮的小型示波器製作方案,它的心臟是STM32G4系列芯片。這個口袋大小的奇蹟是如何成爲可能的?下面就讓我們一起來看看STM32G4示波器的詳細介紹吧!


一、項目介紹


過去,我曾承擔過涉及帶有高速 ADC 的便攜式示波器(如 RPScope 中所示)的項目。然而,在這一努力中,我致力於最大限度地簡化電子設備,並僅利用 STM32 平臺固有的功能。


STM32G4系列具有多種模擬外設,包括4個ADC、2個DAC、集成OPAMP 等,這些外設有助於最大限度地減少物料清單 (BOM)。唯一使用的外部部件是兩個 OPAMP IC,主要用於保護 MCU 免受輸入通道過壓的影響。供電方面也進行了簡化;與此類項目中經常採用的傳統對稱電源配置不同,我專門採用了單端電源,進一步簡化了電路。儘管存在這種偏差,但仍然可以通過在輸入級引入偏移來支持對負電壓信號的採集。


該示波器擁有480x320 分辨率顯示屏,通過16位總線連接並映射到STM32的內存,提供快速數據傳輸並實現超過50FPS的令人印象深刻的幀速率,但我刻意限制爲20 FPS以確保CPU能夠流暢地支持其它併發任務。圖形用戶界面是通過 Nuklear 庫的端口實現的,最初用於 PC 遊戲,採用 ANSI-C 編寫,採用模塊化設計,可在微控制器內無縫執行。


硬件製造委託給嘉立創,PCB爲4層,遵循其規定的 0.1毫米線間距和寬度以及0.35毫米通孔直徑的最小設計限制。雖然對於這個設計來說並不是絕對必要的,但我很想評估結果,事實證明這是完美的。儘管是間接的,人工智能也融入到了該項目(中途)中,體現在 PCB 絲印層中融入了“Mechwarrior”機器人繪圖,賦予了獨特的視覺風格。


在軟件方面,我最初的意圖是集成 MicroPython,這一雄心促使 Nuklear 移植到 MicroPython 生態系統。但由於RAM資源有限,我選擇使用C語言進行開發,並輔以FreeRTOS操作系統框架。


二、硬件


硬件設計的特點是簡單,主要包括STM32微控制器、兩個運算放大器(OPAMP)、一個電池充電器和一個TFT顯示屏。



三、供電


電源子系統主要包括一個3.3V穩壓器和LiPo電池充電模塊。如果連接了USB,整個系統通過USB供電,同時爲鋰聚合物電池充電。當沒有USB連接時,電流通過肖特基二極管輸送至電壓調節器


模擬電壓直接來自數字領域,並通過電感器進行最小程度的過濾。如果使用一個單獨的穩壓器爲模擬電路供電效果會更好,但在這裏沒有采用。該設計的內在優勢在於無需對稱電源,從而簡化了物料清單 (BOM)。


在這個版本中,模擬和數字接地層是互連的,因此不需要單獨的接地層。後續版本將探索具有隔離接地層的設計,以評估其對降低噪聲起到的作用,特別是在測量小電壓信號時。



電池充電模塊採用簡單的 SOT23-6 IC 實現,可輕鬆爲 130mAh 鋰電池充電。LED 指示燈在充電過程中亮起,完成後熄滅。充電週期約爲一小時,可提供約兩小時的運行時間。雖然這個持續時間似乎有限,但經過深思熟慮,我們選擇了緊湊的電池佔用空間,並且當需要延長使用時間時,示波器可以輕鬆地與移動電源連接。



電池供電電壓約爲 3.7V,而電路的運行功耗則在80mA上下。值得注意的是,在此電流水平下測量的肖特基二極管的壓降約爲 400mV,對到達電壓調節器的電壓施加了輕微的限制。因此,未來的改進考慮了兩個肖特基二極管的並聯集成,從而減輕每個二極管的電流負載並隨後降低電壓降。


四、處理器


該系統的核心是STM32G474VE,這是一款以170 MHz 時鐘頻率運行的 Cortex-M4F 處理器。該微控制器採用 TQFP-100 封裝,擁有值得稱讚的 512 KB 閃存和 128 KB RAM。目前,代碼庫僅佔用 20% 的可用閃存,而操作需求則佔用 90% 的已分配 RAM。此外,硬件接口使用了一半的可用 GPIO 引腳。


該微控制器固有的廣泛集成外設一直是大幅削減物料清單 (BOM) 的關鍵推動因素。特別是,包含 4 個 ADC 非常有幫助。同樣值得注意的是集成運算放大器 (OPAMP),它超出了其傳統用途,可用作具有獨立偏移輸入的可編程增益放大器 (PGA)。這種多功能性極大地增強了系統的功能,提供了適應不同輸入條件的便捷方法。




五、TFT和TSC


TFT 顯示屏擁有令人印象深刻的480x320 像素分辨率,並由 ILI9488 控制器支撐。它通過 16 位 8080 並行總線實現與 CPU 的無縫連接,建立強大的連接以適應高速數據傳輸。


CPU 利用靈活內存控制器 (FMC) 外設,利用內存映射方法與 LCD 接口。這種便捷的數據訪問方法不僅可以加快圖像渲染速度,還有助於實現提高幀速率,超過 50 FPS。FMC 將 LCD 視爲存儲器的無縫擴展,從而顯著提高了數據傳輸效率。


TFT 顯示器的採購不僅僅是從 Mouser 等老牌供應商處購買集成組件。通常,在亞馬遜或全球速賣通等平臺上追求經濟高效的解決方案會導致價格低廉的顯示器缺乏全面的文檔,包括數據表、引腳排列和尺寸規格。buydisplay.com 是應對這一挑戰的可靠資源,它提供各種顯示器以及必要的文檔,從而簡化了集成過程。


觸摸屏控制器 (TSC) 通過 SPI 總線連接到 CPU,能夠以 1 MHz 讀取速率高效運行。在整個軟件開發階段,很明顯 TSC 測量表現出一定程度的噪聲,促使讀取頻率增加以實現有效過濾。正如原理圖設計所示,最初嘗試通過在 XP/XN/YP/YN 線路中引入電容器來減輕這種噪聲,但在評估後卻產生了不確定的結果。這方面仍然是進一步研究的焦點,因爲優化降噪的努力繼續推動不斷的探索和完善。



設計中有兩個需要改進的領域值得關注。首先,集成了 IPS(面內切換)TFT 顯示屏,該顯示屏以其卓越的視覺質量和顯着增強的視角而聞名。儘管這些顯示器可以通過 buydisplay.com 等來源輕鬆獲得,但採購過程中的不幸疏忽導致我們選擇了替代顯示技術。這一調整有望顯著提升整體用戶體驗,最終增強視覺保真度和更廣闊的觀看視角。


另一個重要方面涉及亮度考慮。由於緊湊型電池的限制,亮度和電池壽命之間的相互作用顯得尤爲突出。提高的亮度總是會對操作耐久性產生相應的影響。因此,爲了確保使用時間超過一小時,有意識地將亮度降至最低。平衡亮度與電池壽命成爲一項關鍵工作,需要進行戰略優化以達到平衡,從而在不影響顯示可視性的情況下延長操作時間。


六、模擬輸入和輸出級


輸入級由五個不同的塊組成,其中一些集成在 STM32 中。


1、電阻分壓器和低通濾波器


入口點需要一個電阻分壓器網絡,每個通道都有一個電容器。這種複合配置具有多方面的作用,包括阻抗匹配、電壓範圍調節、適應負電壓的偏移配置以及高頻濾波。這種混合物確保了後續處理的精細輸入信號。



2、外部運算放大器(OPAMP


信號路徑中的關鍵元件是外部運算放大器 (OPAMP)。通過採用 TI 的 OPA4322,信號經歷了必要的轉換,起到射極跟隨器的作用。該運算放大器的帶寬爲 20 MHz,超過了輸入級的帶寬,有助於高轉換率信號處理,而不會引入失真。


3、內部運算放大器和PGA


經過外部放大後,信號進入集成運算放大器和可編程增益放大器 (PGA) 單元。這些多功能組件能夠放大 x2 至 x64 範圍內的信號。該放大範圍帶來了動態多功能性,允許捕獲從毫伏到伏特範圍內的信號,而無需外部電路。PGA 的外部偏移輸入的結合,以及使用額外 STM32 DAC 的補充,避免了任何殘餘偏移的放大。


4、偏移DAC


爲了響應前一階段引入的偏移,STM32 上的專用數模轉換器 (DAC) 可以抵消這種影響,確保信號保真度並減輕偏移失真。


5、ADC


最終階段需要將放大並經過偏移校正的信號傳輸到各個模數轉換器 (ADC),每個模數轉換器服務於一個單獨的通道。這種細緻的分配有助於每個通道實現最大採樣率,從而保持信號完整性。



該設計的主要限制涉及所有通道的統一偏移。輸入級電阻的高容差可能會阻礙每個 PGA 的放大過程。爲了緩解這個問題,輸入級電阻經過精心選擇,精度爲 0.5%,確保均勻的放大性能。


此外,還出現了一個意想不到的挑戰,涉及指定用於 PGA 偏移的引腳,這些引腳在 ST 的引導加載程序操作期間同時充當 UART2 引腳。通過引入下拉電阻器和電容器實現整流,從而在正常工作階段保持穩定的 DAC 電壓。


過渡到輸出級,這種佈置合併了 STM32 的 DAC、運算放大器和 50 歐姆電阻。這種協同作用能夠生成各種波形,包括 PWM、正弦波、三角波甚至仲裁模式,最大頻率高達 1 MHz,但始終限制在 0 至 3.3V 電壓範圍內。


此外,模擬信號輸入部分被設想爲提供四個輸入通道以及兩個差分通道的潛力。雖然尚未得到驗證,但硬件的基礎結構可以適應這種預期的擴展。


PSRAM管腳連接圖


印刷電路板


四層PCB


PSRAM LayOut


3D外殼設計


外殼實物


ADC採集系統


此外還有軟件的介紹,由於篇幅有限,關於這個項目的詳細技術信息在此就不贅述了,感興趣的小夥伴可以點擊文末閱讀原文查看。


END

來源:電子森林

版權歸原作者所有,如有侵權,請聯繫刪除。

推薦閱讀
漫畫 | 悲催的中國式軟件開發
一道華爲C語言面試題,很多人都栽了!
一塊不可描述的硬盤壞了,又不好意思去修…

→點關注,不迷路←