时钟芯片

2024-05-10

时钟芯片(精选4篇)

时钟芯片 篇1

0 引言

I2C总线是一种简单、双向二线制同步串行总线, 它只需要两根线 (串行时钟线和串行数据线) 即可在连接于总线上的器件之间传送信息。I2C总线接口的电气结构如图1所示, 组成I2C总线的串行数据线SDA和串行时钟线SCL必须经过上拉电阻Rp接到正电源上, 连接到总线上的器件的输出级必须为“开漏"或“开集”的形式, 以便完成“线与”的功能。

I2C总线可以构成多主从数据传送系统, 但只有带CPU的器件可以成为主器件。主器件发送时钟、启动位、数据工作方式, 从器件则接收时钟及数据工作方式。接收或发送根据数据的传送方向决定。I2C总线上数据传送时的启动、结束和有效状态都由SDA、SCL的电平状态决定, 在I2C总线规约中启动和停止条件规定如下:

启动条件:在SCL为高电平时, SDA出现一个下降沿则启动I2C总线。

停止条件:在SCL为高电平时, SDA出现一个上升沿则停止使用I2C总线。

除了启动和停止状态, 在其余状态下, SCL的高电平都对应于SDA的稳定数据状态。

每一个被传送的数据位由SDA线上的高、低电平表示, 对于每一个被传送的数据位都在SCL线上产生一个时钟脉冲。在时钟脉冲为高电平期间, SDA线上的数据必须稳定, 否则被认为是控制信号。SDA只能在时钟脉冲SCL为低电平期间改变。启动条件后总线为“忙”, 在结束信号过后的一定时间总线被认为是“空闲”的。在启动和停止条件之间可转送的数据不受限制, 但每个字节必须为8位。首先传送最高位, 采用串行传送方式, 但在每个字节之后必须跟一个响应位。主器件收发每个字节后产生一个时钟应答脉冲, 在这期间, 发送器必须保证SDA为高, 由接收器将SDA拉低, 称为应答信号 (ACK) 。主器件为接收器时, 在接收了最后一个字节之后不发应答信号, 也称为非应答信号 (NOT ACK) 。当从器件不能再接收另外的字时也会出现这种情况。I2C总线的数据传送格式如图2所示。

I2C总线中每个器件都有唯一确定的地址, 启动条件后主机发送的第一个字节就是被读写的从器件的地址, 其中第8位为方向位, “0” (W) 表示主器件发送, “1” (R) 表示主器件接收。无论是主发、主收还是从发、从收都由主器件控制。在主发送方式下, 由主器件先发出启动信号 (S) , 接着发从器件的7位地址 (SLA) 和表明主器件发送的方向位0 (W) , 即这个字节为SLA+W。寻址的从器件在收到这个字节后, 返回一个应答信号 (A) , 在确定主从握手应答正常后, 主器件向从器件发送字节数据, 从器件每收到一个字节数据后都要返回一个应答信号, 直到全部数据都发送完止。在主接收方式下, 主器件先发出启动信号 (S) , 接着发从器件的7位地址 (SLA) 和表明主器件接收的方向位1 (R) , 即这个字节为SLA+R。在发送完这个字节后, SCL继续输出时钟, 通过SDA接收从器件发来的串行数据。主器件每接收到一个字节后都要发送一个应答信号 (A) 。当全部数据发送或接收完毕后, 主器件应发出停止信号 (P) 。图3、图4所示为主器件发送和接收数据的过程。

1 X1202工作原理

2.1 X1202的引脚功能

X1202是Xicor公司生产的一种具有I2C接口的实时时钟芯片, 使用32768Hz晶振输入, 可以精确地走时, 从秒、分、时到月、日、年, 并提供闰年校正, 能对2000年问题和小于31天的月自动进行调整。它有两个独立的闹钟, 报警可按秒、分、时、日、月及星期几设置。工作电源及备份电池电源都有宽的电压范围。

X1202还提供一个看门狗定时器, 具有3种定时时间可选择。

X1202有两种封装形式, 其引脚排列如图5所示。

(1) 串行时钟SCL。SCL输入端, 用于使所有数据随时钟同步输入或输出。此引脚上的输入缓冲器总是激活的 (不选通) 。

