總網頁瀏覽量

2019年1月21日 星期一

【你所不知道的Arduino】Arduino到底是什麼? MCU又是什麼?

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章

歡迎透過合法的方式分享此文內容,若要轉載/轉貼,請明確貼出此原始連結並標示作者基本資訊請勿抄襲及非法轉貼(例如擷取內文但並未註明出處)


基於看過很多學校同學、老師甚至是從業工程師對於Arduino及MCU都有著不少誤解,所以分享此篇文章

Q:  Arduino到底是什麼?

  •  Arduino是現今在學生或maker界之間很流行的一種搭載微控制器(單晶片微電腦)的電路板(專業一點來說其實是一種開發板,也就是開發階段所用的平台,所以許多腳位都拉出來,也因為這樣就有相對應的PCB面積)的系列的名稱(包含其軟體,函數庫與工具),因其應用軟體介面之完整度與其搭配的硬體之整合度極高,可讓開發者在不必深入了解底層硬體驅動步驟原理的情況下,而直接透過比較直觀的方式操控微電腦,所以相當盛行。即便是非電機電子資工背景的人,在大多數的狀況下,只要受過基礎教學訓練,亦可利用Arduino做出一些簡單的微電腦應用
  • Arduino是很方便的工具,但背後的原理仍然很重要,需要注意,很多人會忽略這點,以為東西會動就代表自己會MCU韌體開發了,但其實可能完全不瞭解較深入的背後原理,其實若多理解背後原理,再來使用Arduino,那麼在使用上將會如虎添翼
  • 此外,Arduino的軟硬體都是開源(Open Source),其實很值得鑽研應用層底下的這些library和硬體電路設計,可以學到很多東西,只可惜很多人都只拿它來做簡單的應用,沒有看到更深入、更有價值的學習及探討層面,也因為Arduino有著簡單易用的外表,所以很多學校老師都誤以為Arduino只能讓學生做雛形,其實不然,事實上Arduino上面的ATMEGA328 MCU從很早期(至少十幾年前)就已經被使用在許多產品的開發上,只是當時這款MCU還沒有Arduino這層外衣
  • 板子上面是以 MCU(微控制器)為主要核心元件,下面會針對MCU做說明
  • 承上,因為微控制器(MCU)本來主要就是要被用在硬體控制領域(例如控進馬達、驅動電路等等),所以它的規格(位元數、時脈等)本來就不用太強,但也常因此而被許多不了解的人所誤會(以為MCU很慢所以就很LOW很簡單,其實這完全是錯誤的認知)


Q:  MCU到底是什麼?
  • 微控制器(Microcontroller Unit, MCU),等同一顆小電腦(麻雀雖小五臟俱全),內含CPU、記憶體以及基本周邊單元(當然也有很多不僅有基本周邊的較高級MCU)
  • 早期大多負責做少量資料運算處理的應用(如對外部硬體電路驅動)。但近十幾年來也有可用在網路/多媒體應用、相對較接近大型SoC規模的微控制器出現(這類MCU的CPU大多有MMU,可跑Linux之類的較大型OS)。
  • MCU在早期又常被稱為 單晶片微電腦 (Single-Chip Microcomputer),因為已經具備被稱為電腦的條件。
  • 許多人會將微控制器混淆微處理機/微處理器嚴格來說,這說法是的,為什麼呢? 因為傳統的general微處理機(或微處理器)主要指的其實是針對CPU單元封裝而成的chip(如8086或Z80),並沒有包含各式週邊單元與記憶體單元,可以參考Wikipedia的內容microprocessor is a computer processor that incorporates the functions of a central processing unit on a single integrated circuit (IC)

    微控制器(Microcontroller)則是除了CPU (Central Processing Unit)之外,還有包含周邊、記憶體單元等,都整合在一顆chip上,所以才叫做單晶片微電腦,早期因為大多被用在硬體控制領域 (而不是處理例如網路多媒體這種進行大量資料運算處理的領域。讀者可自行對照樹莓派那類的硬體狀況去思考一下),所以也稱為微控制器

    此外也要注意一下: MCU與SoC這類的平台有時也被稱之為「嵌入式微處理器」,英文是Embedded Microprocessor,例如Atmel/Microchip公司的SAM9G20或者ST公司的STM32MP1(ST的MPU系列是屬於這裡所說的Embedded Microprocessor),但這些並不是傳統的「微處理器」或「微處理機」。因為時代的演進促進平台的多元化,容易使人混淆,導致這些名詞之間不論是在許多書籍或網路資料中都常被混淆解釋,當然這些名詞的定義也有過少數爭議)。
  • 很多款Arduino板子上面的MCU款式名稱為ATMEGA328(如Uno、Fio、Nano、Mini...等等),當然後來Arduino系列也有出上面搭載別款MCU的板子(如Arduino DUE是搭載Atmel SAM3X8E的MCU)

我們以ATMEGA328 MCU內部架構圖為例(如下圖),我們可以看到這顆MCU內部有CPU記憶體單元周邊單元,而連間這之間的排線即為匯流排單元(灰色粗箭頭的部分)





延伸文章: MPU/MCU/Embedded Microprocessor/Embedded Processor名詞定義探討與整理


【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章

沒有留言:

張貼留言