DS3231的使用(一)


常用的DS3102需使用外置晶振,且沒有溫度補償,因此誤差較大。DS3231內置晶振且有內部溫度補償,誤差可做到1分鍾每年。

一、DS3231概述

DS3231是一款高精度I2C實時時鍾器件,具有集成的溫度補償晶體振盪器。該器件包含電池輸入端,斷開主電源時仍可保持精確計時。集成的晶體振盪器可提高器件的長期精確度。DS3231的寄存器能保存秒、分、時、星期、日期、月、年和鬧鍾設置等信息。少於31天的月份,可自動調整月末日期,包括閏年補償。時鍾的工作格式為24小時或帶AM/PM指示的12小時格式。DS3231提供兩個可編程日歷鬧鍾和一路可編程方波輸出。DS3231與單片機通過I2C雙向串行總線傳輸地址與數據。

引腳圖

VCC為電源引腳;
INT/SQW為低電平有效中斷或方波輸出:是低電平有效復位引腳;
N.C.表示無連接,外部必須接地;
GND為地;
VBAT為備用電源輸入;
SDA為串行數據輸入輸出;
SCL為串行時鍾輸入。
內部結構圖
32 kHz的TCXO
TCXO包括溫度傳感器、振盪器和控制邏輯。控制器讀取片上溫度傳感器輸出,使用查表法確定所需的電容,加上AGE寄存器的老化修正。然后設置電容選擇寄存器。僅在溫度變化或者用戶啟動的溫度轉換完成時,才加載包括AGE寄存器變化的新值。VCC初次上電時就會讀取溫度值,然后每隔64 s讀取一次。
 
DS3231的電源控制
電源控制功能由溫度補償電壓基准(VPF)和監視VCC電平的比較器電路提供。當VCC高於VPF時,DS3231由VCC供電,當VCC低於VPF但高於VBAT時,DS3231由VCC供電;當VCC低於VPF並低於VBAT時,DS3231由VBAT供電。為保護電池,VBAT首次加到器件時振盪器並不啟動,除非加載VCC,或者向器件寫入一個有效的I2C地址。典型的振盪器啟動時間在1 s以內。在VCC加電后或者有效的I2C地址寫入后大約2 s,器件會測量一次溫度,並使用計算的修正值校准振盪器。一旦振盪器運行,只要電源(VCC或者VBAT)有效就會一直保持工作狀態。器件每隔64 s進行一次溫度測量並校准振盪器頻率。
 
DS3231的時鍾和日歷RTC
可以通過讀取適當的寄存器字節獲得時鍾和日歷信息。通過寫入適當的寄存器字節設定或者初始化時鍾和日歷數據。時鍾和日歷寄存器的內容采用二-十進制編碼(BCD)格式。DS3231運行於12小時或者24小時模式。小時寄存器的第6位定義為12或24小時模式選擇位。該位為高時,選擇12小時模式。在12小時模式下,第5位為AM/PM指示位,邏輯高時為PM。
 
DS3231的復位按鈕
DS3231具有連接至RST輸出引腳的按鈕開關功能。若DS3231不在復位周期,會持續監視RST信號的下降沿。如果檢測到一個邊沿轉換,DS3231通過拉低RST完成開關去抖。內部定時器定時結束后,DS3231繼續監視RST信號。如果信號依舊保持低電平,DS3231持續監視信號線以檢測上升沿。一旦檢測到按鈕釋放,DS3231強制RST為低電平並保持tRST。RST還可用於指示電源故障報警情況。當VCC低於VPF時,產生內部電源故障報警信號,並強制拉低RST引腳。當VCC返回至超過VPF電平時。RST保持低電平大約250 ms(tREC),使供電電源達到穩定。如果在VCC加載時,振盪器不工作,將跳過tREC,RST立刻變為高電平。
 
