STC8H開發(十四): I2C驅動RX8025T高精度實時時鐘晶元

来源:https://www.cnblogs.com/milton/archive/2022/07/16/16479296.html
-Advertisement-
Play Games

RX8025 自建溫補晶振, 精度與 DS3231 相當, 一個性價比非常高的型號. RX8025有多個衍生型號, RX-8025T 與 RX-8025SA/NB 的 Pin不相容, 寄存器也不完全相同. 本文介紹RX8025T的基本信息, 寄存器說明和如何使用STC8H驅動RX8025T ...


目錄

計時時鐘晶元概覽

常用的計時時鐘晶元有 DS12C887, DS1302, DS1307, DS3231, RX8025, 各型號還有衍生型號. 可以看到到大部分是Dallas生產的晶元, RX8025的廠商是Epson. 其中

  • DS1302 和 DS1307 可以看成是同一晶元的不同協議版本(SPI和I2C), 需要外接晶振, 如果晶振不帶溫補, 計時誤差受溫度影響較大.
  • DS12C887是內建晶振的DS12C885, 在出廠時已經經過校準, 在+25°C時誤差為±1分鐘/月. DS12C887使用並口, 比較浪費IO資源, 另外體積也較大, 現在大都用於DIY用途.
  • DS3231 自帶溫補晶振, 精度很高, 在[-40°C, 85°C]範圍內誤差 ±0.432秒/天(±13秒/月). 是當之無愧的明星型號, 市面上有成品模塊, 有Arduino lib, 用起來相當方便.
  • RX8025 也自建溫補晶振, 精度與 DS3231 相當, 但是在市面上少見得多. 作為一個性價比非常高的型號, 有必要單獨介紹一下.

RX8025T 簡介

RX8025T 是高精度I2C實時時鐘晶元, I2C匯流排地址為固定的0x64

  • 400 kHz I2C介面
  • 內置 32.768 kHz 溫度補償晶振(DTCXO), 計時精度很高
  • 計時包含秒, 分, 時, 日, (周)日, 月, 年, 沒有世紀. 對年份2000至2099有閏年補償
  • 1個可編程鬧鐘, 支持按天及按周天迴圈
  • 方波輸出, 定時器輸出
  • 貯存溫度[-55°C, 125°C], 工作溫度[-40°C, 85°C]
  • 誤差(3.0V電壓)
    • 溫度範圍[ 0°C, 50°C], 誤差 ±10秒/月
    • 溫度範圍[-40°C, 85°C], 誤差 ±13秒/月
  • 工作電壓 1.6V - 5.5V (typical: 3.0V), 電壓低於2.2V時, 溫度補償停止工作
  • 時鐘保持電壓 1.2V - 5.5V
  • 工作電流 0.8μA - 20 μA, 溫補工作峰值電流900μA

RX8025T 與 RX8025SA/NB 的區別

註意, RX-8025T 與 RX-8025SA/NB 只是部分相同, Pin不相容, 寄存器也不完全相同

  • PIN: RX8025T 只有一個 /INT, RX8025SA 有兩個 /INTA和/INTB
  • 寄存器0x07:RX8025T 為 RAM 可以讀寫, RX8025SA 為 Digital Offset 用於調節 32.768 kHz 晶振精度
  • 鬧鐘定義: RX8025T 為 0X08,0x09,0x0A, RX8025SA 為 周[0x08,0x09,0x0A], 日[0x0B,0x0C]
  • 定時器: RX8025T 帶一個雙位元組(12bit)計數器, RX8025SA 沒有
  • 小時格式: RX8025T 只支持24H, RX8025SA 區分12H和24H

RX8025T 與 DS3231 相比

二者精度都很高, 誤差接近

  • DS3231 有備用電池pin, RX8025T 沒有
  • DS3231 有兩組鬧鐘, RX8025T 只有一組鬧鐘
  • DS3231 沒有定時器, RX8025T 有定時器

RX8025T 管腳和典型電路

管腳

