MCU速成心法

Feb 7, 2023 4 分鐘 1582 字 #速成心法

想用微制器(MCU)設計自己的產品勢必不能用市面上現成的開發板(最起碼要配合外型)。千頭萬緒如何開始?先記住一句口訣:

「腳晶斷掉 軟硬協調」

flowchart TD
a((軟體))
b(腳位)===a
c(晶振)===a
d(中斷)===a
e(掉電)===a
a===f(硬IP)
a===g(協定)
a===h(調試)

腳->腳位

學習MCU最基本的就是要會看腳位,從選型號開始一直到後的成品測試都跟腳位有關。就算什麼都不懂最起碼也要知道腳位數目符不符合系統設計需求。

軟體在這邊就要學習如何做腳位的設定與功能選擇。

更進階一點就是耗電、抗干擾……有關,這方面是屬於比較通用的知識與經驗,要靠自己實作來慢慢練或是靠天份。


晶->晶振

數位電路都會有一個總裁判在喊123木頭人,其他所有元件都聽從指示在每個固定的期限內完成自己的工作。

軟體在這邊是要學怎麼設定這個系統的總裁判。一開始不會設也沒關係,現在的MCU大概都是把電接上就會用預設模式來跑。


斷->中斷

中斷就是不在屬於預先規畫好的程式流程,像是火災警報器總不會有人寫一個程式開機後固定10分鐘發警報叫大家疏散吧?一定是被什麼條件觸動(像發現濃煙)才發警報。

標準的C沒有定義中斷怎麼寫,軟體在這邊就要學開發工具中實作中斷的語法。


掉->掉電

Power Down的直翻,就是讓CPU或整個MCU進入省電模式,這個部份就算用的CPU核心是同一顆,在不同的MCU上多多少少也有出入。

軟體也要針對MCU來實作這個介面程式。


軟->軟體

不管是用科班的C或組合(匯編)語言來寫,還是Maker界的python或arduino程式庫,軟體得先把前面四個介面程式好MCU才會動,但這時除了測電路板有沒有短路外沒有其他功能。

搞定前面四個 腳晶斷掉 和後面二個 硬協,的界面程式後,軟體就要回來做自己的正事了,像是:

  • View 使用者介面
  • Control Flow 流程控制
  • Model 資料處理
  • Algorithm 演算法

硬->硬IP

前面提到把 腳晶斷掉 做好之後,整個程式大概只有測電路板有沒有短路的功能。要能做成一個完整的系統就要再來看一下各硬體模組的使用說明書。

軟體就是是要來看一下像萬年曆的年月日時分杪怎麼設定、計時器怎麼設定、液晶模組怎麼畫一個點……,然後寫出驅動程式。


協->協定

把硬體搞完可能還不夠做出一個完整的系統,就像日本的超級機器人動畫,單獨一隻都不堪一擊,一定要合體才能使用必殺技。這樣不但可以拖時間,每一集都在「組成腿和腳,組成身體和手臂,完成頭部和面部」,大家還特別喜歡看,順便帶動了玩具的銷售。

MCU通常也要跟其他的零組件合體才能組成一個特定功能的系統,像是要外接一張SD卡、透過USB控制電腦的滑鼠游標……

那零件跟零件之問一定要有個共通語言才能完美合作,這時就要來看一下協定(protocol)了。

軟體就是學完相關協定之後寫出驅動程式。


調->調試

調試是大陸的術語,很奇怪,除了出差我沒離開台灣工作過,但一直不清楚台灣用什麼術語,一直就用debug這個字。

調試就是要學會使用一些工具把程式灌到板子上面跑,看結果是否跟預期的設計相符,然後進入修改測試的無限輪迴地獄。

除了灌程式的工具外,可能還需要能凍結MCU工作狀態的工具(ICE)來讓我們慢慢檢查軟硬體,還有其他工具能量測前面提到的腳晶斷掉軟硬協(電錶、邏輯筆、示波器、波型產生器、邏輯分析儀、協定分析儀、協定產生器、終端機……)

除了ICE跟燒錄工具外,大部份的工具是通用的,不跟某一顆MCU綁定在。


照例我們在最後復習一下口訣: 「腳晶斷掉 軟硬協調」

有了這句口訣當綱要,未來的學習或計畫應該都會有明確的方向。

最重要的是要了解自己的價值是在哪一塊,自己做比較不划算的部份可以用現成程式庫或外包,但要把這八字口訣掌握住,不要被別人唬住了。

`