0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

實時時鐘為微控制器系統(tǒng)增加了精確的計時功能

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-21 10:09 ? 次閱讀

MAXQ610微控制器不包括電池備份的實時時鐘(RTC),但1-Wire?網(wǎng)絡的靈活性使得可以在任何基于MAXQ1904的應用中直接添加DS610 RTC i按鈕?。與DS1904通信、設置時鐘和控制值以及與原始秒數(shù)之間的時間值轉(zhuǎn)換,都可以在MAXQ610的能力范圍內(nèi),即使使用匯編語言也是如此。本應用筆記說明如何在基于MAXQ610的應用中增加RTC功能。顯示了實現(xiàn)此應用程序的演示代碼。本文的原理和技術(shù)同樣適用于其它基于MAXQ?的微控制器,該微控制器具有能夠驅(qū)動1-Wire通信協(xié)議的通用I/O (GPIO)引腳。

介紹

許多微控制器包括定時器電路,但只有少數(shù)微控制器包括電池備份實時時鐘(RTC)。然而,許多應用需要RTC,使用1-Wire網(wǎng)絡可以輕松添加RTC。本文介紹如何將支持1-Wire協(xié)議的RTC添加到基于微控制器的系統(tǒng)中。包含必要的代碼。本文解釋了同樣適用于通用I/O (GPIO)引腳能夠驅(qū)動1-Wire通信協(xié)議的微控制器的原理和技術(shù)。

設計目標

本演示展示了如何使用1-Wire接口實現(xiàn)以下操作的方法:

讀取所選 RTC 的 64 位 ROM ID

啟動和停止 RTC

讀取 RTC 的當前值

將 RTC 設置為新值

該演示還將以可讀格式顯示當前 RTC 值,即從原始秒轉(zhuǎn)換為年/月/日/時間格式。它將允許用戶通過增加各種轉(zhuǎn)換值(例如,年,月,日)來修改時鐘值,而不是計算并輸入秒的新值。

對于存儲日期/時間值秒數(shù)的任何應用程序,我們必須選擇一個零基線。對于此應用程序,該基線是 1 年 2000 月 12 日上午 00:00:00000000,其原始秒數(shù)為零 (<>h)。

系統(tǒng)設置

1-Wire接口是本文的基礎。它允許您將支持1-Wire協(xié)議的RTC添加到任何微控制器中。本例將使用DS1904 RTC i按鈕?。該應用使用MAXQ610微控制器,因為它可以很容易地與RTC通信,設置時鐘和控制值,并在原始秒和相應的日歷日期之間進行轉(zhuǎn)換,即使使用匯編語言也是如此。

低功耗MAXQ610非常適合便攜式應用,但缺少電池供電的RTC。但是,您可以使用其GPIO引腳之一將此微控制器連接到專用RTC。微控制器的演示代碼是使用基于匯編的MAX-IDE環(huán)境編寫的。設計工作在Maxim評估(EV)板MAXQ610-KIT上。源代碼、項目文件和其他文檔均可下載

運行應用程序

您需要以下硬件來運行演示代碼:

MAXQ610評估板

5V 直流電源

串行到JTAG或USB到JTAG接口板

JTAG編程電纜(2×5帶狀電纜,帶0.100in引腳連接器

直通 DB9 串行接口電纜

具有可用 COM 端口或 USB 轉(zhuǎn)串行適配器的電腦

DS1904L-F5# RTC i按鈕

DS9094F+ 通孔安裝 i按鈕夾

代碼在MAXQ610評估板上運行。原型設計區(qū)域安裝了一個 i 按鈕夾 (DS9094F+),在 i 按鈕夾中插入了一個 DS1904L-F5# RTC i按鈕。然后從 i按鈕夾進行連接:

將i按鈕夾的接地引腳(與DS1904背面/未標記側(cè)接觸的夾頂側(cè)標有“+”的引腳)連接到MAXQ610評估板上的GND測試點之一。

將iButton夾子的數(shù)據(jù)引腳(夾子內(nèi)側(cè)接觸DS1904正面/標記側(cè)的引腳)連接到MAXQ2評估板上的端口引腳P0.3 (接頭引腳P1.610)。

您還需要以下軟件:

MAX-IDE匯編語言開發(fā)環(huán)境,用于MAXQ微控制器

微控制器工具包 (MTK) 或其他具有“啞終端”模式的終端仿真器

MAX-IDE環(huán)境的最新安裝包和文檔可在MAXQ RISC微控制器頁面找到。

RTC的數(shù)據(jù)通過1-Wire協(xié)議串行傳輸;只需要一個數(shù)據(jù)引線和一個接地回路。該 RTC 包含一個唯一的 64 位 ID,在 ROM 中出廠光刻,以及一個作為二進制計數(shù)器實現(xiàn)的 RTC/日歷。它位于耐用的MicroCan包裝中,可防塵,防潮和防震。該封裝幾乎可以安裝在任何表面上,包括印刷電路板 (PCB) 和塑料鑰匙扣。運行時,RTC 為使用微控制器的任何電子設備或嵌入式應用添加日歷日期、時間和日期戳、秒表、小時計、間隔計時器和日志功能。

RTC 包含一個分辨率為 32 秒的 1 位計數(shù)器,可提供大約 136 年的范圍。保持時鐘運行所需的所有硬件,包括32kHz晶體和電池,都密封在內(nèi)部。所得器件的使用壽命超過 10 年,在室溫為 +2°C 時,時鐘精度約為每月 ±25 分鐘。 工作模式(停止或運行)和時鐘計數(shù)器的值可通過1-Wire接口讀取或?qū)懭搿?/p>

