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

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

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

DS1307與兼容8051的微控制器接口

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2023-03-01 13:52 ? 次閱讀

本應(yīng)用筆記提供了如何將DS1307實時時鐘(RTC)連接至微控制器信息,并提供了一些訪問該器件的示例代碼。

介紹

DS1307串行實時時鐘集成了2線串行接口,可使用兼容8051的微控制器進行控制。本例中的DS1307直接連接到DS5000微控制器上的兩個I/O端口,2線握手由低電平驅(qū)動器處理,本應(yīng)用筆記對此進行了討論。

DS1307 說明

DS1307串行實時時鐘為低功耗、全BCD時鐘/日歷外加56字節(jié)非易失性SRAM。地址和數(shù)據(jù)通過2線雙向總線串行傳輸。時鐘/日歷提供秒、分鐘、小時、星期、日期、月份和年份信息。對于少于 31 天的月份,月末日期會自動調(diào)整,包括對閏年的更正。時鐘以 24 小時制或 12 小時制運行,帶 AM/PM 指示器。DS1307內(nèi)置電源檢測電路,可檢測電源故障并自動切換到電池供電

DS1307 工作原理

DS1307作為串行總線上的從器件工作。通過實現(xiàn) START 條件并提供設(shè)備標識碼后跟寄存器地址來獲取訪問權(quán)限。后續(xù)寄存器可以按順序訪問,直到執(zhí)行 STOP 條件。啟動和停止條件是使用隨附的DS5000代碼中的低電平驅(qū)動器、SEND_START和SEND_STOP生成的。此外,子程序SEND_BYTE和READ_BYTE提供在DS2之間寫入和讀取8位字所需的1307線握手。

硬件配置

系統(tǒng)配置如圖 1 所示。DS1307的2線總線連接到DS5000的兩個I/O端口引腳:SCL - P1.0、SDA - P1.1。五世DD電壓為5V,RP= 5KΩ,DS5000采用12 MHz晶體。另一個外圍設(shè)備可以是識別2線協(xié)議的任何其他設(shè)備,例如DS1621數(shù)字溫度計和恒溫器。與D5000的接口是使用DS5000T套件硬件和軟件完成的。該開發(fā)套件允許將PC用作啞終端,使用DS5000的串行端口與鍵盤和顯示器進行通信。

poYBAGP-6CuAHol3AAAU6jDkQEc120.gif

圖1.典型的2線總線配置。

定義了以下總線協(xié)議(參見圖 2)。

在數(shù)據(jù)傳輸過程中,只要時鐘線為高電平,數(shù)據(jù)線必須保持穩(wěn)定。時鐘線為高電平時數(shù)據(jù)線的變化將被解釋為控制信號。

因此,定義了以下總線條件:

開始數(shù)據(jù)傳輸:當(dāng)時鐘線為高電平時,數(shù)據(jù)線的狀態(tài)從高電平到低電平的變化定義了START條件。

停止數(shù)據(jù)傳輸:當(dāng)時鐘線為高電平時,數(shù)據(jù)線的狀態(tài)從低到高的變化定義了 STOP 條件。

數(shù)據(jù)有效:當(dāng)在START條件之后,數(shù)據(jù)線在時鐘信號的高周期內(nèi)保持穩(wěn)定時,數(shù)據(jù)線的狀態(tài)表示有效數(shù)據(jù)。線路上的數(shù)據(jù)必須在時鐘信號的低電平期間更改。每個數(shù)據(jù)位有一個時鐘脈沖。

每個數(shù)據(jù)傳輸都以 START 條件啟動,并以 STOP 條件終止。在 START 和 STOP 條件之間傳輸?shù)臄?shù)據(jù)字節(jié)數(shù)不受限制,由主設(shè)備決定。信息按字節(jié)傳輸,每個接收器用第九位確認。

確認:每個接收設(shè)備在尋址時,都必須在接收每個字節(jié)后生成確認。主設(shè)備必須生成與此應(yīng)答位關(guān)聯(lián)的額外時鐘脈沖。

確認的器件必須在確認時鐘脈沖期間拉下SDA線,以使SDA線在確認相關(guān)時鐘脈沖的高電平期間穩(wěn)定為低電平。當(dāng)然,必須考慮設(shè)置和保持時間。主站必須通過不從站輸出的最后一個字節(jié)上生成應(yīng)答位來向從站發(fā)出數(shù)據(jù)結(jié)束信號。在這種情況下,從機必須將數(shù)據(jù)線保持高電平,以使主站能夠產(chǎn)生STOP條件。

