許多嵌入式應用需要知道時間,以便在特定的時間和日期,或針對時間戳事件,或同時依據兩者執行特定的任務。執行此功能的 RTCC(實時時鐘和日歷)芯片問世已有數十年,但設計人員在縮減元件數目和基底面,同時最大限度減少功耗和設計時間方面一直面臨著挑戰。
集成式 RTCC 器件和創新式模塊如今可以應對這些挑戰。
本文將討論如何選擇 RTCC 芯片,并快速應用于嵌入式系統的設計中,同時最大限度減小空間,降低功耗。文中還會討論具有內置 RTCC 的 MCU,以及將可用的 RTCC 模塊與表面貼裝 RTC 及其他元件一同使用,協助原型開發。
整合到模塊中的 RTCC 芯片通常由 Arduino 庫和 Raspberry Pi Raspbian 驅動程序覆蓋層提供支持,利用它們可以更輕松地使用上述器件開展嵌入式實驗和原型開發。
RTCC 的角色
許多嵌入式應用需要以極低的功耗跟蹤相對于真實世界的時間,同時減少在主處理器中所占用的空間,便與其處理其他任務。
然而,就其本身而言,RTCC 芯片能力有限。它需要一個用于計時的精確晶體(可能為可實現極精確計時的溫度補償型晶體),還需要備用電池電源,以便在嵌入式系統斷電時仍能繼續跟蹤時間。這些輔助元件決定了 RTCC 執行其兩項主要任務的能力:
在所有條件下持續記錄精確的時間和日期
在嵌入式系統的其余部分斷電后消耗極少的功率
部分微控制器采用 RTCC
一些微控制器,例如 Microchip Technology 的 32 位 PIC32MZ2064DAA288 微控制器,采用了內部 RTCC 塊。將此類器件用于設計需要精確計時的系統似乎是個不錯的主意,尤其是,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 芯片,許多情況下甚至適用于評估批量制造中的 RTCC 芯片。
圖 1:Adafruit 的 255 Chronodot 在一個通孔式模塊中整合了 RTCC 芯片和電池。(圖片來源:Adafruit)
表 1 列出了基于兩家 IC 供應商的三款不同 RTCC 芯片的六個不同 RTCC 模塊。
RTCC 模塊 RTCC 芯片 接口 電池 電池壽命最小值(典型值) DFRobot DFR0151 Maxim DS1307 I2C CR1225 9 (17) 年 SparkFun BOB-12708 Maxim DS1307 I2C CR1225 9 (17) 年 Adafruit 3103 Maxim DS3231 I2C CR1220 不適用 Adafruit 255 Chronodot Maxim DS3231 I2C CR1632 8 年 Maxim DS3231MPMB1# Maxim DS3231 I2C CR1025 不適用 STM STEVAL-FET001V1 STMicro M41T62 I2C 外置 不適用
表 1:六個 RTCC 模塊詮釋了 RTCC 模塊的廣泛適用性和多樣性。(數據來源:Digi-Key Electronics)
利用類似表 1 所列的六款 RTCC 模塊,可以輕松地在原型系統中增加計時功能。在開發整合了底層 RTCC 芯片的電路板時,如果仔細觀察這些模塊的設計方法,就能發現一些有用的信息。
表 1 中需要注意的第一點是,所有這些 RTCC 模塊都有一個共同點,即 I2C 接口。上世紀 70 年代的早期 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 的偏移對應每月大約 1 分鐘的計時誤差。
第二個因素被圖 2 中晶體與 RTCC 芯片之間過度簡化的連接所隱藏。RTCC 芯片的晶體輸入引腳通常具有極高的阻抗,導致鐘表晶體的引線和 PC 板的印制線起到類似天線的作用。此“天線”可以將系統其余部分的高頻信號和噪聲耦合到 RTCC 的內部晶體振蕩器。
任何通過鐘表晶體與 RTCC 芯片之間的印制線耦合的噪聲,都可能導致 RTCC 芯片的振蕩器電路中出現額外轉換,進而導致時鐘運行加快。解決方案是采用細致的 PC 板布局。這包括將晶體置于盡可能接近 RTCC 芯片的振蕩器引腳的位置,以及在晶體輸入引腳和整個鐘表晶體主體的下面放置一個接地平面(圖 4)。
圖 4:接地平面上細致的 PC 板布局可預防有害的噪聲影響 RTCC 芯片的計時精度。(圖片來源:Maxim Integrated)
此外,圖 4 顯示的 RTCC 封裝下面用陰影線表示的禁布區,可以防止間距很近的印制線將噪聲耦合到 RTCC 芯片的晶體輸入引腳。如果可能,在 PC 板的元件層上增加一個環繞晶體和 RTCC 芯片晶體輸入引腳的保護環,也有助于防止噪聲對計時精度產生影響。
從 PC 板取下鐘表晶體并插入芯片中
為了規避外部晶體面臨的一些與 PC 板布局相關的挑戰,可選擇采用 STMicroelectronics 提供的帶有內置晶體的 M41T62 RTCC。具有 24 引腳 DIP 基底面的 STMicroelectronics STEVAL-FET001V1 評估板上提供了此 RTCC 芯片。圖 5 顯示了此電路板的示意圖。其中有一個 Arduino 庫和一個 Raspberry Pi Raspbian 驅動程序覆蓋層可供 M41T62 使用。
圖 5:采用 24 引腳 DIP 封裝的 STEVAL-FET001V1 評估板上提供了 STMicroelectronics M41T62 RTCC 芯片(中央)。(圖片來源:STMicroelectronics)
如示意圖所示,M41T62 只有一個 VCC 引腳。它沒有在主電源軌出現故障時可選擇切換的單獨 VBAT 引腳,因為該器件的尺寸僅為 1.5 x 3.2 毫米,專門用于可穿戴設備和數碼相機。在這些嵌入式應用中,電池往往是唯一的電源,而且空間非常寶貴。
請注意,也可以使用一個超級電容器作為 M41T62 的電源。在嵌入式系統中,系統電源或充電器可通過阻流二極管 D1,連接到 M41T62 的 VCC 引腳(圖 6)。
該二極管必須是與以上圖 5 中顯示的 1N4148WS 相似的低漏電類型,以防止超級電容器在系統的其余部分斷電時,通過系統電源反向放電。
圖 6:可使用可充電超級電容器為 M41T62 RTCC 芯片供電。(圖片來源:STMicroelectronics)
溫度補償可滿足晶體要求
表 1 中所列的三種 RTCC 模塊(Adafruit 3013、Adafruit 255 Chronodot 和 Maxim DS3231MPMB1#)均基于 Maxim 的 DS3231 RTCC 芯片(圖 7)。除集成式晶體之外,該器件還包括一個溫度傳感器,這也是該器件擁有較長正式名稱“超精準 I2C 集成式 RTC/TCXO/晶體”的原因所在。
圖 7:DS3231 RTCC 芯片集成了 32768 Hz 鐘表晶體、一個溫度傳感器和一個開關式電容器陣列,以便將器件的計時精度保持在每年 ±2 分鐘以內。(圖片來源:Maxim Integrated)
如方框圖中所示,DS3231 的溫度補償型晶體振蕩器 (TCXO) 由內部晶體、一個溫度傳感器和一個開關式電容器陣列構成。與 DS1307 RTCC 類似,DS3231 也有單獨的主電源 (VCC) 和備用電池 (VBAT) 引腳。
與 STMicroelectronics M41T62 RTCC 芯片一樣,DS3231 RTCC 芯片消除了外部晶體存在的布局挑戰。它的 TCXO 減少了溫度擺動造成的計時精度波動。DS3231 的內部 TCXO 能在極寬的工作溫度范圍(-40°C 至 +85°C),將器件的計時精度保持在每年正負 2 分鐘以內。
由于它的普及程度,人們針對基于 DS3231 RTCC 芯片的模塊還提供了多個 Arduino 庫和一個 Raspberry Pi Raspbian 驅動程序覆蓋層。
電池能持續使用多長時間?
電池需保養維護,無法永久續航。在將 RTCC 添加至嵌入式設計時,務必注意 RTCC 芯片所需的電池電流,以適當調整備用電池的大小。
RTCC 應用中的電池壽命將取決于 RTCC 芯片在計時時的漏極電流、RTCC 芯片所需的最低工作電壓,以及電池在其輸出電壓降至低于該最小工作電壓之前能夠供應所需電流的時間量(圖 2)。
RTCC 芯片 電池電流 (nA) 典型值(最大值) Maxim DS1307 300 (500) Maxim DS3231 840 (3000) STMicro M41T62 5000 (7000)
表 2:RTCC 芯片的電池供電電流額定值有助于調整合適的備用電池大小。(數據來源:Digi-Key Electronics)
之前表 1 中顯示的 RTCC 模塊均已選定備用電池。一些模塊供應商在模塊的規格書上包含了電池壽命數字,此數字同樣顯示在表 1 中。鋰紐扣電池目前是這些模塊首選的電池類型。表中所列器件的電池直徑不外乎 10、12 和 16 毫米。當然,電池容量越大,增加的空間和重量往往也更多,但顯而易見的好處是,給定電流下的電池壽命更長。
總結
在選擇 RTTC 器件、選擇配套的晶體和電池以確保精準操作,以及為 PC 板布局時,都應格外小心。另一方面,基于 RTCC 芯片的可用模塊為試驗板和原型開發提供了捷徑,大幅縮短了開發時間。
-
微控制器
+關注
關注
48文章
7576瀏覽量
151727 -
mcu
+關注
關注
146文章
17199瀏覽量
351927 -
嵌入式
+關注
關注
5087文章
19153瀏覽量
306430
發布評論請先 登錄
相關推薦
評論