在嵌入式設計中快速實作高效率的即時時脈/日曆功能
資料提供者:DigiKey 北美編輯群
2018-09-20
許多嵌入式應用需要知道時間,以便在特定的時間和日期啟動特定任務,或是對事件進行時間戳記,又或是進行兩者。用於執行此功能的 RTCC (即時時脈和日曆) 晶片已有數十年歷史,但是設計人員很難在縮減元件數與覆蓋區的同時,又將功耗與設計時間減至最低。
整合式 RTCC 元件與創新的模組能克服這些挑戰。
本文將探討如何挑選 RTCC 晶片並快速地將晶片設計到嵌入式系統裡,同時將空間與功耗減至最低。還會探討內建 RTCC 的 MCU,以及 RTCC 模組如何協助運用表面黏著 RTC 及其他零件進行原型開發。
整合在模組中的 RTCC 晶片,通常都具有 Arduino 函式庫與 Raspberry Pi Raspbian 驅動程式重疊檔的支援,因此能更輕鬆地使用這些元件來進行嵌入式實驗與原型開發。
RTCC 的角色
許多嵌入式應用必須以最低的功耗來追蹤相對於真實世界的時間,還得釋放主處理器的資源以便處理其他任務。
然而,RTCC 晶片本身的功用不大,必須借助準確無誤的晶體來計時 (比如在很講究計時準確度時選用溫度補償式晶體),也必須裝有備用電池,以便在嵌入式系統斷電以後仍可持續計時。這些輔助元件決定了 RTCC 執行其兩項主要任務的能力:
- 在任何情況下皆持續提供準確的時間和日期
- 在嵌入式系統其餘部分斷電後,消耗最少的電力
有些微控制器具有 RTCC
有些微控制器具有內部 RTCC 模塊,例如 Microchip Technology 的 32 位元 PIC32MZ2064DAA288 微控制器。乍看之下,利用這種元件設計出一個必須準確計時的系統似乎非常明智,尤其是因為 PIC32MZ2064DAA288 微控制器會在微控制器一般電源供應引腳 (VDDCORE 與 VDDIO) 的電壓不足以為該元件供電時,自動將內部電源切換為電池輸入引腳 (VBAT)。
然而,這種元件還有幾個難題有待解決,且與上述 RTCC 的兩項重要任務直接相關:準確計時及低功耗操作。
首先,PIC32MZ2064DAA288 微控制器的 RTCC 模塊必須在其兩個次要振盪器引腳上安裝 32768 Hz 晶體,才能在微控制器斷電後維持準確的時間。雖然可以使用微控制器的主時脈振盪器讓 RTCC 模塊操作,但該振盪器會在微控制器進入深度睡眠模式時停止運作。
晶片上的 RTCC 整合了校正暫存器,而 Microchip 所提供的校正程序,能針對頻率偏離多達 260 ppm 的晶體振盪器,將計時誤差降到每月 0.66 秒。然而,固定式校正不會將溫度變化納入考量,而這也可能會影響振盪器的頻率,進而影響計時準確度。
再者,微控制器在改用電池供電後,除了 RTCC 模塊之外,並不會完全斷電。以電池供電時,微控制器內的其他模塊可能會啟用,也可能不會,端視軟體的控制情形而定。而這情況會產生一個問題,那就是電池的耗電與續航力將取決於軟體。
而此問題並不僅僅出現在 PIC32MZ2064DAA288 微控制器而已。任何整合了 RTCC 模塊的微控制器都會面臨這個問題。只要使用獨立的 RTCC 晶片,問題就能解決,因為這種作法能明確地將計時功能從微控制器中分離出來,而且在微控制器沒有內部 RTCC 的情況下,這也是唯一的設計選擇。
RTCC 晶片與模組
數十年來,設計工程師一直在各種嵌入式與計算應用中使用獨立的 RTCC 晶片來計時。雖然現在有幾家 IC 廠商都有提供這種晶片,但表面黏著技術 (SMT) 的運用讓 RTCC 晶片的評估作業更加複雜,因為這種元件不容易徒手焊接或插入插槽中。
有個不錯的解決方法,就是使用以這些 RTCC 晶片作為基礎的低成本模組,如此即可免去小型表面黏著 IC 的原型開發難題。這些模組也整合了電池 (通常是鈕扣型電池),可在主系統斷電時持續供電。
Adafruit 的 255 Chronodot 模組就是很好的例子 (圖 1)。這種模組可方便評估試驗電路板及原型開發中的 RTCC 晶片,許多情況下甚至可用於量產應用。
圖 1:Adafruit 的 255 Chronodot 是內含 RTCC 晶片與電池的通孔式模組。(圖片來源:Adafruit)
表 1 列出六種不同的 RTCC 模組,採用來自兩家 IC 廠商的三種不同 RTCC 晶片。
|
表 1:六種 RTCC 模組展現出 RTCC 模組廣泛的供貨性及多樣性。(資料來源:DigiKey)
利用如表 1 所列的這六種 RTCC 模組,就能輕易地在原型開發系統中加入計時功能。仔細觀察這些模組的設計方式,就可找出一些實用的資訊,有助於開發含有基本 RTCC 晶片的電路板。
在表 1 中會先注意到的是,這些 RTCC 模組都有一個共通點,就是 I2C 介面。1970 年代的早期 RTCC 晶片,都使用平行位址與數據匯流排來模擬小型 SRAM。在那個年代,平行微處理器匯流排相當常見,而板載序列協定尚未廣泛使用。
如今,對頻寬要求相對較小的周邊裝置而言,首選介面為晶片對晶片序列協定,特別是 I2C。RTCC 晶片當然可勝任,因為僅需要少許位元組就能傳輸日期與時間資訊。
表 1 中的前兩個 RTCC 模組 (DFRobot 的 DFR0151 及 SparkFun 的 BOB-12708),都是以 Maxim Integrated 的 8 引腳 DS1307 RTCC 晶片為基礎。由於此晶片廣為流行,目前已經有適合的 Arduino 函式庫與 Raspberry Pi Raspbian 驅動程式重疊檔可搭配以此晶片為基礎的模組使用。
DS1307 RTCC 針對電軌與電池分設引腳,以便在系統斷電期間,從嵌入式系統的電軌自動切換到備用電池 (圖 2)。
圖 2:Maxim Integrated 的 DS1307 RTCC 晶片會在 VCC 引腳電壓降到約 4.5 V 以下時,自動從 VCC 切換到 VBAT。(圖片來源:Maxim Integrated)
圖 2 還顯示了 DS1307 RTCC 晶片與晶體之間的連接。對於 RTCC 晶片來說,此晶體幾乎都採用價格不高的 32768 Hz 手錶晶體,例如 IQD Frequency Products 的 WATCH-2X6。此晶體會在使用 RTCC 晶片進行設計時,額外添加兩個要考量的因素。
第一個因素是晶體在溫度變化下的穩定性。大部分的 RTCC 都使用原本針對手錶設計的「音叉型」晶體。這些晶體會隨著溫度變化而偏離其額定頻率 (圖 3)。
圖 3:32768 Hz 晶體的共振頻率會隨著溫度而變化,這會影響 RTCC 的計時準確度。(圖片來源:IQD Frequency Products)
IQD WATCH-2X6 晶體的共振頻率會隨著溫度而變化,進而改變振盪器的頻率,造成計時誤差。請注意,若振盪器頻率改變 20 ppm,等於大約每個月有一分鐘的計時誤差。
由於圖 2 中的晶體與 RTCC 晶片間的連接過度簡化,因此第二個因素不是很明顯。RTCC 晶片的晶體輸入引腳通常有很高的阻抗,因此手錶晶體的引線與電路板走線的作用就如同天線一樣。此「天線」能將來自系統其餘部分的高頻訊號及雜訊,耦合到 RTCC 內部的晶體振盪器中。
藉由手錶晶體與 RTCC 晶片間的引線進行耦合的任何雜訊,都會在 RTCC 晶片的振盪器電路中造成額外的轉換,導致時鐘加速。解決的方法是謹慎安排電路板的佈局,包括讓晶體盡可能靠近 RTCC 晶片的振盪器引腳,並在晶體輸入引腳與整個手錶晶體底下放置接地面 (圖 4)。
圖 4:在接地面上謹慎安排電路板佈局,能避免不必要的雜訊影響到 RTCC 晶片的計時準確度。(圖片來源:Maxim Integrated)
另外,圖 4 指出 RTCC 封裝底下有個以交叉陰影線標示的禁區,是用來避免密集的走線將雜訊耦合到 RTCC 晶片的晶體輸入引腳。如果可行,請在電路板的元件層添加一個防護環,將晶體與 RTCC 晶片的晶體輸入引腳圍住,避免雜訊影響計時的準確度。
將手錶晶體從電路板取下並放到晶片中
使用外部晶體時,若要避開一些電路板佈局上的難題,可挑選內建晶體的 STMicroelectronics M41T62 RTCC。此 RTCC 晶片由 STMicroelectronics 的 STEVAL-FET001V1 評估板提供,而此評估板則採用 24 針腳 DIP 覆蓋區。此板件的線路圖如圖 5 所示。M41T62 有可用的 Arduino 函式庫與 Raspberry Pi Raspbian 驅動程式重疊檔。
圖 5:STMicroelectronics 的 M41T62 RTCC 晶片 (中心) 由 STEVAL-FET001V1 評估板提供,而此評估板採用 24 引腳 DIP 封裝。(圖片來源:STMicroelectronics)
如線路圖所示,M41T62 只有一個 VCC 引腳。此晶片並未另附 VBAT 引腳可在主電軌失效時切換使用,因為此元件尺寸僅僅 1.5 x 3.2 mm,專為用於穿戴式裝置與數位相機而設計。在這些嵌入式應用中,電池通常是唯一的電力來源,而且空間非常寶貴。
請注意,亦可使用超級電容來為 M41T62 供電。在嵌入式系統裡,可經由阻隔二極體 D1,將系統電源或充電器連接至 M41T62 的 VCC 引腳 (圖 6)。
此二極體必須是低洩漏型,例如上方圖 5 顯示的 1N4148WS,可在系統其餘部分斷電後,避免超級電容放電回流到系統電源。
圖 6:可使用充電式超級電容為 M41T62 RTCC 晶片供電。(圖片來源:STMicroelectronics)
溫度補償滿足晶體要求
表 1 的三個 RTCC 模組 (Adafruit 3013、Adafruit 255 Chronodot 與 Maxim DS3231MPMB1#),都是以 Maxim 的 DS3231 RTCC 晶片作為基礎 (圖 7)。該元件除了具有整合式晶體外,還含有溫度感測器,這也是該元件正式名稱很長的原因,稱為「極準確 I²C 整合式 RTC/TCXO/晶體」。
圖 7:DS3231 RTCC 晶片整合了 32768 Hz 手錶晶體、溫度感測器與切換式電容陣列,能讓元件的計時準確度保持在每年 ±2 分鐘以內。(圖片來源:Maxim Integrated)
如方塊圖所示,DS3231 的溫度補償晶體振盪器 (TCXO) 由內部晶體、溫度感測器與切換式電容陣列組成。DS3231 與 DS1307 RTCC 一樣,針對主電源 (VCC) 與備用電池 (VBAT) 各有不同的引腳。
如同 STMicroelectronics 的 M41T62 RTCC 晶片,DS3231 RTCC 晶片避開了外部晶體的佈局難題。此晶片的 TCXO 能減少溫度變化造成的計時準確度差異。DS3231 的內部 TCXO 振盪器,能讓此元件在超寬廣的工作溫度範圍內 (-40°C 至 +85°C),保持每年 ±2 分鐘以內的計時準確度。
由於此晶片廣為流行,目前已經有多種 Arduino 函式庫與 Raspberry Pi Raspbian 驅動程式重疊檔可搭配以 DS3231 RTCC 為基礎的模組使用。
電池的電力能維持多久?
電池為消耗品,無法永久運作。在嵌入式設計中增添 RTCC 時,務必注意 RTCC 晶片所需的電池電流,以便挑選適當的備用電池大小。
在 RTCC 應用中,電池續航力的取決因素包括:RTCC 晶片在計時過程中的電流損耗量、RTCC 晶片所需的最低操作電壓,以及電池輸出電壓降到低於此最低操作電壓之前,可供應必要電流的時間長度 (表 2)。
|
表 2:RTCC 晶片的電池電源額定電流能幫助挑選合適的備用電池大小。(資料來源:DigiKey)
前面表 1 顯示的 RTCC 模組已選定了備用電池。有些模組廠商會在模組的規格書中註明電池續航力數值 (亦顯示於表 1)。目前,這些模組選擇的電池類型為鈕扣型鋰電池。表格中所示的直徑有 10 mm、12 mm 與 16 mm。電池蓄電量越大,當然比較占空間且重量越重,但有一明顯的好處,就是在指定的電流消耗量下能提供較長的電池續航力。
結論
應慎選 RTTC 元件以及搭配的晶體與電池,以確保運作的準確性,此外也要謹慎安排電路板的佈局。也可選擇以 RTCC 晶片作為基礎的模組,能讓人更輕鬆快速地建立試驗電路板與開發原型,大幅縮短開發時間。

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。