圖2詳細介紹了如何在2線總線上完成數(shù)據(jù)傳輸。根據(jù) R/W位的狀態(tài),可以進行兩種類型的數(shù)據(jù)傳輸:

主發(fā)射器到從接收器的數(shù)據(jù)傳輸。主站傳輸?shù)牡谝粋€字節(jié)是從地址。接下來是一些數(shù)據(jù)字節(jié)。從站在每個接收到的字節(jié)后返回一個應(yīng)答位。首先使用最高有效位 (MSB) 傳輸數(shù)據(jù)。

從發(fā)射器到主接收器的數(shù)據(jù)傳輸。第一個字節(jié)(從地址)為 由主人傳輸。然后,從站返回一個應(yīng)答位。接下來是從站傳輸多個數(shù)據(jù)字節(jié)。主站在所有接收到的字節(jié)(最后一個字節(jié)除外)之后返回一個應(yīng)答位。在最后一個接收的字節(jié)的末尾,返回不確認。

pYYBAGP-6CyACZgwAAAZW5Gygcs716.gif

圖2.2線串行總線上的數(shù)據(jù)傳輸。

主器件生成所有串行時鐘脈沖以及啟動和停止條件。傳輸以“停止”條件或重復(fù)的“開始”條件結(jié)束。由于重復(fù)的 START 條件也是下一次串行傳輸?shù)拈_始,因此不會釋放總線。首先使用最高有效位 (MSB) 傳輸數(shù)據(jù)。

DS1307可以工作在以下兩種模式:

從接收模式(DS1307寫入模式):串行數(shù)據(jù)和時鐘通過SDA和SCL接收。接收到每個字節(jié)后,將發(fā)送一個應(yīng)答位。啟動和停止條件被識別為串行傳輸?shù)拈_始和結(jié)束。地址識別由硬件在接收到從地址和方向位后執(zhí)行(參見圖3)。地址字節(jié)是主站生成啟動條件后收到的第一個字節(jié)。地址字節(jié)包含7位DS1307地址,即1101000,后跟方向位(R//W),對于寫入,方向位為0。接收并解碼地址字節(jié)后,DS1307在SDA線路上輸出應(yīng)答。DS1307確認從地址+寫位后,主機向DS1307發(fā)送寄存器地址。這將設(shè)置DS1307上的寄存器指針。然后,主機開始發(fā)送每個字節(jié)的數(shù)據(jù),DS1307確認接收到的每個字節(jié)。主站將生成停止條件以終止數(shù)據(jù)寫入。

poYBAGP-6C2AI-EaAAAVZ2tDnbQ143.gif

發(fā)送器模式(DS1307讀取模式):第一個字節(jié)的接收和處理方式與從機接收機模式相同。但是,在此模式下,方向位將指示傳遞方向相反。串行數(shù)據(jù)由DS1307在SDA上傳輸,而串行時鐘由SCL輸入。START 和 STOP 條件被識別為串行傳輸?shù)拈_始和結(jié)束(請參閱圖 4)。地址字節(jié)是主站生成啟動條件后收到的第一個字節(jié)。地址字節(jié)包含7位DS1307地址,即1101000,后跟方向位(R/W),讀取時為1。接收并解碼地址字節(jié)后,DS1307在SDA線路上輸入確認。然后,DS1307從寄存器指針指向的寄存器地址開始發(fā)送數(shù)據(jù)。如果在啟動讀取模式之前未寫入寄存器指針,則讀取的第一個地址是寄存器指針中存儲的最后一個地址。DS1307必須由主機發(fā)送一個非應(yīng)答位以終止讀操作。

pYYBAGP-6C6AfYw1AAAZWEhM7S0079.gif

圖4.數(shù)據(jù)讀取—從發(fā)送器模式。

軟件操作

DS5000 接口

附錄1中的軟件用于通過5000線接口將DS1307與DS2連接。DS5000使用達拉斯半導(dǎo)體公司的DS5000T評估板進行編程,該評估板允許將PC用作啞終端。DS5T評估套件隨附的KIT5000K軟件環(huán)境提供了一個高級接口,用于將應(yīng)用軟件加載到DS5000或通過程序命令設(shè)置其配置參數(shù)。KIT5K軟件包括一個啞終端仿真器,允許用戶在DS5000中運行應(yīng)用軟件,通過PC COM端口與用戶通信。

DS1307 源代碼

附錄中代碼的第一部分用于配置DS5000與PC進行串行通信。代碼的開頭還有用于控制演示軟件的MASTER_CONTROLLER子例程。