驅(qū)動1-Wire網(wǎng)絡

1-Wire接口通過單線和單接地回路提供電源和通信。這意味著單個端口引腳使微控制器能夠與1-Wire傳感器通信。為在1-Wire網(wǎng)絡上工作開發(fā)了各種傳感器和其他組件。

1-Wire網(wǎng)絡采用單主機和多個從機,采用多點配置。時序要求非常靈活,允許所有從站以高達16kbps的通信速度與主站同步。每個1-Wire傳感器都有一個全球唯一的64位ROM ID,因此1-Wire主站可以單獨、精確地選擇從機,無論它們在網(wǎng)絡上的物理位置如何。

1-Wire線路以漏極開路模式工作:主站(以及從機,當需要輸出時)通過將線路拉至地來指示“零”,或者通過讓線路浮高來指示“一”。此操作通常通過線路和V之間連接的分立上拉電阻來實現(xiàn)抄送.端口引腳具有弱上拉模式的微控制器(如MAXQ610)可以簡單地將端口引腳切換回該模式,讓線路高懸;無需外部電阻。由于主機和從機將線路拉低且從不主動拉高,因此1-Wire網(wǎng)絡以有線OR配置工作。這種方法可防止多個從站同時嘗試在1-Wire總線上傳輸時發(fā)生線路沖突。

為了驅(qū)動1-Wire網(wǎng)絡,微控制器使用軟件在單個引腳上生成時隙。所有時隙均由1-Wire主機啟動,因此當1-Wire線路未與從器件通信時,微控制器無需監(jiān)控<>-Wire線路。

復位時隙寬約為 1ms。在前半段時段,主機(MAXQ610)將1-Wire線保持在低電平。時隙進行到一半時,它釋放1-Wire線并使其漂浮在高處。線路上存在的任何1-Wire從站都會在后半段通過復位并拉下線路來響應。然后,從站產(chǎn)生存在脈沖,向主站指示一個或多個從站存在并準備通信。

寫入時隙的寬度為60μs至120μs,由主機用于將位(0或1)傳輸?shù)揭粋€或多個從機。兩種類型的寫入時隙都從主站將線路拉低至少一微秒開始。為了傳輸 1,主站隨后在剩余的時間段內(nèi)釋放線路(讓它高浮動)。為了傳輸 0,主站將線路保持低電平,直到時隙結(jié)束。

讀取時隙的寬度為60μs至120μs,由主機用于從從器件讀取位(0或1)。時隙從主站將線路拉低至少一微秒開始。然后,主機釋放線路,允許從機將其保持在低電平(0)或使其浮動到高處(1)。在時隙的中途,主機對線路進行采樣,以從從機讀取位值。

MAXQ610在12MHz頻率下以每微秒約12個指令周期運行,因此在軟件中使用端口引腳(P1.2)即可輕松執(zhí)行標準的0-Wire協(xié)議。它以類似的方式實現(xiàn)讀取時隙。注意,1-Wire總線上的所有數(shù)據(jù)字節(jié)首先傳輸最低有效位(LSB)。

1-Wire總線上的上拉電阻值根據(jù)網(wǎng)絡上的器件數(shù)量而變化,但通常額定值為4kΩ至5kΩ。相反,MAXQ610端口引腳上的弱上拉電阻在15kΩ至40kΩ之間變化,取決于工作電壓。為了避免1-Wire總線從低電平狀態(tài)高電平浮動時出現(xiàn)過長的時間間隔,該代碼會短暫驅(qū)動具有正常高電平狀態(tài)的總線(通過P2.0),在將P2.0設置為正常的弱上拉模式之前,將總線“捕捉”到高電平狀態(tài)。此操作不會對1-Wire總線造成中斷,前提是避免了從機可能嘗試將總線拉低的時間間隔?;蛘撸梢栽?-Wire總線上放置一個物理外部上拉電阻,然后在標準低電平模式下驅(qū)動端口引腳(對于零狀態(tài)),將端口引腳驅(qū)動至三態(tài)模式(對于高狀態(tài))。