(2) 串行数据SDA。SDA是双向引脚, 用于把数据送入和送出器件。它具有漏极开路的输出, 可以与其它漏极开路或集电极开路输出端进行线“或”。输入缓冲器总是激活的 (不选通) 。

(3) VBACK输入端。接备用电源电压。在VCC电源故障时VBACK供电。

(4) 复位输出undefined。这是一个复位信号输出端。此信号通知主处理器:看门狗时间期限已超过, 或电源电压VCC已低于门限值。它是漏极开路低电平有效输出端。

(5) X1, X2外接晶体端。可在X1端接收外部32.768kHz的方波基准或被配置成片内振荡器。片内振荡器使用32.768kHz石英晶体。推荐使用的晶体是VT-200或EPSON C-002RX。晶体为时钟/振荡器提供时基。使用外部时基时, 内部时钟可由X1端的外部信号驱动, X2悬空。图6为推荐的晶体接法。

2.2 X1202的寄存器

X1202的寄存器分为状态寄存器、实时日历/时钟寄存器、控制寄存器和两组独立闹钟寄存器, 片内地址见表1。

两组闹钟寄存器分别与实时日历/时钟寄存器相对应, 其地址分别为:0000-0007, 0008-000F。

2.3 实时时钟读写

由于X1202具有双端口的时钟和闹钟寄存器, 使得读写操作不影响时钟的精确性。

启动读命令, 并指定对应于实时时钟 (RTC) 寄存器的地址可以读RTC。因为时钟是连续运行且读操作要花费一定的时间, 所以在读操作期间时钟可能有变化。为了避免在读操作期间时钟的变化, 用读命令 (在RTC数据输出之前ACK位时钟的下降沿) 把时间锁入单独的锁存器, 时钟继续运行。在读期间产生的报警不受读操作的影响。

从X1202的RTC寄存器中读出一个字节的过程为:先发出起始信号, 接着发出X1202的地址SLAW (R/W为0) , 再进行RTC寄存器地址的写入操作, 然后发出重复起始信号和X1202地址SLAR (R/W为1) , 开始接收来自RTC寄存器的数据值data, 如图7所示。

此外, X1202还包括现行地址读和序列读功能。

时钟和日期可通过写RTC寄存器来设置。

为了避免不完全的写操作改变当前时间, 在RTC数据输入此前ACK位时钟的下降沿, 当前时间值被装入单独的缓冲器, 时钟继续运行。新的串行输入数据代替缓冲器内的内容。这个新的RTC值由有效写时序末尾的停止位装回到RTC寄存器中。无效的写操作使时间更新过程失败, 缓冲器的内容被丢弃。在有效的写操作之后, RTC将反映新装载的数据, 它从停止位之后第一个一秒时钟周期开始。在RTC寄存器正在进行写的同时, RTC继续更新时间, 在任何非易失性写序列期间RTC继续运行。单个字节可以被写至RTC而不影响其它字节。

向X1202的RTC寄存器中写数据的过程为:先发出起始信号, 接着发出X1202的地址SLAW (R/W为0) , 再进行RTC寄存器地址的写入操作, 然后写入数据值data, 如图8所示。

注意:在进行写RTC寄存器的过程之前, 一定要先向RTC的状态寄存器中先写入02, 再写入06, 否则就不能进行写RTC寄存器的操作。此外, X1202还包括页写入功能, 可一次写入8个数据。

2 X1202的应用

X1202与89C51的接口电路如图9所示

由于51系列单片机没有内部硬件I2C总线接口, 下面采用C51实现模拟I2C总线接口的具体编程方法。

部分程序清单如下:

参考文献

[1]Philips Semiconductors.The I2C Bus Concept and Specification.1992.

[2]Xicor公司.X1202芯片资料 (英文) [Z].2002.

时钟芯片 篇2

DS12C887引脚排列见图1, 组件中包含有石英晶体、锂电池、实时时钟、日历时钟、报警时钟、方波发生器、方波输出电路、计数器、四个功能寄存器A, B, C, D和128字节的不掉电RAM等。

一、永不停止计时功能

