第一次使用MCU: 微控制器基本架構
生活中大多數電器或設備,皆有一個主要的控制大腦於其內部電路中(或多個),使其於適當時間運作。其應用小至遙控器、冰箱、微波爐、洗衣機等各式家電,大者可至各馬力數馬達驅動器或是 IoT 等大型系統性的應用。
所謂的 MCU,為 Microcontroller unit 的縮寫,也就是本文所提之微控制器單元,既為硬體電路的大腦。
MCU 為內部含有中央處理裝置 ( CPU )、記憶體與周邊相關裝置功能之系統。簡單來說,假設 MCU 是一個人,那 CPU 為大腦負責思考運算等處理能力,而記憶體就是儲存相關資料的地方,周邊相關裝置可為輸入也可以為輸出,輸入的話就是人類的聽覺、視覺、觸感等感受、而輸出則為人類各肌肉上表現,像是手或腳的肢體動作。
使用者可以透過程式編寫的動作、將各項指令、變數等資料寫入記憶體中,再透過 CPU 依序執行這些動作,像是簡單的加減乘除可透過 compiler tool 寫入記憶體中, CPU 再透過組合語言等相關指令去執行使用者所編寫的動作。
基本 MCU 包含:
CPU : 大腦,其工作主要為執行記憶體所儲存的每一個動作。
記憶體 : 用於儲存程式碼、資料與指令的地方,可分為ROM及RAM。
周邊相關裝置: 大多具有ADC、DAC、GPIO、PWM、各式通訊所需腳位。
記憶體:
●ROM : 關閉電源後,資料依然可以儲存於此記憶體中,但讀取速度較慢,通常用於儲存 bootloader、使用者資料等,其價格多數較 RAM 便宜且容量較大。
●RAM : 有電源時,可任意寫入,但關閉電源後資料會消失,多數用於計算各變數時儲存空間,存取速度快,但相對容量較小、價格較貴。
周邊相關裝置:
●ADC / DAC : 類比數位資料轉換器 ( Analog-to-Digital Converter ) 與數位類比資料轉換器 ( Digital-to-Analog Converter ) ,簡單來說為將輸入的類比電位訊號轉成 CPU 所能判斷數位值,像是溫度感測器、音波感測器等各類感測器,皆須使用其功能。
●GPIO : General-purpose input/output,為一般 pin 腳,可透過程式自由定義為輸入功能腳或是輸出功能腳,或是其他特殊功能,透過程式編寫可輸出或輸入高電為或者低電位。
透過這些基本概念後,讀者應了解基本 MCU 的動作原理了,但各位想必心中出現了很多疑惑,到底這東西要怎應用?該如何去實現?要怎麼去實現?
筆者透過這個簡單的電路來解釋:
一個 LED 發光的基本電路為下圖:
這是傳統不透過 MCU 動作的基本電路,透過開關的按壓,電池提供電力,經過電阻,讓 LED 發亮。
如果將此電路改成透過 MCU 來運動該如何運作呢? 大家可以想一想!
沒錯!就如下圖所示,使用者編寫程式於 MCU 內部。其電池提供 MCU 基本電力(大多是 3.3V 或是 5V ),若是有開關按壓時,GPIO 腳會被觸發,此時MCU 就知道說這時我要讓 LED 亮了,就會讓另一支 GPIO 電壓拉 low 導通LED 燈,此時 LED 燈就會亮了。
使用 MCU 的設計,其優點為,使用者可編寫程式來控制運作時間,舉例來說,當按鈕觸發時,我想要5秒後再觸發 LED 亮,又或是我想讓 LED 一閃一閃的亮 5 秒熄 5 秒等特殊動作。因此 MCU 於多數產品應用上佔據了不可或缺的一塊。