PIN Name I/O 說明
1 T1(CE) Input 廠商測試 (不連接)
2 SCL Input I2C的時鐘
3 FOUT Output C-MOS 輸出, 由 FOE 控制. 當 FOE 為高電平時, 輸出 32.768 kHz 信號, 當停止輸出時, FOUT pin 表現為高阻態 (high impedance)
4 N.C.
5 TEST Input 廠商測試 (不連接)
6 VDD 供電正電壓
7 FOE Input 用於控制 FOUT pin 的輸出. 當此pin為高電平時, FOUT pin 為輸出模式, 低電平時 FOUT pin 停止輸出.
8 N.C.
9 N.C.
10 /INT Output 這個 pin 用於輸出鬧鐘信號, 定時器信號, 時鐘更新信號等, 這個pin為開漏輸出.
11 GND 接地
12 T2(VPP) 廠商測試 (不連接)
13 SDA I/O I2C的數據輸入輸出, 輸出時為 N-ch open drain, 需要上拉電阻.
14 N.C.

帶備用電池的電路

RX8025T 的寄存器

Addr Name 說明
0x00 SEC 計時秒, BCD碼[0, 59], 前六位有效
0x01 MIN 計時分鐘, BCD碼[0, 59], 前六位有效
0x02 HOUR 計時小時, BCD碼[0, 23], 24小時制, 前五位有效
0x03 WEEK 計時日(周天), 每一個bit代表一天, 從bit0至bit6依次為周日, 周一, ..., 周六
0x04 DAY 計時日, BCD碼[1, 31], 前五位有效
0x05 MONTH 計時月, BCD碼[1, 12], 前四位有效
0x06 YEAR 計時年, BCD碼[0, 99], 全八位有效
0x07 RAM 非功能, 可讀寫區域
0x08 MIN Alarm 鬧鐘分鐘, BCD碼[0, 59], 前六位有效. 第七位AE標識是否忽略(不參與比較), 0:否, 1:是
0x09 HOUR Alarm 鬧鐘小時, BCD碼[0, 23], 前五位有效. 第七位AE標識是否忽略
0x0A WEEK Alarm / DAY Alarm 鬧鐘日(周天/日), 由 WADA 寄存器控制
鬧鐘周天, 每一個bit代表一天, 從bit0至bit6依次為周日至周六, 第七位AE標識是否忽略
鬧鐘日, BCD碼[1, 31], 前五位有效, 第七位AE標識是否忽略
0x0B Timer Counter 0 計數器的低8位, HEX碼(正常數值)
0x0C Timer Counter 1 計數器的高4位, HEX碼(正常數值)
0x0D Extension Register 擴展功能寄存器
0x0E Flag Register 標誌位寄存器
0x0F Control Register 控制位寄存器

STC8H 驅動 RX8025T

接線

P32   -> SCL
P33   -> SDA
GND   -> GND
3.3V  -> VCC

示例代碼

代碼下載地址

代碼會將 RX8025T 時間設置為 2022-07-16 10:10:10, 然後每隔一秒顯示一次時間, 數值為十六進位

10-10-10-40-16-07-22-01-00-04-00-00-00-00-00-40-
11-10-10-40-16-07-22-01-00-04-00-00-00-00-20-40-
12-10-10-40-16-07-22-01-00-04-00-00-00-00-20-40-
13-10-10-40-16-07-22-01-00-04-00-00-00-00-20-40-
14-10-10-40-16-07-22-01-00-04-00-00-00-00-20-40-
15-10-10-40-16-07-22-01-00-04-00-00-00-00-20-40-

讀寫時間的方法


__XDATA uint8_t buff[7];

uint8_t RX8025T_Write(uint8_t reg, uint8_t dat)
{
    return I2C_Write(RX8025T_I2C_ADDR, reg, &dat, 1);
}

// 初始化, 清除標誌位, 關閉中斷
uint8_t RX8025T_Init(void)
{
    // Reset all flags
    RX8025T_Write(RX8025T_REG_FLAG, 0x00);
    // Default , turn off all interrupts
    RX8025T_Write(RX8025T_REG_CONTROL, 0x40);
    return HAL_OK;
}