由于DS12C887内部带有锂电池, 可保证其正常工作达十年之久。所以不管外部供电电压如何, 一旦启动了DS12C887的计时功能, 它将自动地进行年、月、日、星期、时、分、秒的计时。

二、方便地中断功能

DS12C887芯片可提供三种不同的中断源:警报中断、周期中断和时钟更新结束中断。

警报中断:可通过编程实现几时几分几秒申请一次中断。或每天或每小时或每分钟发生一次中断。

周期中断:可编程选择一固定时间周期向外提出一次中断请求。

时钟更新结束中断:为保证计时的准确, DS12C887在对内部时间寄存器参数进行更新时, 不希望外界对这些寄存器进行读写操作。因此需用此中断来允许对时间寄存器参数进行读取。

以上三种中断请求配合单片机的中断功能可以方便地进行实时控制。

三、可编程的方波输出

通过对DS12C887内部寄存器A (见表1) 的RS0-RS3编程, 可选择一固定频率方波从引脚SQW输出 (对应关系见表2) 。

四、多达100字节的不掉电RAM

DS12C887芯片内部除了一些固定的时间寄存器地址 (见表3) 外, 还有多达100多字节的不掉电RAM供单片机使用, 省去了在扩充外部数据存储器的麻烦, 因为其内部带有锂电池, 重要数据存在里面是断电不丢失的。

时钟芯片 篇3

目前大多数嵌入式设备中都需要一定的内部定时系统,这样不但可以实时记录数据,而且能够向外界提供带有时间信息的数据,供日后数据分析和检索。有些CPU芯片中集成了RTC(实时时钟)控制器,使用比较方便。然而有些芯片诸如DSP(数字信号处理器)不具备内部RTC功能,这样就需要在外部扩展RTC控制芯片来实现RTC功能。

在我们开发的基于TI公司C5000系列的DSP嵌入式实时处理系统中,使用Dallas公司的串行时钟芯片DS1302。通常对DS1302的控制都是由CPU产生模拟串行控制协议。这样CPU的软件开销较大、效率较低,而且不能提供精确的控制时序。本文设计了基于CPLD(复杂可编程逻辑器件)产生访问DS1302的串行控制时序,实现DSP对DS1302的读写控制。

1 DS1302的基本功能

DS1302是美国Dallas公司推出的一款高性能、低功耗、具有内部RAM的串行RTC芯片,它不但能够提供年、月、日、星期、时、分、秒的计数功能,而且自身具有闰年补偿。DS1302内部具备31字节的RAM供用户自定义使用。通过外部的电池供电,可以在系统断电的情况下,仍然保证RTC的正常工作和用户数据的完整性。DS1302具有两路电源供电通道:主电源通道以及电池备份电源通道。当主电源大于电池备份电源0.2 V左右,由主电源对芯片提供工作电压,否则由电池备份电源供电。芯片的工作电压范围较宽,可达到2.5 V~5.5 V。另外,如果选择了涓流充电功能,在正常情况下,主电源还可以对电池备份电源进行慢速充电,有效延长了备份电池的使用寿命。

2 硬件接口设计和CPLD逻辑设计

在DSP嵌入式实时处理系统中,硬件组成的基本框架是由DSP+CPLD(复杂可编程逻辑器件)构成。DSP通过总线访问CPLD内部的RTC控制寄存器,而由CPLD来实现低层访问RTC芯片的时序。

2.1 硬件接口电路设计

硬件接口电路设计比较简单,需要CPLD提供3根串行IO线与DS1302的SCLK、RST和I/O进行相连。晶体采用32.768 kHz,备份电池采用可充电镍镉电池。接口电路如图1所示。

2.2 CPLD逻辑设计

CPLD逻辑框图如图2所示。

CPLD内部实现了RTC芯片的控制功能,它采用分层结构设计,由总线接口模块、分频模块、控制器状态机模块和串行时序产生模块组成。

1)总线接口模块

总线接口模块实现DSP总线访问RTC控制器的2个寄存器(命令寄存器和数据寄存器),另外还产生状态机翻转的触发信号;命令寄存器用于暂存写入DS1302的命令字,数据寄存器用于暂存写入、读出DS1302的数据。

2)分频模块

分频模块用于对高频时钟进行分频,产生满足DS1302串行时序要求的控制信号。