DS3231的鬧鍾和報警功能
DS3231包含2個定時/日期鬧鍾。鬧鍾1可通過寫入寄存器07h~0Ah設定。鬧鍾2可通過寫入寄存器0Bh~0Dh設定。可對鬧鍾進行編程(通過控制寄存器的鬧鍾使能位和INTCN位),從而在鬧鍾匹配條件下觸發INT/SQW輸出。每個定時/日期鬧鍾寄存器的第7位是屏蔽位。當每個鬧鍾的屏蔽位均為邏輯0時,只有當計時寄存器中的值與存儲於定時/日期鬧鍾寄存器中的對應值相匹配時才會告警。鬧鍾也可以編程為每秒、分、時、星期或日期重復告警。當RTC寄存器值與鬧鍾寄存器的設定值相匹配時,相應的鬧鍾標志位A1F或A2F置為邏輯1。如果對應的鬧鍾中斷使能位A1IE或A2IE也置為邏輯1,並且INTCN位置為邏輯1,鬧鍾條件將會觸發INT/SQW信號。RTC在時間和日期寄存器每秒更新時都會檢測匹配情況。
 
DS3231的控制寄存器及功能
BIT7位:使能振盪器(EOEC)。設定為邏輯0時,啟動振盪器。如果設定為邏輯1,在DS3231電源切換至VBAT時,振盪器停止。初次上電時該位清零 (邏輯0) 。當DS3231由VCC供電時,振盪器與EOSC位的狀態無關,始終保持工作狀態。
 
BIT6位:電池備份的方波使能(BBSOW)。當設定為邏輯1並且DS3231由VBAT引腳供電時,在沒有加載VCC的情況下,該位使能方波輸出。當BB-SQW設定為邏輯0時,若VCC降至低於電源故障門限值,則INT/SQW引腳變為高阻抗。初次上電時,該位清零(邏輯0)。
 
BIT5位:轉換溫度(CONV)。該位置為1時,強制溫度傳感器將溫度轉換成數字,並執行TCXO算法更新振盪器的電容陣列。只在空閑期間有效。狀態位BSY=1時,禁止設定轉換溫度位。用戶在強制控制器開始新的TCXO操作之前。應檢查狀態位BSY。用戶啟動的溫度轉換不影響內部64 s更新周期。用戶啟動的溫度轉換在大約2 ms內不會影響BSY位。CONV位從寫入開始直到轉換完成一直保持為1,轉換完后,CONV和BSY均變為0。在監視用戶啟動轉換狀態時,應使用CONV位。
 
BIT4和BIT3位:頻率選擇(RS2和RS1),初次上電時,BIT4和BIT3設置為邏輯1。方波使能時用於控制方波輸出的頻率。RS1、RS2的邏輯值與方波輸出頻率的關系如表所列。
BIT2位:中斷控制(INTCN)。該位控制INT/SQW信號。INTCN置為0時,INT/SQW引腳輸出方波;INTCN置為1時,若計時寄存器與任一個鬧鍾寄存器相匹配,則會觸發INT/SQW信號(如果也使能鬧鍾的話)。匹配時相應的鬧鍾標志總是置位,而與INTCN位的狀態無關。初次上電時,INTCN位置為邏輯1。
 
BIT1位:鬧鍾2中斷使能(A2IE)。該位置為邏輯1時,允許狀態寄存器中的鬧鍾2標志位(A2F)觸發INT/SQW信號(當INTCN=1時)。當A2IE位置為0或者INTCN置為0時,A2F位不啟動中斷信號。初次上電時,A2IE位清零(邏輯0)。
 
BIT0位:鬧鍾1中斷使能(A1IE)。該位置為邏輯1時,允許狀態寄存器中的鬧鍾1標志位(A1F)觸發INT/SQW信號(當INTCN=1時)。當A1IE位置為0或者INTCN置為0時,A1F位不啟動INT/SQW信號。初次上電時,A1IE位清零(邏輯0)。
 
下一節  IIC總線協議的代碼實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM