單晶片多半包含多樣的周邊,例如ADC、DAC、Timer、UART、I2C、SPI等。也因此廣泛應用在需要軟硬整合的場合,例如工控或是需要快速反應的現場。
如果要了解單晶片的開發方式,最好找一個有軟硬體整合的專案實際做一遍,因此製作一部簡易示波器是一項很適合軟硬整合初學者學習的專題。本文應用單晶片與簡單的周邊組合,最終成為一款實驗與實用兼具的低頻波形觀察工具。
接下來以標題條列方式簡介內容,詳細內容再以連載方式呈現。
- 單晶片介紹
- 架構
- 軟體
- STM32CubeMX
- System workbench for STM32
- OLED顯示器
- 軟體架構
- 硬體線路
- KiCAD
- 測試與結語
單晶片介紹
STM32F103是一款以ARM M3為核心的多用途單晶片。本專案以STM32F103內建的ADC搭配外部儀表放大器,建構一款精簡的示波器。STM32F103內建有兩組ADC並且具備一個特殊功能可將兩組ADC自動交錯轉換,讓轉換率提高兩倍!
架構
由前置儀表放大器將輸入的信號預先處理,再交由單晶片負責信號轉換,最終將處理結果顯示在OLED顯示器上。
軟體
STM(STMicroelectronics)為了讓使用者可以快速規劃單晶片內的多樣化周邊,特別設計直覺式快速規劃軟體STM32CubeMX,這個快速規劃軟體可以產生STM32開源開發工具System Workbench for STM32的專案。
由官方提供的開發程式庫讓使用者可以透過呼叫API的方式調用單晶片上的各種周邊,編譯完成的程式碼會透過官方設計的ST-LINK傳輸介面將程式燒錄在單晶片上,並且提供單步除錯、設中斷點等除錯功能。
這個專題以C語言為設計語言,需要的程式碼不多。
STM32CubeMX
在微控制器的設計過程中,對於為控制器眾多的周邊設定往往需要繁瑣的設定過程,STM為了讓使用者方便設定旗下微控器產品推出了一款軟體:STM32CubeMX。該軟體可以藉由下拉選單指定微控器型號,並且快速設定該微控器的周邊。設定完周邊的功能之後,就可以執行匯出功能,透過目的編譯器項目的設定來產生對應的程式碼,這樣一來在程式撰寫的時候就可以專心在功能面的設計。
以示波器這個專題為例,這裡面需要用到的ADC就需要設定為雙通道自動交替取樣,過程中只需要將ADC這個周邊開啟,周邊分頁中就會自動將ADC的功能條列出來,經過幾個步驟的設定之後,程式會在匯出專案的時候自動產生,後續只要在適當位置填入自己的程式碼就可以。在內定的一些巨集指令位置內擺放的程式碼,在專案需要更動的時候,程式會自動避開這些位置不去更動,只會改變巨集指令限定以外的區域,對開發者來說十分方便。
System workbench for STM32
在眾多的開發工具中,有的需要付費有的是免費。這一款System workbench for STM32就是一款免費軟體。他是建基於eclipse整合開發環境下的stm32整合開發環境。上述的周邊快速規劃軟體STM32CubeMX也可以匯出這個工具的專案檔。
OLED顯示器
使用OLED技術製成的顯示器,僅1,9吋的螢幕對角寬度,具有192x64的解析度,是近年單晶片專題常見的顯示器解決方案。顯示資料透過I2C介面傳送,螢幕顯示亮度均勻,可提供作為數據顯示或人機介面使用。
軟體架構
這裡會將ADC設定為雙組自動交替並帶DMA,在每次轉換完成時會設定公共變數讓主程式迴圈接手後續螢幕顯示的動作。另外示波器的基本功能的部分,會有一個簡單的人機介面,以按鍵輸入作為驅動,分別調整「垂直振幅」、「水平掃描時間」以及「同步波形用的觸發準位」三個功能。最後搭配一個OLED顯示器的驅動程式將結果呈現在顯示器上。
這個專題雖然使用的為控制器有USB介面,但是為了讓ADC以最高速運轉,內部設定無法兼顧USB的時脈,造成USB功能無法共存。
硬體線路
硬體方面除了為控制器本身,還有搭配OLED顯示器以及按鍵。類比輸入方面使用儀表放大器,搭配電阻衰減網路,讓輸入電壓可以達到正負三十V。電源部分使用3V線性穩壓完成,可以搭配三顆1.5V電池做為電力來源。
KiCAD
本專題使用KiCAD作為電路板的設計軟體,將上述硬體製作成筆狀的電路板,最終發包製作。
測試與結語
這個示波筆是以軟硬整合的前提去發想的,在功能面沒有太頂尖的規格,但是用來測試音頻範圍的信號綽綽有餘。但以這個專題精簡的程度,如以這個架構為基礎,後續如果找到更高速ADC周邊的微控制器就可以馬上升級。甚至更多的功能也可以繼續開發,因此成為商品也說不定。