// 讀取時間
uint8_t RX8025T_GetTime(uint8_t *t)
{
    I2C_Read(RX8025T_I2C_ADDR, RX8025T_REG_SECOND, t, 16);
    return HAL_OK;
}

// 設置時間
uint8_t RX8025T_SetTime(uint8_t *t)
{
    RX8025T_Write(RX8025T_REG_SECOND, t[0]);
    RX8025T_Write(RX8025T_REG_MINUTE, t[1]);
    RX8025T_Write(RX8025T_REG_HOUR, t[2]);
    
    RX8025T_Write(RX8025T_REG_WEEKDAY, t[3]);
    RX8025T_Write(RX8025T_REG_DAY, t[4]);
    RX8025T_Write(RX8025T_REG_MONTH, t[5]);
    RX8025T_Write(RX8025T_REG_YEAR, t[6]);
    return HAL_OK;
}

main方法示例

int main(void)
{
    uint8_t i;
    SYS_SetClock();
    // UART1 configuration: baud 115200 with Timer2, 1T mode, no interrupt
    UART1_Config8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200);

    GPIO_Init();
    I2C_Init();
    RX8025T_Init();
    time[0] = 0x10; // second
    time[1] = 0x10; // minute
    time[2] = 0x10; // hour
    time[3] = 0x40; // week day
    time[4] = 0x16; // day
    time[5] = 0x07; // month
    time[6] = 0x22; // year
    RX8025T_SetTime(time);

    while(1)
    {
        RX8025T_GetTime(time);
        for (i = 0; i < BUFF_SIZE; i++)
        {
            UART1_TxHex(time[i]);
            UART1_TxChar('-');
        }
        UART1_TxString("\r\n");
        SYS_Delay(1000);
    }
}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • JetBrAIns RubyMine 2022 for Mac是應用在Mac上的一款強大的Ruby代碼編輯器,可以通過可定製的配色方案,鍵盤方案以及高效開發所需的所有外觀設置,智能導航一鍵導航到聲明,超級方法,測試,用法,實現,是一款功能強大的代碼編輯工具。 詳情:JetBrains RubyMin ...
  • 本文主要介紹crudapi三種API認證方式,基於Spring Security框架實現, 包括Cookie,Basic Auth,JWT令牌Token。 ...
  • 1.mybatis攔截器介紹 攔截器可在mybatis進行sql底層處理的時候執行額外的邏輯,最常見的就是分頁邏輯、對結果集進行處理過濾敏感信息等。 public ParameterHandler newParameterHandler(MappedStatement mappedStatement ...
  • AbpVnext 本地事件匯流排 補充知識 發佈訂閱 概念 應用場景 本地事件匯流排允許服務發佈和訂閱進程內事件,這意味著如果兩個服務>(發佈者和訂閱者)在同一個進程中運行,那麼它是合適的 完整示例 DDD開發規範: 先定義好介面層、後實現層、暴露介面 對於要更新的實體 //領域層的實體 public ...
  • IdentityServer4 實現鑒權、授權,AspNetCore Identity實現資料庫用戶管理表直接生成。 ps:IdentityServer4文檔上最後給的例子是 // 配置使用記憶體存儲用戶信息,但使用 EF 存儲客戶端和資源信息, 我初步要實現的是 //資料庫存儲用戶信息 記憶體存儲資源 ...
  • 二、Docker相關命令 2.1、Docker 服務相關命令 systemctl命令是系統服務管理器指令 2.1.1、啟動docker服務 命令 systemctl start docker 2.1.2、停止docker服務 命令 systemctl stop docker 2.1.3、重啟dock ...
  • 痞子衡嵌入式半月刊: 第 58 期 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。 本期刊是開源項目(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。 上期回顧 ...
  • 1. 簡介 中國廣電正式放號了,為了支持廣電700MHz的5G基站,需要換用新的5G模組.移遠通信的RM500U模組正好可以滿足我們的使用要求; 選用該模組的原因:雙卡單待 支持SIM卡熱插拔 支持中國廣電700MHz基站 版本升級方便 具體參數請到公司官網查看吧> https://www.quec ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...