0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

星星科技指导员 来源:ADI 作者:ADI 2023-03-01 13:52 次阅读

本应用笔记提供了如何将DS1307实时时钟(RTC)连接至微控制器信息,并提供了一些访问该器件的示例代码。

介绍

DS1307串行实时时钟集成了2线串行接口,可使用兼容8051的微控制器进行控制。本例中的DS1307直接连接到DS5000微控制器上的两个I/O端口,2线握手由低电平驱动器处理,本应用笔记对此进行了讨论。

DS1307 说明

DS1307串行实时时钟为低功耗、全BCD时钟/日历外加56字节非易失性SRAM。地址和数据通过2线双向总线串行传输。时钟/日历提供秒、分钟、小时、星期、日期、月份和年份信息。对于少于 31 天的月份,月末日期会自动调整,包括对闰年的更正。时钟以 24 小时制或 12 小时制运行,带 AM/PM 指示器。DS1307内置电源检测电路,可检测电源故障并自动切换到电池供电

DS1307 工作原理

DS1307作为串行总线上的从器件工作。通过实现 START 条件并提供设备标识码后跟寄存器地址来获取访问权限。后续寄存器可以按顺序访问,直到执行 STOP 条件。启动和停止条件是使用随附的DS5000代码中的低电平驱动器、SEND_START和SEND_STOP生成的。此外,子程序SEND_BYTE和READ_BYTE提供在DS2之间写入和读取8位字所需的1307线握手。

硬件配置

系统配置如图 1 所示。DS1307的2线总线连接到DS5000的两个I/O端口引脚:SCL - P1.0、SDA - P1.1。五世DD电压为5V,RP= 5KΩ,DS5000采用12 MHz晶体。另一个外围设备可以是识别2线协议的任何其他设备,例如DS1621数字温度计和恒温器。与D5000的接口是使用DS5000T套件硬件和软件完成的。该开发套件允许将PC用作哑终端,使用DS5000的串行端口与键盘和显示器进行通信

poYBAGP-6CuAHol3AAAU6jDkQEc120.gif

图1.典型的2线总线配置。

定义了以下总线协议(参见图 2)。

在数据传输过程中,只要时钟线为高电平,数据线必须保持稳定。时钟线为高电平时数据线的变化将被解释为控制信号

因此,定义了以下总线条件:

开始数据传输:当时钟线为高电平时,数据线的状态从高电平到低电平的变化定义了START条件。

停止数据传输:当时钟线为高电平时,数据线的状态从低到高的变化定义了 STOP 条件。

数据有效:当在START条件之后,数据线在时钟信号的高周期内保持稳定时,数据线的状态表示有效数据。线路上的数据必须在时钟信号的低电平期间更改。每个数据位有一个时钟脉冲。

每个数据传输都以 START 条件启动,并以 STOP 条件终止。在 START 和 STOP 条件之间传输的数据字节数不受限制,由主设备决定。信息按字节传输,每个接收器用第九位确认。

确认:每个接收设备在寻址时,都必须在接收每个字节后生成确认。主设备必须生成与此应答位关联的额外时钟脉冲。

确认的器件必须在确认时钟脉冲期间拉下SDA线,以使SDA线在确认相关时钟脉冲的高电平期间稳定为低电平。当然,必须考虑设置和保持时间。主站必须通过不从站输出的最后一个字节上生成应答位来向从站发出数据结束信号。在这种情况下,从机必须将数据线保持高电平,以使主站能够产生STOP条件。

图2详细介绍了如何在2线总线上完成数据传输。根据 R/W位的状态,可以进行两种类型的数据传输:

主发射器到从接收器的数据传输。主站传输的第一个字节是从地址。接下来是一些数据字节。从站在每个接收到的字节后返回一个应答位。首先使用最高有效位 (MSB) 传输数据。

从发射器到主接收器的数据传输。第一个字节(从地址)为 由主人传输。然后,从站返回一个应答位。接下来是从站传输多个数据字节。主站在所有接收到的字节(最后一个字节除外)之后返回一个应答位。在最后一个接收的字节的末尾,返回不确认。

pYYBAGP-6CyACZgwAAAZW5Gygcs716.gif

图2.2线串行总线上的数据传输。

主器件生成所有串行时钟脉冲以及启动和停止条件。传输以“停止”条件或重复的“开始”条件结束。由于重复的 START 条件也是下一次串行传输的开始,因此不会释放总线。首先使用最高有效位 (MSB) 传输数据。

DS1307可以工作在以下两种模式:

从接收模式(DS1307写入模式):串行数据和时钟通过SDA和SCL接收。接收到每个字节后,将发送一个应答位。启动和停止条件被识别为串行传输的开始和结束。地址识别由硬件在接收到从地址和方向位后执行(参见图3)。地址字节是主站生成启动条件后收到的第一个字节。地址字节包含7位DS1307地址,即1101000,后跟方向位(R//W),对于写入,方向位为0。接收并解码地址字节后,DS1307在SDA线路上输出应答。DS1307确认从地址+写位后,主机向DS1307发送寄存器地址。这将设置DS1307上的寄存器指针。然后,主机开始发送每个字节的数据,DS1307确认接收到的每个字节。主站将生成停止条件以终止数据写入。

poYBAGP-6C2AI-EaAAAVZ2tDnbQ143.gif

发送器模式(DS1307读取模式):第一个字节的接收和处理方式与从机接收机模式相同。但是,在此模式下,方向位将指示传递方向相反。串行数据由DS1307在SDA上传输,而串行时钟由SCL输入。START 和 STOP 条件被识别为串行传输的开始和结束(请参阅图 4)。地址字节是主站生成启动条件后收到的第一个字节。地址字节包含7位DS1307地址,即1101000,后跟方向位(R/W),读取时为1。接收并解码地址字节后,DS1307在SDA线路上输入确认。然后,DS1307从寄存器指针指向的寄存器地址开始发送数据。如果在启动读取模式之前未写入寄存器指针,则读取的第一个地址是寄存器指针中存储的最后一个地址。DS1307必须由主机发送一个非应答位以终止读操作。

pYYBAGP-6C6AfYw1AAAZWEhM7S0079.gif

图4.数据读取—从发送器模式。

软件操作

DS5000 接口

附录1中的软件用于通过5000线接口将DS1307与DS2连接。DS5000使用达拉斯半导体公司的DS5000T评估板进行编程,该评估板允许将PC用作哑终端。DS5T评估套件随附的KIT5000K软件环境提供了一个高级接口,用于将应用软件加载到DS5000或通过程序命令设置其配置参数。KIT5K软件包括一个哑终端仿真器,允许用户在DS5000中运行应用软件,通过PC COM端口与用户通信。

DS1307 源代码

附录中代码的第一部分用于配置DS5000与PC进行串行通信。代码的开头还有用于控制演示软件的MASTER_CONTROLLER子例程。

紧跟在MASTER_CONTROLLER子程序之后的子程序是用于控制2线接口的低级驱动器。它们不是DS1307特有的,但可以与任何2线兼容的从器件配合使用。这些子例程是:

SEND_START

此子例程用于在 2 线总线上生成启动条件。

SEND_STOP

此子例程用于在 2 线总线上生成 Stop 条件。

SEND_BYTE

此子例程通过 8 线总线发送一个 2 位字 MSB,优先级为 9千确认脉冲的时钟脉冲。

READ_BYTE

此子例程通过 8 线总线读取 2 位字。它检查要清除的 LASTREAD 标志,指示何时从从设备进行最后一次读取。如果不是最后一次读取,DS5000在9千时钟,如果这是从设备最后一次读取,DS5000发送“未确认”。

SCL_HIGH

此子例程将 SCL 线路从低到高转换,并确保 SCL 线路在继续之前处于高电平。

延迟和DELAY_4

包括这两个子程序是为了确保保持2线总线时序。

附录中的其余代码专门用于演示DS1307的功能。演示的功能包括:

设置时间

时间从键盘读入并存储在DS5000暂存器存储器中。然后通过2线接口传输到DS1307。

设置内存

从键盘读入单个十六进制字节,并写入DS1307的整个用户RAM。

读取日期/时间

日期和时间通过2线总线读取,并存储在DS5000暂存器存储器中。然后将其写入屏幕。这一直持续到按下键盘上的键为止。

读取内存

DS1307的整个用户RAM被读入DS5000暂存器存储器,然后写入PC监视器。

OSC 开/关

DS1307时钟振荡器可以打开或关闭。

SQW/OUT On/ SQW/OUT Off

可以打开或关闭 SQW/OUT。它将以 1 Hz 切换。

结论

已经表明,将DS1307或任何其他2线从器件连接到8051兼容微控制器非常简单。唯一需要注意的是,微控制器上的低电平驱动器不会违反2线定时规范。为此,已将延迟子例程插入到代码中。表1中的值是在用于开发本应用笔记的硬件设置中观察到的实际时序参数。

参数 象征 实际 单位
标准及校正实验所时钟频率 fSCL 59 千 赫
停止和启动条件之间的巴士空闲时间 tBUF 5.7 微秒
保持时间(重复)启动条件 tHD:STA 6.2 微秒
标准及校正实验所时钟的低周期 tLOW 10.5 微秒
标准及校正实验表时钟的高周期 tHIGH 6.5米 微秒
重复启动条件的设置时间 tSU:STA 5.3 微秒
数据保持时间 tHD:DAT 5.5 微秒
数据设置时间 tSU:DAT 3.1 微秒
停止条件的设置时间
tSU:STO
5.4 微秒

图3.数据写入—从接收机模式。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6809

    浏览量

    147626
  • 驱动器
    +关注

    关注

    51

    文章

    7308

    浏览量

    142941
  • 存储器
    +关注

    关注

    38

    文章

    7148

    浏览量

    161979
收藏 人收藏

    评论

    相关推荐

    DS1302和DS1307有什么区别

    DS1302和DS1307有什么区别,电路和编程等有什么不同之处
    发表于 01-18 15:13

    怎么停止ds1307时间

    怎么停止ds1307时间
    发表于 09-28 22:35

    DS1307 PIC16f690

    控制器:PIC16F690RTC:DS1307IT对Proteus工作正常,但它不适用于我的实际硬件。以上来自于百度翻译 以下为原文 Controller:-PIC16F690RTC:DS1307
    发表于 08-24 15:58

    DS1318与8051微控制器接口

    本应用笔记中的硬件电路将DS1318的数据放入μC的数据存储空间。μC通过读、写正确地址的数据存储访问DS1318寄存。本实例中采用DS
    发表于 12-18 10:14

    怎么将ds1307与stm8s105c6接口

    你好,我正在尝试将ds1307与我的stm8s105c6发现接口我无法从哪里开始。我不清楚rtc是如何工作的。我试图为ds1307的stm8s找到任何库。你可以帮帮我吗以上来自于谷歌翻译以下为原文
    发表于 02-27 16:33

    请问如何使定时DS1307的定时同步?

    我需要计算毫秒。我使用DS1307,所以它给了我HR,Min,SEC的精确值,但我也想要毫秒。我已经制定了一个程序,计时1ms定时。由于我也是计时的新手,我如何用DS1307定时
    发表于 09-10 08:08

    PIC24接口DS1307代码丢失怎么找回

    问候大家,几个月前,我成功地与PIC24接口DS1307。现在,由于硬盘崩溃,我已经丢失了代码,所以我从头开始编写代码。现在已经很长时间了,我几乎忘记了我是怎么做到的。我已经编写了代码,但问题是当我从DS1307读取日期和时间时
    发表于 05-06 13:23

    带有ATtiny85/DS1307的时钟开发板

    描述ATtiny85 TinyClock DS1307 DIP带有 ATtiny85 微控制器DS1307 实时时钟和 2032 电池座的时钟开发板。PCB+展示
    发表于 08-19 07:20

    DS1307 pdf datasheet (64 x 8,

    DS1307 pdf
    发表于 10-22 10:18 77次下载

    DS1307应用电路

    DS1307 pdf datasheet (64 x 8, Serial, I2C Real-Time Clock)
    发表于 10-22 18:26 3457次阅读
    <b class='flag-5'>DS1307</b>应用电路

    使用DS1307的PIC单片机-Using a DS1307

    Abstract: This application note is intended to demonstrate an application using the DS1307
    发表于 04-21 09:50 1372次阅读
    使用<b class='flag-5'>DS1307</b>的PIC单片机-Using a <b class='flag-5'>DS1307</b>

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

    Abstract: This application note provides information on how to interface a DS1307 real-time clock
    发表于 04-21 11:04 1026次阅读
    <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

    DS13078051兼容微控制器接口

    硬件配置 系统配置如图1所示。DS1307有相连的ds5000两端口的I/O引脚2线总线:SCL - P1.0、P1.1 SDA -。VDD电压为5V,RP = 5k和ds5000是使用一个12
    发表于 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 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1307相关产品参数、数据手册,更有DS1307的引脚图、接线图、封装手册、中文资料、英文资料,DS1307真值表,DS1307管脚等资
    发表于 11-21 21:25
    <b class='flag-5'>DS1307</b> 时钟/定时 - 实时时钟

    DS1302与8051微控制器接口

    本应用介绍如何使用3线接口DS1302 RTC连接至8051微控制器。该示例包括用 C 语言编写的原理图和示例软件。
    的头像 发表于 01-09 17:01 564次阅读
    <b class='flag-5'>DS</b>1302与<b class='flag-5'>8051</b>型<b class='flag-5'>微控制器</b><b class='flag-5'>接口</b>