啟動、停止和設置時鐘

由于1-Wire總線上可能存在多個1-Wire器件,因此與這些器件的通信分兩個階段進行??偩€主控器首先選擇一個1-Wire器件進行通信,然后發(fā)出通信信號2總線主控器發(fā)送復位脈沖后,1-Wire總線上的所有從器件將返回到默認的未選中狀態(tài)。然后,總線主站可以使用幾個命令來選擇將在第二階段與之通信的設備。以下命令使用與每個從設備關(guān)聯(lián)的 64 位 ROM ID。所有1-Wire器件都支持這些命令。

跳過 ROM [CCh]

此單字節(jié)命令激活總線上的所有從設備。如果只有一個1-Wire器件,或者總線主控器需要向總線上的所有1-Wire器件發(fā)送相同的命令,則此功能非常有用。上述應用總線上只有一個器件(例如DS1904 RTC),因此總線主控器(例如MAXQ610微控制器)在讀取或?qū)懭隦TC之前始終使用此命令激活RTC。

讀取只讀存儲器 [33小時]

此單字節(jié)命令激活總線上的所有從設備,并使它們將其64位ROM ID值傳輸回總線主站。由于它激活所有從設備,因此只能用于單從系統(tǒng)。否則,多個從設備在嘗試同時傳輸其ROM ID時將導致數(shù)據(jù)沖突。由于總線上只有一個器件(DS1904),MAXQ610在開始時使用此命令讀取DS1904的ROM ID。

匹配光盤 [55h]

此命令從1-Wire總線上的多個從機中選擇一個從機??偩€主站傳輸此命令后,通過傳輸要選擇的從設備的64位ROM ID進行跟進。具有匹配ROM ID的器件通過進入活動狀態(tài)進行響應,而總線上的所有其他器件進入非活動狀態(tài),等待總線主站的下一次1-Wire復位。(此處描述的應用程序中未使用此命令。

搜索 ROM [F0h]

此命令允許總線主站使用迭代發(fā)現(xiàn)過程來確定1-Wire總線上一個或多個從器件的ROM ID值3(此處描述的應用中未使用此命令。

讀取和寫入時鐘和控制值

當總線主站使用跳過ROM或讀取ROM命令選擇1-Wire從器件(即RTC、DS1904)時,該器件即可接受特定于它的1-Wire命令。這些命令(圖 1)詳述如下:

讀取時鐘 [66h]

該命令允許總線主站讀取DS1904的器件控制字節(jié)和4字節(jié)(32位)RTC值。器件控制字節(jié)確定驅(qū)動RTC的32kHz振蕩器是運行還是停止。如下面的代碼所示,只有一個命令同時讀取設備控制字節(jié)和時鐘值。即使不需要這兩個值,也必須在設備輸出時鐘數(shù)據(jù)之前讀取設備控制字節(jié)。

寫入時鐘 [99h]

作為讀取時鐘的補充,該命令允許總線主機為器件控制字節(jié)和DS1904 4字節(jié)時鐘計數(shù)器設置新值。請注意,在新值生效之前,必須寫入全部5個字節(jié)并發(fā)送一個1-Wire復位脈沖。上述應用代碼包括單獨設置器件控制字節(jié)和時鐘值的例程,首先從DS5讀取1904字節(jié)數(shù)據(jù)(1字節(jié)器件控制加上4字節(jié)時鐘計數(shù)器),然后寫回數(shù)據(jù)并進行適當?shù)母摹?/p>

poYBAGP0J-mANaVXAABPsew4GJQ688.gif?imgver=1


圖1.這些DS1904時鐘功能命令取自數(shù)據(jù)資料。

轉(zhuǎn)換時間和日期值

若要將原始秒數(shù)轉(zhuǎn)換為可打印形式,應用程序?qū)⒎謩e確定每個日期和時間字段(年、月、日、小時、分鐘和秒)的值,從最大的字段(年)開始向下工作:

秒≥(每年秒數(shù)),從秒數(shù)中減去(每年秒數(shù))并增加年份。

秒≥(每月秒數(shù)),從秒數(shù)中減去(每月秒數(shù))并增加月。

秒數(shù)≥(每天秒數(shù)),從秒數(shù)中減去(每天秒數(shù))并增加“天”。