3)控制状态机模块

控制状态机模块是整个控制器的核心模块,用来产生读、写移位操作的状态转换。状态机由空闲状态、开始启动状态、写命令字状态、写数据状态和读数据状态组成,如图3所示。当DSP通过总线访问RTC控制器时,状态机开始启动一次状态翻转。首先将命令字写入DS1302,然后通过判断命令寄存器的最低位来判断是一次写操作还是读操作,最后将数据写入或读出DS1302芯片。状态机最后回到空闲状态结束一次操作。

4)串行时序产生模块

串行时序产生模块实现DS1302底层物理层通信。这里完成了单字节读操作和单字节写操作。这2种操作都是在状态机的控制下严格产生的,满足DS1302时序要求。特别要注意的是,写操作是时钟下降沿写入数据,而读操作是时钟上升沿读出数据,这里采用状态机控制可以很好地解决不同操作使用不同时钟沿的问题。

a)单字节读操作。一次单字节读操作由16个时钟组成,前8个时钟向DS1302发送命令字节,后8个时钟从DS1302读取指定的数据。命令字节由读/写位、地址位、时钟/命令位组成,作为写操作读/写位为0。从时序上看,如图4所示,芯片送数据时是下升沿采样,CPLD读数据的时候是上升沿采样。移位的次序是从低位在前,高位在后的顺序。

b)单字节写操作。一次单字节写操作也是由16个时钟组成,前8个时钟向DS1302发送命令字节,后8个时钟向DS1302指定的位置写入数据。命令字节由读/写位、地址位、时钟/命令位组成,作为写操作读/写位为1。从时序上看,如图5所示,CPLD写命令和写数据都在时钟下降沿采样。移位的次序是从低位在前,高位在后的顺序。

3 软件驱动设计

CPLD内部控制器逻辑为DSP控制DS1302提供了一个非常方便的通用接口平台。访问DS1302内部年、月、日、星期、时、分、秒寄存器和内部RAM地址可以通过写入不同的命令字来实现。

命令字的格式如图6所示。每个位的定义如下:命令字节的最高位bit7必须是“1”,否则禁止对DS1302进行操作。第6位是时钟/日历或者RAM选择位,当它为“0”时表示对时钟/日历进行操作,反之表示对RAM进行操作;第5位到第1位这5位表示操作时钟/日历或者RAM的地址,当它们全为“1”时表示多字节突发式读、写方式。在本文设计的通用模式逻辑访问方式下,不支持多字节突发式读、写方式,因此只能采用单字节操作模式。命令字节最低位bit0为“0”时表示写操作,反之为读操作。

软件流程如图7和图8所示。

根据DS1302命令字的格式,在软件中设计了各种命令字的宏定义:

#define RTC_SEC_RCMD 0x81 //秒数据读命令字

#define RTC_SEC_WCMD 0x80 //秒数据写命令字

#define RTC_MIN_RCMD 0x83 //分数据读命令字

#define RTC_MIN_WCMD 0x82 //分数据写命令字

#define RTC_HR_RCMD 0x85 //时数据读命令字

#define RTC_HR_WCMD 0x84 //时数据写命令字

#define RTC_DATE_RCMD 0x87 //日数据读命令字

#define RTC_DATE_WCMD 0x86 //日数据写命令字

#define RTC_MONTH_RCMD 0x89 //月数据读命令字

#define RTC_MONTH_WCMD 0x88 //月数据写命令字

#define RTC_DAY_RCMD 0x8B //星期数据读命令字

#define RTC_DAY_WCMD 0x8A //星期数据写命令字

#define RTC_YEAR_RCMD 0x8D //年数据读命令字

#define RTC_YEAR_WCMD 0x8C //年数据写命令字

#define RTC_WP_RCMD 0x8F //写保护读命令字

#define RTC_WP_WCMD 0x8E //写保护写命令字

#define RTC_RAM_OFFSET 0xC0 //RAM数据起始偏移地址

#define RTC_WP_ENABLE 0x80 //RTC使能

#define RTC_WP_DISABLE 0x00 //RTC禁止

通过读、写RTC两种最基本的函数,在结合软件内部的数据结构,很容易实现时钟/日历或者RAM数据的访问。

