微控制器高階功能詳解
前言:在MCU中,有些功能與設計並非是必須的,即便沒有這些功能特色MCU也依然可以正常工作,但有了這些特點並加以運用後,MCU可以獲得更良善的運作表現。
事實上「主運作之外的功能價值」才是近年來MCU的重點強調,理由是MCU技術門檻較低,半導體業者不易在效能、資源等核心層面擁有大幅領先的優勢,加上中性、基礎性的週邊功效也都逐漸齊備,使得MCU必須從更廣多的層面來強化其價值。
所謂的廣多層面有哪些?一是在半導體技術上持續偏執,將更困難整合的類比、混訊控制電路內建到MCU內,如ADC、DAC、Comparator、Amplifier、Filter等。二是更貼近產業及應用需求而設計,如因應Smart Card等高安全性需求而內建硬體隨機亂數產生器,或針對馬達控制更佳專精,以更方便於自動化家電的設計。三是在產銷營運上更高度配合,在MCU的交量、交期、交價上提供更多承諾。
至於四,就是本文所要詳加談論的:擴增MCU晶片在主運作外的加值功效,以下我們就來逐一解說。
▲今日MCU除了在外部振盪器有多種選擇外,也多具有內部高精度振盪器的設計,圖為SiLabs C8051F12x的振盪器功能方塊圖,外部有4種振盪方式可選擇,內部亦可進行更多的規劃調整。(圖片來源:SiLabs.com)
■看門狗計時器(WDT)
看門狗計時器(Watchdog Timer)大概是最早被選入MCU中的加值附屬,原因是有些應用是不允許臨時停擺的(如生產線上的輸送帶),MCU必須盡可能地保持正常運作,即便故障停擺也必須在極短時間內自行恢復正常,或者MCU所處的控制環境相當惡劣或多變,MCU容易因外在因素(如雜訊干擾、例外事件等)而頻繁停擺,這時都可以使用WDT來補強。
▲Atmel的8-bitAVR架構(另有32-bit的AVR32架構,將MCU與DSP結合,類似DSC)MCU:ATtiny13,其內部具有強化型的看門狗計時器,運作上使用與MCU不同的內部振盪器(不受MCU振盪器影響),超時溢位時間可在16mS~8S間刻度性選擇,且溢位可選擇重置MCU或中斷MCU,或兩者都行使。(圖片來源:Atmel)
附註:各MCU內建的WDT設計大同小異,但有的MCU允許在控制運作時仍可彈性選擇啟動、關閉WDT,有些則否,一旦在MCU植入控制系統前決定開或關,就無法在運作中再次變動。
■電壓低落重置(BOR)
電壓低落重置(Brown-Out detection/Reset)在簡體中文的技術資料中寫成「欠壓復位」,復位、重置所指的意思都是「重新開機」。
如果說WDT是避免MCU因程式落入預期外的無窮迴圈(對岸稱為:死循環)而導致誤動作、停擺,那麼BOR則是為了避免、降低供應給MCU的運作電壓過度不穩時所造成的控制影響,一旦MCU的運作電壓低至某個程度,BOR電路就會自動將MCU進行重置。
附註:有些MCU的BOR允許控制設計者自行決定低壓標準,此稱為可程式化的BOR(Programmable BOR;PBOR),有些則否,而由MCU業者自主訂定,MCU出廠後便無法調整。
附註:有的業者稱BOR為VBO(Voltage Brown-Out)或BOD(Brown Out Detector),然意思相同。
■送電後重置(POR)
BOR是電壓過低時對MCU發出重置,相反的POR(Power-On Reset)是在電壓高於設定的位準時才對MCU發出重置,一般而言,控制系統剛送電啟動時,供電電壓會逐步提升,這時POR就會發生作用。
老實說,POR比BOR更早出現,且幾乎是MCU就會用到POR,過去多是在MCU外部再行設計POR電路(如使用555振盪器IC),如今則是直接內建,內建可節省控制應用的料件數、電路板面積等產製成本。
▲最簡單的Power-On Reset電路即是用RC充放電電路(圖左)所構成,但為了讓重置程序更加穩定,可以在電阻位置並聯一個二極體(圖右)。(圖片來源:Maxim-ic.com)
■送電後計時器(PWRT)
WDT、BOR、POR都會對MCU產生重置,進一步的還要確保重置的「品質」,而品質要求主要有二,一是重置的邏輯準位必須能保持一段時間,不能太快消失或在短瞬間內反覆出現,另一是MCU的運作時脈穩定度,因為運作時脈與運作電壓兩者只要有一者表現失常,就會對MCU的控制運作造成影響。
為了確保重置信號的準位維持夠久,所以MCU內可以增設一個PWRT,PWRT會偵測重置信號的電壓,只要持續在允許的電壓位準內,PWRT就會持續地計時,且計時過程中電壓沒有偏離過,最後計時就會溢滿(超時),反之若過程中有偏離,則PWRT會重新計時,若未計時到溢滿,MCU都無法脫離重置階段,也就無法正式初始及運作。
附註:部份業者的MCU將此功能稱為裝置重置計時器(Device Reset Timer;DRT)。
■振盪器初始計時器(OST)
PWRT計滿後理應進入初始及正式工作,但是PWRT只能確保運作電壓已達一定的可工作水準,但不能確保運作時脈也達相同水準,為此也必須捨棄送電後的最初暫態、不穩的時脈信號,待時脈信號穩定後,才讓MCU進入正式工作。
因此,多數MCU業者也為時脈穩定提供確保性設計,同樣是運用計時器延遲的概念,捨棄振盪器初始時的不穩時脈不用,讓MCU一起頭就使用穩當的時脈,作法上是讓最初的時脈信號只用來遞增計時器,待計滿一定的時間後才將時脈導引到MCU的全部電路上,而這個緩衝計時器就稱為振盪器初始計時器(Oscillator Start-up Timer;OST)。
附註:有些業者也將OST稱為OSG(Oscillator Safeguard),如ST。
■內部振盪器(IntOSC)
過去任何MCU在封裝上都至少要保留2個腳位好用來連接外部振盪電路,一般而言是用一個石英振盪器(Crystal Oscillator)及2個電容所構成,部份也用陶瓷振盪器或來自其他晶片的輸出時脈。
之後又有業者提出更低廉的方案,即是用RC振盪電路,外部只需要一個電阻、一個電容即可構成,然缺點是容易受外界環境(如:溫度)的影響而使振盪時基偏移,因此不適合用在需要精密時間控制的場合。
不過,近年來又有了更理想的作法,直接將振盪器內建至MCU內,如內建RC振盪器、石英振盪器等,如此就可略省外部振盪器及振盪電路等成本,且業者也較能保證內部振盪器的時序精度,如正負2.5%、正負2%、正負1%等。因此除了精省成本外,內部型振盪器(Internal Oscillator;IntOSC)也有助於MCU穩定運作。
內部型振盪器的好處不單在於精省與精準,有時也能用於其他層面,例如MCU平時可用外部的高頻振盪器來運作,但在進入省電模式(或講究省電型的控制應用)改切換成使用內部振盪器運作,或作為MCU休眠狀態時的持續運作時脈,持續供應時脈給省電模態下的工作計時器,甚或部份的週邊電路,以便計時器計滿後能喚醒MCU。
▲Microchip的PIC16CXX系列MCU使用該公司獨有的ICSP線上程式燒錄技術,只需5條接線即可進行燒錄,5線的作用分別是:+5V工作電壓、0V接地、Vpp燒錄電壓、CLK燒錄時脈輸入、Data I/O燒錄資料輸入。(圖片來源:Microchip.com)
附註:內建型振盪器受限於整合技術,目前的時脈頻率普遍低於外部型振盪器。
■線上燒錄(ICP)
今日MCU業者只要有提供可重複燒寫程式的Flash型MCU,就幾乎會連帶提供線上燒錄(In-Circuit Programming;ICP)機制,或稱為ISP(In-System Programming)機制,有此機制後,便可在控制應用系統出貨後仍可在應用現場為MCU換新控制程式,甚至是運用遠端操控技術,直接將新程式透過網路傳遞至現場進行更新燒錄。
雖然各MCU業者多會提供ICP/ISP,但各家的作法不盡相同,包括燒錄時所使用的腳位、電壓、時序等都各有其異,有的業者甚至認為自家的現場燒錄技術較他家更為先進優異,因此還為自有技術另訂稱呼,如Microchip的ICSP(In-Circuit Serial Programming)技術。
各家技術雖異,但卻有默契性的強化追求方向,這包括:1.燒錄程序的操作腳位數應盡可能地減少,使現場燒錄操作更加方便,錯誤意外也可以減少,或至少要提供彈性的燒錄腳位組態,如同時提供程式資料並列燒錄或串列燒錄,串列所用的腳位數較少,但燒錄效率也較慢。2.燒錄所用的電壓應盡可能與一般運作時的電壓相同,否則還需額外準備另一準位的電壓,徒增麻煩性。3.燒錄程序應盡可能快速完成,增加作業效率。
若更詳細說明,ICP/ISP其實是就近式的燒錄更新,另有一種是透過網路傳輸的遠端式燒錄更新,此稱為IAP(In-Application Programming),作法上是先在MCU另設一塊獨立的程式記憶體,該記憶體內放置著MCU的開機初始程式(一般稱為:Boot Loader)、網路傳輸程式、燒錄操作程式。
之後,MCU不再從原有的程式記憶體進行開機初始,而是改從上述的獨立程式區來初始,初始完成後也由此區的網路傳輸程式來操控MCU的網路介面(一般為MCU內建的串列傳輸介面,如UART、I2C等),開始自MCU外接收入新的控制程式,然後將新程式燒錄到MCU原有的正規程式記憶體內,最後將MCU的主控權交還給正規程式記憶體內的新版控制程式。
主控權交還後,獨立程式區也就退至幕後,如同無形、隱形一般,直到下一次又有程式燒錄需求時才會再次現身並再次運用。
▲今日MCU內多內建線上除錯(In-Circuit Debugger;ICD)、JTAG等檢測機制,圖為MAXIM/Dallas Semiconductor的16-bit MCU:MAXQ3120的ICD功能方塊圖。(圖片來源:Maxim-ic.com)
■線上偵錯(JTAG、ICD)
由於晶片腳位愈來愈多,配置排列上也愈來愈密,過去用外部探針對接腳進行量測檢驗的方法逐漸難行,因此,有了在晶片內建立量測線路,並用少數接腳及串列通訊方式來取代探針檢測,此種邊界掃描(Boundary Scan)架構及測試存取埠等標準稱為JTAG(Joint Test Action Group),國際電子電機標準則為IEEE 1149.1,於1990年首次頒佈。
因此,接腳數較多的MCU也從善如流,於晶片內就佈設好邊界掃描,並對外提供JTAG標準測試埠以供測試存取、操作,如此MCU正式焊上控制系統後,便可透過JTAG來瞭解各腳位是否確實導通,邏輯是否正確等,讓生產良率的檢測更加方便快速。
附註:JTAG埠主要有5個接腳:TDI(Test Data In)、TDO(Test Data Out)、TCK(Test Clock)、TMS(Test Mode Select)、TRST(Test Reset),其中TRST屬選用,另外資料接腳即便只有一個也依然可行,至於傳輸協定則類似SPI介面。
JTAG主要是改善生產測試,另外有的MCU也內建線上除錯器(In-Circuit Debugger;ICD)及執行中斷點(Breakpoint),可與外部開發工具程式相搭配,以進行開發上的測試除錯,或現場維修時的檢測。
■結論
事實上,我們也未盡數說明所有的MCU堅穩特色及加值設計,其他還有更寬裕的工作電壓範疇(如4.5V~5.5V提升成2.2V~5.5V)、更寬裕的工作溫度範疇(從最寬鬆的商用:攝氏0~70度到最高標的軍用:-55~125度),更小的晶片封裝,如Microchip的PIC10/12系列,其接腳僅6、8pin,外觀幾與一顆串列型EEPROM無異,或如Renesas的Tiny系列(M16C/Tiny、H8/300H Tiny、R8C/Tiny)、Atmel的ATtiny(AVR核心)系列等亦訴求嬌小化封裝。
或是更精省的待機用電、運作用電,如Renesas的Super Low Power系列,如Atmel的AVR Ultra Low Power系列,及Microchip的PICmicro nanoWatt(奈瓦)技術等。另外,在省電模式上也更靈活,在此以AVR為例,其MCU就提供六種用電模態:Idle、ADC Noise Reduction、Power-save、Power-down、Standby、Active。
▲Microchip的最小型8-bit MCU:PIC10F200,其在SOP-23封裝下僅6個腳位,且價格低廉,官方網站的批發報價為每顆0.43美元。(
|