秒數(shù)≥(每小時秒數(shù)),從秒數(shù)中減去(每小時秒數(shù))并增加小時數(shù)。

當秒≥ 60 時,從秒中減去 60 并增加分鐘。

秒的剩余值是第二個字段。

即使總線主站為除法提供硬件支持,簡單的除法運算也不足以計算前兩個字段值(年和月)。這是因為每個字段單位的秒數(shù)會因閏年(影響年和月的值)和每月天數(shù)(僅影響月)的影響而變化。例如,從 2000 年(閏年)開始:

2000 年每年的秒數(shù))= 366(天)× 24(小時/天)× 60(分鐘/小時)× 60(秒/分鐘)= 31,622,400 秒。

標準年份少一天(365 天),這會將秒/年更改為 (31,622,400 - 86,400) = 31,536,000。

因為每四年是閏年,所以我們按如下方式計算年份(請注意,此偽代碼中的第 2、3 和 4 項是相同的)。

如果秒≥(每閏年的秒數(shù)),則從秒中減去(每閏年的秒數(shù))并遞增年份,否則停止。

如果“秒數(shù)”≥(每年秒數(shù)),請從“秒數(shù)”中減去(每年秒數(shù))并遞增“年份”,否則停止。

如果“秒數(shù)”≥(每年秒數(shù)),請從“秒數(shù)”中減去(每年秒數(shù))并遞增“年份”,否則停止。

如果“秒數(shù)”≥(每年秒數(shù)),請從“秒數(shù)”中減去(每年秒數(shù))并遞增“年份”,否則停止。

返回第 1 行。

“月份”字段的值以類似的方式計算:

如果秒≥(一月為秒),則從秒中減去(一月為秒)并遞增月,否則停止。

如果秒≥(二月為秒),則從秒中減去(二月為秒)并遞增月,否則停止。

如果秒≥(三月為秒),則從秒中減去(三月為秒)并遞增月份,否則停止。

繼續(xù)完成剩余的幾個月。

運行演示

要運行演示,請加載并運行應用程序。然后使用DB9串行電纜將MAXQ610評估板從J1 SKT連接到PC上的COM1。啟動 MTK(或其他終端模擬器)并以 1 波特打開 COM38400。初始輸出應類似于以下內(nèi)容:

@
ID: 24B91231000000B2  AC  18F83065

+   18F83065   Apr 10 2013, 02:15:01 pm 
+   18F83066   Apr 10 2013, 02:15:02 pm
+   18F83067   Apr 10 2013, 02:15:03 pm
+   18F83068   Apr 10 2013, 02:15:04 pm
+   18F83069   Apr 10 2013, 02:15:05 pm

第二行代碼包含DS1904 ROM ID值(24B91231000000B2)、器件控制字節(jié)(AC)和當前時鐘值(18F83065)。后續(xù)行中的“+”值表示時鐘正在運行。時間值的刷新和顯示頻率與更改頻率一樣高,應為每秒一次。按“-”停止時鐘。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7552

    瀏覽量

    151422
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3248

    瀏覽量

    114797
  • 電池
    +關(guān)注

    關(guān)注

    84

    文章

    10576

    瀏覽量

    129679
