許多電子系統都會提供即時時脈給不同功能使用,例如系統的時間日期功能、時間戳記和定時工作的啟動,以及定期喚醒系統執行測量作業。即時時脈已出現多年,但從未針對嵌入式應用進行最佳化。
不過,市面上許多解決方案已將即時時脈和完整的獨立功能整合至微控制器。本文將討論傳統即時時脈與微控制器如何結合,以發揮一加一大於二的效果。
在此以一款嵌入式即時時脈模組為例說明(圖1),此電路可執行即時時脈的所有傳統功能(時間日期、鬧鈴和主系統關機時的其他作業)以及某些「故障安全」(Failsafe)功能,例如電源故障和時脈源故障的復原。
此範例的基本時脈單元是一個47位元的自由計時器(Free-running Counter),能使用37.768kHz的石英晶體或在20kHz或40kHz速率下操作的內部自我振盪器模式(自我振盪器較省電,但精確度較差)。日期時間是由軟體根據自由計時器來決定,因此不需另一組暫存器以傳統格式記錄日期時間。採用軟體的好處之一,是使用者更有能力控制系統操作,可根據系統需求使用複雜或簡單的演算法,例如利用晶片內建的溫度感測器,把通常相當複雜的溫度補償功能加入演算法中。
除此之外,若系統不必經常喚醒(例如游泳池的馬達每天只須喚醒一次),那麼實作這項控制功能所造成的額外負擔就顯得微不足道。
此範例中有三個介面暫存器,可用來控制內部暫存器,這將系統所需的特殊功能暫存器減至最少,同時提供一個抽象層,以避免計時器內容被誤改。使用者還可以設定鬧鈴暫存器(Alarm Register),以便在47位元自由計時器等於某個預設值時,啟動硬體中斷來執行特定工作,這類功能通常又稱為「輸出比較」。
微控制器還能提供一種稱為「暫停」模式的低耗電模式。在這種模式下,即時時脈模組產生的鬧鈴中斷(Alarm Interrupt),可以在一個系統時脈週期內將系統喚醒,而不須重新設定元件。
具備溫度補償的石英振盪器和即時時脈晶片,通常比沒有溫度補償功能的元件昂貴許多,但由於石英振盪器的頻率常會隨著周圍溫度、電壓和使用時間而改變,所以系統需要某種形式的溫度補償,才能在很大的溫度範圍內提供精確的時間和日期資料。
不過,目前有些微控制器已內建精確度±3%的溫度感測器(圖2),使得時間日期演算法能夠利用晶片內建溫度感測器傳來的資訊進行溫度補償。這種做法的好處,是系統可以使用不含溫度補償功能的低成本石英振盪器。
為了實作溫度補償演算法,系統必須用晶片內建溫度感測器,每分鐘測量周圍溫度一次。在大多數操作環境下,溫度在這麼短時間裡通常不會改變太多,因此系統會利用溫度測量值來計算誤差值(以ppm表示),並將結果(所須補償的微秒數)儲存至記憶體。系統會將每分鐘傳來的誤差計算結果累加在一起,等到一天結束後,就由演算法補償當天的時間誤差。
有些模組還提供許多其他功能,例如電源、電池切換電路、時脈源、備用隨機存取記憶體(RAM),和即時時脈區塊本身。然而這類模組的真正優點,仍在於把多項功能整合至一顆晶片,免除使用多顆不同元件所造成的晶片間資料互傳負擔。
晶片內建穩壓器能連接至2.0~5.25V的任何電壓,處理器實際使用2.5V電源,但會與晶片的I/O系統電源分開,這樣微控制器就能在不須任何中間介面的情況下,用於2.0~5.25V的各種系統。VIO接腳可連接至系統電壓供應,讓I/O和系統的其他裝置使用相同的電壓操作。除了主電源供應外,VBAT輸入還能連接至電壓最低1.0V的電池,做為即時時脈區塊的備用電源。
整合式即時時脈的第一個優點,是系統電源供應若降至正常電壓以下,晶片內含的電池切換電路就會從自動切換至備用電池。這表示即時時脈能在電源故障時繼續操作,即時時脈模組內的專屬備用隨機存取記憶體也能繼續保有資料。系統只要利用簡單軟體,將系統狀態定時儲存至這個備用隨機存取記憶體,就能在主電源供應恢復正常後,讓系統回到已知狀態,系統測量所得的重要資料也不會遺失。
微控制器重置時,系統會執行一個常式來檢查重置資源暫存器(Reset Sources Register),以便判斷系統電源是否曾經中斷,重置常式接著會讀取備用隨機存取記憶體的內容,並將處理器和工作暫存器的重要內容復原。舉例來說,這顆元件若用於電表,很容易就能追蹤停電的日期時間和長短,同時精確保存停電前的用電資訊。等到主電源恢復後,電池切換電路會將微控制器切換回主電源,然後將電池備用電源切斷,以確保備用電池擁有最長的壽命。
對於使用獨立零件的傳統系統而言,時脈故障的危害性可能還超過電源故障。有些微控制器會將晶片內建振盪器產生的24.5MHz訊號倍頻成為49MHz系統時脈,同時確保在整個操作電壓和溫度範圍內都能達到2%的精確度。即時時脈模組可透過XTAL 3和XTAL 4接腳,連接低成本的32.768kHz石英晶體,無論即時時脈模組電源來自系統主電源或備用電池,石英晶體都會透過即時時脈模組從這些接腳汲取電源。
在傳統系統中,如果32.768kHz石英晶體出現問題,系統就會隨著即時時脈源消失,而遭受無法復原的故障。
有些整合式即時時脈模組可提供獨立的時脈消失偵測電路,石英晶體故障會讓元件執行重置動作,同時設定重置資源暫存器裡的某個旗標來顯示石英晶體故障。等到微控制器完成重置動作後,系統即可從仍由備用電池供電的備用隨機存取記憶體裡,取出最後一次儲存的系統狀態資訊。32.768kHz石英晶體還能繞到主系統時脈路徑,使微控制器能在低頻率下操作。這項功能可用於必須定時進入睡眠狀態,但仍須在低速和低耗電模式下繼續工作的系統。
把常用功能整合至微控制器還能帶來其他明顯好處,例如電表、銷售點(POS)終端裝置,和資料記錄器等許多系統,都會用到定時喚醒、服務提醒和時間戳記等功能。增加「故障安全」功能也有很大好處,它能在電源或時脈故障時將系統復原,同時保存「最後一次已知」的系統狀態資訊。
總結而論,現今有些與微控制器結合的即時時脈模組增加許多有用功能,能在一個系統時脈週期內,從暫停操作模式迅速回到最高系統時脈的全速操作模式,同時提供數項故障安全功能,例如確保時脈功能在電源故障時繼續運作、確保系統在時脈故障時繼續運作,以及將系統還原為最後已知狀態,以便從故障中復原。