4 结束语

本文介绍了如何在嵌入式DSP实时处理系统中,使用CPLD控制DS1302获得系统时间的方法。另外,可以将重要数据保存到DS1302的内部RAM中,即使断电后这些参数也不会丢失,恢复供电后程序继续运行。串行时钟芯片DS1302具有体积小,连接简单、成本低等优点。将它的控制功能集成到CPLD中,能够提高系统的可靠性,减少对DSP的GPIO资源占用,提高程序的运行效率,在实际的系统运行中起到了良好的效果。通过分层设计的软硬件系统结构,能够非常方便地移植到其他嵌入式平台中。

摘要:在许多嵌入式应用场合需要实时时钟的功能,通常DSP(数字信号处理器)芯片并不具备此功能,因此在实际使用过程中需要外扩实时时钟芯片来解决该问题。文中介绍了串行时钟芯片DS1302的功能以及在DSP嵌入式实时处理系统中的应用,给出了基于CPLD(复杂可编程逻辑器件)的控制器逻辑设计和DSP底层软件驱动编写的方法,指出了逻辑设计中需要注意的问题。实现一种分层、高效和可移植的嵌入式系统。经过长期的试验,实时时钟运行稳定准确,取得了良好的效果。

关键词:DSP,实时时钟,DS1302,CPLD

参考文献

[1]王晨光,孙运强.串行时钟芯片DS1302在温度测量记录仪表中的应用[J].电子测试,2008(12):65-69,75.

[2]李文玉.例谈实时时钟/日历芯片DS1302的具体应用[J].电子制作,2007(9):43-45.

时钟芯片 篇4

定时开关[1]在人们生活中扮演着重要的角色,给人们的生活带来了很大的方便。早在我国的古代采用滴水方式计时,当水滴到一定量时就引发机关报时。随着电子信息的快速发展,如今的电视机,电风扇等电器产品都附带了定时器,但是电子产品附带的定时器只适用于该用电器,并不能扩展使用到其他用电器上。

本文所介绍的定时开关目的在于控制主电源,从而适用于能瞬间断电的一切电子产品,不仅能在规定的时间准时断开同时能在设定的时间内准时开启,给人们日常生活带来了极大的方便,如能通过应用此定时开关在上班期间定时煮饭,手机充电在适当时间将电源断开。

该定时器具备以下几个特点:采用C语言[2]编写程序,与汇编语[3]言相比便于修改和增减功能;所采用的芯片STC89C52单片机、1602液晶显示器,DS1302时钟芯片功耗低、可靠性高;与机械定时器相比不仅消除了噪声,更加准确,且使用寿命要长;采用Protues仿真,方便直观。

1 系统设计方案

以STC89C52[4]单片机为核心,通过DS1302时钟芯片进行时间控制,使用1×4键盘作为数据输入方式,驱动1602显示器提示程序运行过程和开锁的步骤。系统结构如图1所示。

2 系统设计

2.1 系统硬件组成

使用的元器件有:核心芯片STC89C52、时钟芯DS1302、液晶显示1602、继电器、蜂鸣器、1×4键盘[5]、发光二极管和三极管。

2.2 系统软件设计

本文采用单片机的C语言编写程序对整个系统的硬件进行管控,实现了对DS1302的控制,1602的显示,时间管控。其中时间管控包括:系统时间以及开启与关闭时间的设定,系统时间与开启或关闭时间相同时继电器、蜂鸣器和指示灯工作状态的管控。系统程序流程如图2所示。

2.2.1 DS1302的控制[6]

DS1302的RST,SCLK和I/O分别与单片机的P2.0,P2.1和P2.2相连。单片机与DS1302进行数据交换时,首先要将RST变为高电位,也就是单片机P2.0必须为逻辑1。在RST保持为高电位时,SCLK时钟由低电位变为高电位的上升沿时,数据被写入DS1302中,数据从最低位通过I/O开始写入。在RST保持高电位,SCLK时钟由高电位变为低电位的下降沿时,从DS1302读取数据,数据也是从DS1302的最低位通过I/O读取。

DS1302读取数据子程序

2.2.2 1602的显示[7]