收藏 人收藏

    評論

    相關(guān)推薦

    實時時鐘芯片應用設計時必須要考慮的事項

    實時時鐘芯片(RTC)允許一個系統(tǒng)能同步或記錄事件,給用戶一個易理解的時間參考,這里分享一些實時時鐘芯片的設計資料,以及工程師在應用設計時應為了避開設
    發(fā)表于 07-25 11:08 ?5524次閱讀
    <b class='flag-5'>實時時鐘</b>芯片應用設<b class='flag-5'>計時</b>必須要考慮的事項

    STM32 RTC實時時鐘(一)

    STM32處理內(nèi)部集成了實時時鐘控制器(RTC),因此在實現(xiàn)實時時鐘功能時,無須外擴時鐘芯片即
    的頭像 發(fā)表于 07-22 15:41 ?4708次閱讀
    STM32 RTC<b class='flag-5'>實時時鐘</b>(一)

    實時時鐘芯片DS3231應用筆記,使用指南,F(xiàn)AQ全集

    0ppm的精度,最終達到提高時鐘精度的目的。 實時時鐘RTC DS3231與8051微控制器的接口本應用筆記介紹了DS3231與8051微控制器的連接方式,并提供了一個基本的接口程序。
    發(fā)表于 03-14 11:05

    定時中的實時時鐘(RTC)

    實時時鐘(RTC)是專用于維持一秒時基的計時器。此外,RTC通常用于在軟件或硬件中跟蹤時鐘時間和日歷日期。RTC的許多功能是非常專業(yè)的,是維持高精度和非??煽康牟僮魉匦璧?。
    發(fā)表于 09-03 22:47

    基于實時時鐘芯片X1228的電源控制器設計

    基于實時時鐘芯片X1228的電源控制器設計:介紹多功能實時時鐘芯片X1228的內(nèi)部結(jié)構(gòu)、功能、特點以及在開放式實驗室管理
    發(fā)表于 05-12 17:13 ?53次下載

    MAXQ1004 具有AES加密引擎的微控制器您的系統(tǒng)提供

    Maxim最新推出的安全微控制器增加了先進的認證功能,幾乎不影響器件的電源預算。
    發(fā)表于 07-04 12:19 ?926次閱讀

    第一部分:MAX32630微控制器的設置

    在本視頻短片中,Mohamed介紹利用實時時鐘(RTC)電路計時的不同方法。Mohamed演示在智能手表項目中保證MAX32630微控制器的內(nèi)部RTC正常運行所要求的設置。關(guān)于使用深
    的頭像 發(fā)表于 10-08 03:19 ?4837次閱讀

    TouchGFX中增加了功能 方便開發(fā)吸引眼球的用戶界面

    意法半導體在STM32微控制器(MCU)軟件框架TouchGFX中增加了功能,方便設備廠商家用電器、家庭自動化、工業(yè)控制、醫(yī)療設備和穿戴
    的頭像 發(fā)表于 01-15 14:19 ?3435次閱讀

    Steam在Steam Client Beta中增加了對DualSense控制器的支持

    Steam在Steam Client Beta中增加了對DualSense控制器的支持。的的Xbox系列X已經(jīng)用戶的選擇,但現(xiàn)在的DualSense是蓄勢待發(fā),SANS就正在制定上的一些功能
    的頭像 發(fā)表于 12-18 10:57 ?2198次閱讀

    新的三端穩(wěn)壓增加了功能

    新的三端穩(wěn)壓增加了功能
    發(fā)表于 04-23 11:22 ?3次下載
    新的三端穩(wěn)壓<b class='flag-5'>器</b><b class='flag-5'>增加了</b><b class='flag-5'>功能</b>

    AiP8563時鐘芯片提供精確的時間電子系統(tǒng)提供精確時間

    實時時鐘芯片是日常生活中應用最廣泛的消費類電子產(chǎn)品之一,其提供精確實時時間或者電子系統(tǒng)提供精確
    的頭像 發(fā)表于 08-26 12:01 ?4647次閱讀
    AiP8563<b class='flag-5'>時鐘</b>芯片提供<b class='flag-5'>精確</b>的時間<b class='flag-5'>為</b>電子<b class='flag-5'>系統(tǒng)</b>提供<b class='flag-5'>精確</b>時間

    將硬件實時時鐘 (RTC) 和篡改管理單元 (TAMP) 與 STM32 微控制器一起使用

    將硬件實時時鐘 (RTC) 和篡改管理單元 (TAMP) 與 STM32 微控制器一起使用
    發(fā)表于 11-21 08:11 ?1次下載
    將硬件<b class='flag-5'>實時時鐘</b> (RTC) 和篡改管理單元 (TAMP) 與 STM32 <b class='flag-5'>微控制器</b>一起使用

    AN4759_如何使用STM32L1和L4系列微控制器在低功耗模式下的硬件實時時鐘

    AN4759_如何使用STM32L1和L4系列微控制器在低功耗模式下的硬件實時時鐘
    發(fā)表于 11-21 17:07 ?0次下載
    AN4759_如何使用STM32L1和L4系列<b class='flag-5'>微控制器</b>在低功耗模式下的硬件<b class='flag-5'>實時時鐘</b>

    業(yè)界轉(zhuǎn)向MEMS以獲得精確實時時鐘

    實時時鐘 (RTC) 不斷發(fā)展,通過變得更小、更準確來跟上其使用和應用的變化。這種演變和適應背后的主要驅(qū)動力是一種新的諧振技術(shù)——微機電系統(tǒng)(MEMS)。本應用筆記探討了計時精度的進
    的頭像 發(fā)表于 01-09 15:22 ?1340次閱讀

    新年倒計時制作的實時時鐘

    電子發(fā)燒友網(wǎng)站提供《新年倒計時制作的實時時鐘.zip》資料免費下載
    發(fā)表于 06-19 10:19 ?0次下載
    <b class='flag-5'>為</b>新年倒<b class='flag-5'>計時</b>制作的<b class='flag-5'>實時時鐘</b>