緊跟在MASTER_CONTROLLER子程序之后的子程序是用于控制2線接口的低級驅(qū)動器。它們不是DS1307特有的,但可以與任何2線兼容的從器件配合使用。這些子例程是:

SEND_START

此子例程用于在 2 線總線上生成啟動條件。

SEND_STOP

此子例程用于在 2 線總線上生成 Stop 條件。

SEND_BYTE

此子例程通過 8 線總線發(fā)送一個 2 位字 MSB,優(yōu)先級為 9千確認脈沖的時鐘脈沖。

READ_BYTE

此子例程通過 8 線總線讀取 2 位字。它檢查要清除的 LASTREAD 標志,指示何時從從設(shè)備進行最后一次讀取。如果不是最后一次讀取,DS5000在9千時鐘,如果這是從設(shè)備最后一次讀取,DS5000發(fā)送“未確認”。

SCL_HIGH

此子例程將 SCL 線路從低到高轉(zhuǎn)換,并確保 SCL 線路在繼續(xù)之前處于高電平。

延遲和DELAY_4

包括這兩個子程序是為了確保保持2線總線時序。

附錄中的其余代碼專門用于演示DS1307的功能。演示的功能包括:

設(shè)置時間

時間從鍵盤讀入并存儲在DS5000暫存器存儲器中。然后通過2線接口傳輸?shù)紻S1307。

設(shè)置內(nèi)存

從鍵盤讀入單個十六進制字節(jié),并寫入DS1307的整個用戶RAM。

讀取日期/時間

日期和時間通過2線總線讀取,并存儲在DS5000暫存器存儲器中。然后將其寫入屏幕。這一直持續(xù)到按下鍵盤上的鍵為止。

讀取內(nèi)存

DS1307的整個用戶RAM被讀入DS5000暫存器存儲器,然后寫入PC監(jiān)視器。

OSC 開/關(guān)

DS1307時鐘振蕩器可以打開或關(guān)閉。

SQW/OUT On/ SQW/OUT Off

可以打開或關(guān)閉 SQW/OUT。它將以 1 Hz 切換。

結(jié)論

已經(jīng)表明,將DS1307或任何其他2線從器件連接到8051兼容微控制器非常簡單。唯一需要注意的是,微控制器上的低電平驅(qū)動器不會違反2線定時規(guī)范。為此,已將延遲子例程插入到代碼中。表1中的值是在用于開發(fā)本應(yīng)用筆記的硬件設(shè)置中觀察到的實際時序參數(shù)。

參數(shù) 象征 實際 單位
標準及校正實驗所時鐘頻率 fSCL 59 千 赫
停止和啟動條件之間的巴士空閑時間 tBUF 5.7 微秒
保持時間(重復(fù))啟動條件 tHD:STA 6.2 微秒
標準及校正實驗所時鐘的低周期 tLOW 10.5 微秒
標準及校正實驗表時鐘的高周期 tHIGH 6.5米 微秒
重復(fù)啟動條件的設(shè)置時間 tSU:STA 5.3 微秒
數(shù)據(jù)保持時間 tHD:DAT 5.5 微秒
數(shù)據(jù)設(shè)置時間 tSU:DAT 3.1 微秒
停止條件的設(shè)置時間
tSU:STO
5.4 微秒

圖3.數(shù)據(jù)寫入—從接收機模式。

審核編輯:郭婷

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

    關(guān)注

    48

    文章

    7334

    瀏覽量

    150088
  • 驅(qū)動器
    +關(guān)注

    關(guān)注

    51

    文章

    7997

    瀏覽量

    145005
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7365

    瀏覽量

    163088
