Ardyesp開發的DLO-138是開放原始碼的DSO-138示波器韌體,功能比原廠強大,它支援:
- 兩個類比通道(訊號輸入),分別接到板子的PA0和PA4腳。
- 兩個數位邏輯通道,分別接到板子的PA13和PA14腳。
- 從序列埠輸出檢測波型資料
- 可將+(SW5)、-(SW6)和SEL(SW7)開關改接一個旋轉編碼器。
底下是DLO-138韌體的運作畫面,紫色的雜訊波形是ch2(類比通道2)的輸入訊號,因為我沒有加裝通道2的電路(請參閱DLO-138專案說明頁上電路圖,也就是新增一個和通道1相同的訊號處理電路)。
設置Arduino IDE的STM32編譯環境
DLO-138原始碼用Arduino程式開發,Arduino IDE需要先設置STM32微控器的編譯環境,目前的主流是stm32duino.com維護的Arduino_Core_STM32。
安裝Arduino_Core_STM32之後,主功能表的「工具→開發板」選單底下會出現STM32 boards groups(STM32開發板群組)選項。
但是,DLO-138原始碼無法用Arduino_Core_STM32編譯。
編譯DLO-138原始碼,需要使用Roger Clark設置的Arduino STM32。下載之後,把Arduino_STM32解壓縮到「文件\Arduino\hardware」路徑底下(你可能需要自行新增“hardware”資料夾):
或者,把Arduino_STM32解壓縮到Arduino應用程式安裝路徑的“hardware”資料夾:
接著,在Arduino IDE的「開發板管理員」中搜尋關鍵字“arduino sam”,安裝“32-bit ARM Cortex-M3”開發板的編譯環境,這是因為Arduino_STM32不含STM32的程式編譯器,要借用這個開發環境的編譯器。
示波器的2.4吋TFT LCD採用Adafruit GFX程式庫驅動,請在「程式庫管理員」中搜尋關鍵字“adafruit gfx”,安裝1.1.4版Adafruit GFX程式庫,請不要安裝新版Adafruit GFX程式庫,否則示波器的螢幕將呈現空白。
編譯DSO138示波器的STM32原始碼
下載DLO-138原始檔並解壓縮,把它的資料夾命名成DLO-138(亦即,刪除資料夾名稱後面的“-master”文字),在雙按裡面的DLO-138.ino檔,開啟Arduino IDE。
開發板選擇STM32F1 Boards裡的Generic STMF103C Series(通用STMF103C系列):
如果你之前將Arduino_STM32解壓縮到「文件\Arduino\hardware」路徑底下,這個開發板選項文字後面將出現 (in sketchbook) 字樣,代表「在草稿碼中」,像下圖這樣,不影響使用:
微控器的Variant(款式)選項,請選擇20k RAM 64k Flash款式。
Upload method(上傳方式),請選擇Serial(序列):
此示波器程式預設啟用旋轉編碼器,除非你有把SW5, SW6和SW7三個微觸開關改接成旋轉編碼器,否則,請將global.h檔第2行的#define USE_ENCODER改成註解:
選擇主功能表「草稿碼→匯出已編譯的二進位檔」,編譯後的.bin二進位檔將存入DLO-138原始碼所在資料夾。
最後,使用上一篇貼文介紹的STM32微控器燒錄軟體,將它寫入DSO-138示波器。