通过单片机指令控制1602光标是否闪烁,是否清除原来数据以及显示的具体位置,并不停地对数据显示进行刷新,从而显示了准确的时间,并为系统提供了智能的人机对话模式。

2.2.3 时间的管控

当系统启动时,STC89C52单片机立即从DS1302时钟芯片获取时间,并通过键盘和1602显示器配合完成对当系统时间、启动时间和关闭时间的设定。当系统时间与启动时间相同,从而控制继电器闭合,直到系统时间与关闭时间相同时断开。

3 系统仿真

本文采用具有强大的EDA仿真功能的Protues[8]软件进行仿真,仿真图如图3所示。

3.1 系统介绍

系统仿真图中的STC89C52为真个系统的控制核心,将其编写的程序以二进制的形式烧入后,它将按照编写的指令运行。通过P2.0,P2.1和P2.2与右上方的DS1302时钟芯片的联系在一起,从而控制DS1302的执行方式。在STC89C52的控制下,1602液晶显示器能显示当前时间,提示用户修改时间;左下方的继电器能在设定的开启时间闭合,在设定的关闭时间断开;中间的蓝色信号灯在继电器闭合是点亮;四个独立键盘在1602液晶显示器配合下完成系统时间、开启时间和关闭时间的设置;右下方整个模块为系统提示模块,当系统时间与设定的开启或者关闭时间相同时,D1将闪烁3次同时蜂鸣器响3声;D2用于模拟用电器,当继电器闭合时,将会被点亮。

3.2 系统时间的设置

当电源开启时,1602将显示系统初始化时间,按下FUC键后,时间停止走动并且显示秒的数字将会闪烁,此时可以通过ADD和SUB键调节。其中每按下一次ADD键数字将加1,每按下SUB键数字将减1。调节完秒后,再次按下FUC键,闪烁的光标将转移到分钟位置,同样通过调节ADD和SUB键盘调节当前的时间。同样的原理调节小时与日期。当调节星期时候,按下ADD和SUB将按照星期的英文缩写变化显示。调节完星期后在此按下FUN键后,闪烁光标将消除,同时时间开始在调节完毕的基础上开始运行。

3.3 开启与关闭时间的设置

在1602显示器正常显示时间的期间,按下CHOOSE键一次,液晶显示器显示当前设置的开启时间,如图4所示。按下FUC键后,光标在秒位闪烁,同样通过ADD和SUB键进行调节。再次按下CHOOSE键后,液晶显示器显示当前关闭时间。同样按下FUC键配合ADD与SUB键调节关闭时间。再次按下CHOOSE键,显示器回到系统时间显示界面。当系统时间与设定的启动时间相同时,继电器闭合,蜂鸣器[9]响3声,D1闪烁3次,信号灯变蓝,同时D2被点亮。直到系统时间与设定的关闭时间相同,蜂鸣器再次响3声,D1闪烁3次,信号灯和D2都熄灭。

4 结语

该智能定时开关系统采用C语言编写,以STC89C52和DS1302为核心,具备时间准确,功耗低,增加功能方便。通过Protues的仿真,直观展示了系统的运行界面,证明了此设计方案的可行性。

参考文献

[1]雷道仲,李书成,罗政球.基于单片机定时开关的设计[J].贵州教育学院学报,2005(4):224-225.

[2]张天凡.完全手册:51单片机C语言开发详解[M].北京:电子工业出版社,2008.

[3]王振宇.基于单片机设计的多功能定时器[J].贵州教育学院学报,2005(4):79-81.

[4]刘焕平,李娟.基于51单片机的智能定时控制系统设计[J].石家庄职业技术学院学报,2010(6):26-28.

[5]张自聪,金永兴.基于AT89S52的奥运倒计时牌的设计[J].中国计量学院学报,2007(4):305-307.

[6]曹晖,彭小军.DS1320的C51编程[J].新余高专学报,2001(2):28-29.

[7]于志赣,刘国平,张旭斌.液显LCD1602模块的应用[J].机电技术,2009(3):21-23.

[8]李娜,刘雅举.Proteus在单片机仿真中的应用[J].现代电子技术,2007,30(4):181-182.

上一篇:多样化人才观念下一篇:林农业