收藏 人收藏

    評論

    相關(guān)推薦

    DS1307 PIC16f690

    控制器:PIC16F690RTC:DS1307IT對Proteus工作正常,但它不適用于我的實際硬件。以上來自于百度翻譯 以下為原文 Controller:-PIC16F690RTC:DS1307
    發(fā)表于 08-24 15:58

    怎么將ds1307與stm8s105c6接口

    你好,我正在嘗試將ds1307與我的stm8s105c6發(fā)現(xiàn)接口我無法從哪里開始。我不清楚rtc是如何工作的。我試圖為ds1307的stm8s找到任何庫。你可以幫幫我嗎以上來自于谷歌翻譯以下為原文
    發(fā)表于 02-27 16:33

    請問如何使定時DS1307的定時同步?

    我需要計算毫秒。我使用DS1307,所以它給了我HR,Min,SEC的精確值,但我也想要毫秒。我已經(jīng)制定了一個程序,計時1ms定時。由于我也是計時的新手,我如何用DS1307定時
    發(fā)表于 09-10 08:08

    帶有ATtiny85/DS1307的時鐘開發(fā)板

    描述ATtiny85 TinyClock DS1307 DIP帶有 ATtiny85 微控制器、DS1307 實時時鐘和 2032 電池座的時鐘開發(fā)板。PCB+展示
    發(fā)表于 08-19 07:20

    DS1307 pdf datasheet (64 x 8,

    DS1307 pdf
    發(fā)表于 10-22 10:18 ?77次下載

    DS1307應(yīng)用電路

    DS1307 pdf datasheet (64 x 8, Serial, I2C Real-Time Clock)
    發(fā)表于 10-22 18:26 ?3546次閱讀
    <b class='flag-5'>DS1307</b>應(yīng)用電路

    DS1307接口的與8051兼容微控制器-Interfaci

    Abstract: This application note provides information on how to interface a DS1307 real-time clock
    發(fā)表于 04-21 11:04 ?1062次閱讀
    <b class='flag-5'>DS1307</b><b class='flag-5'>接口</b>的與<b class='flag-5'>8051</b><b class='flag-5'>兼容</b><b class='flag-5'>微控制器</b>-Interfaci

    DS1302 RTC與8051微控制器接口

    摘要:本應(yīng)用筆記說明了DS1302 RTC通過3線接口8051微控制器的連接方式,設(shè)計實例包括電路原理圖和C語言接口程序。
    發(fā)表于 04-21 11:14 ?2272次閱讀
    <b class='flag-5'>DS</b>1302 RTC與<b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>的<b class='flag-5'>接口</b>

    DS3231與8051微控制器接口

    摘要:本應(yīng)用筆記提供了一個DS3231與8051微控制器接口的硬件電路和軟件例程。 圖1. DS3231引
    發(fā)表于 04-21 11:16 ?2001次閱讀
    <b class='flag-5'>DS</b>3231與<b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>的<b class='flag-5'>接口</b>

    DS1305 RTC與8051微控制器接口

    摘要:本文介紹DS1305實時時鐘與8051微控制器DS2250的連接,所提供的基本接口程序用C語言編寫。
    發(fā)表于 04-21 11:16 ?1580次閱讀
    <b class='flag-5'>DS</b>1305 RTC與<b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>的<b class='flag-5'>接口</b>

    DS13078051兼容微控制器接口

    硬件配置 系統(tǒng)配置如圖1所示。DS1307有相連的ds5000兩端口的I/O引腳2線總線:SCL - P1.0、P1.1 SDA -。VDD電壓為5V,RP = 5k和ds5000是使用一個12
    發(fā)表于 04-10 11:11 ?18次下載
    <b class='flag-5'>DS1307</b>與<b class='flag-5'>8051</b><b class='flag-5'>兼容</b>的<b class='flag-5'>微控制器</b><b class='flag-5'>接口</b>

    DS1307 時鐘/定時 - 實時時鐘

    電子發(fā)燒友網(wǎng)為你提供Maxim(Maxim)DS1307相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有DS1307的引腳圖、接線圖、封裝手冊、中文資料、英文資料,DS1307真值表,DS1307管腳等資
    發(fā)表于 11-21 21:25
    <b class='flag-5'>DS1307</b> 時鐘/定時 - 實時時鐘

    Arduino DS1307 RTC時鐘

    電子發(fā)燒友網(wǎng)站提供《Arduino DS1307 RTC時鐘.zip》資料免費下載
    發(fā)表于 11-22 09:15 ?4次下載
    Arduino <b class='flag-5'>DS1307</b> RTC時鐘

    DS1302與8051微控制器接口

    本應(yīng)用介紹如何使用3線接口DS1302 RTC連接至8051微控制器。該示例包括用 C 語言編寫的原理圖和示例軟件。
    的頭像 發(fā)表于 01-09 17:01 ?743次閱讀
    <b class='flag-5'>DS</b>1302與<b class='flag-5'>8051</b>型<b class='flag-5'>微控制器</b><b class='flag-5'>接口</b>

    DS1620與DS5000/8051微控制器接口

    本應(yīng)用筆記向用戶介紹DS5000(兼容8051微控制器DS1620數(shù)字溫度傳感
    的頭像 發(fā)表于 03-01 15:29 ?569次閱讀
    <b class='flag-5'>DS</b>1620與<b class='flag-5'>DS</b>5000/<b class='flag-5'>8051</b><b class='flag-5'>微控制器</b><b class='flag-5'>接口</b>