85历时钟芯片原理及应用设计.docx
《85历时钟芯片原理及应用设计.docx》由会员分享,可在线阅读,更多相关《85历时钟芯片原理及应用设计.docx(23页珍藏版)》请在冰豆网上搜索。
85历时钟芯片原理及应用设计
PCF8563日历时钟芯片原理及应用设计
一、概述
PCF8563是PHILIPS公司推出的一款工业级内含I2C总线接口功能的具有极低功耗的多功能时钟/日历芯片。
PCF8563的多种报警功能、定时器功能、时钟输出功能以及中断输出功能能完成各种复杂的定时服务,甚至可为单片机提供看门狗功能。
内部时钟电路、内部振荡电路、内部低电压检测电路(1.0V)以及两线制I2C总线通讯方式,不但使外围电路及其简洁,而且也增加了芯片的可靠性。
同时每次读写数据后,内嵌的字地址寄存器会自动产生增量。
当然作为时钟芯片,PCF8563亦解决了2000年问题。
因而,PCF8563是一款性价比极高的时钟芯片,它已被广泛用于电表、水表、气表、电话、传真机、便携式仪器以及电池供电的仪器仪表等产品领域。
特性
●宽电压范围1.0~5.5V,复位电压标准值Vlow=0.9V;
●超低功耗:
典型值为0.25μA(VDD=3.0V,Tamb=25℃);
●可编程时钟输出频率为:
32.768KHz、1024Hz、32Hz、1Hz;
●四种报警功能和定时器功能;
●内含复位电路、振荡器电容和掉电检测电路;
●开漏中断输出;
●400kHzI2C总线(VDD=1.8—5.5V),其从地址:
读,0A3H;写,0A2H。
PCF8563的管脚排列及描述如图1及表1所示。
表1PCF8563管脚描述
符号
管脚号
描述
OSCI
1
振荡器输入
OSCO
2
振荡器输出
/INT
3
中断输出(开漏;低电平有效)
VSS
4
地
SDA
5
串行数据I/O
SCL
6
串行时钟输入
CLKOUT
7
时钟输出(开漏)
VDD
8
正电源
图1PCF8563管脚排列图
二、PCF8563的基本原理
PCF8563有16个8位寄存器:
一个可自动增量的地址寄存器,一个内置32.768KHz的振荡器(带有一个内部集成的电容),一个分频器(用于给实时时钟RTC提供源时钟),一个可编程时钟输出,一个定时器,一个报警器,一个掉电检测器和一个400KHzI2C总线接口。
所有16个寄存器设计成可寻址的8位并行寄存器,但不是所有位都有用。
前两个寄存器(内存地址00H,01H)用于控制寄存器和状态寄存器,内存地址02H~08H用于时钟计数器(秒~年计数器),地址09H~0CH用于报警寄存器(定义报警条件),地址0DH控制CLKOUT管脚的输出频率,地址0EH和0FH分别用于定时器控制寄存器和定时器寄存器。
秒、分钟、小时、日、月、年、分钟报警、小时报警、日报警寄存器,编码格式为BCD,星期和星期报警寄存器不以BCD格式编码。
当一个RTC寄存器被读时,所有计数器的内容被锁存,因此,在传送条件下,可以禁止对时钟/日
历芯片的错读。
1.报警功能模式
一个或多个报警寄存器MSB(AE=AlarmEnable报警使能位)清0时,相应的报警条件有效,这样,一个报警将在每分钟至每星期范围内产生一次。
设置报警标志位AF(控制/状态寄存器2的位3)用于产生中断,AF只可以用软件清除。
2.定时器
8位的倒计数器(地址0FH)由定时器控制寄存器(地址0EH,参见表23)控制,定时器控制寄存器用于设定定时器的频率(4096,64,1,或1/60Hz),以及设定定时器有效或无效。
定时器从软件设置的8位二进制数倒计数,每次倒计数结束,定时器设置标志位TF(参见表5),定时器标志位TF只可以用软件清除,TF用于产生一个中断(/INT),每个倒计数周期产生一个脉冲作为中断信号。
TI/TP(参见表5)控制中断产生的条件。
当读定时器时,返回当前倒计数的数值。
3.CLKOUT输出
管脚CLKOUT可以输出可编程的方波。
CLKOUT频率寄存器(地址0DH;参见表21)决定方波的频率,CLKOUT可以输出32.768KHz(缺省值),1024,32,1Hz的方波。
CLKOUT为开漏输出管脚,上电时输出有效,无效时输出为高阻抗。
4.复位
PCF8563包含一个片内复位电路,当振荡器停止工作时,复位电路开始工作。
在复位状态下,I2C总线初始化,寄存器TF、VL、TD1、TD0、TESTC、AE被置逻辑1,其它的寄存器和地址指针被清0。
5.掉电检测器和时钟监控
PCF8563内嵌掉电检测器(如图2所示),当VDD低于Vlow时,位VL(VoltageLow,秒寄存器的位7)被置1,用于指明可能产生不准确的时钟/日历信息,VL标志位只可以用软件清除.当VDD慢速降低(例如以电池供电)达到Vlow时,标志位VL被设置,这时可能会产生中断。
图2掉电检测
6.PCF8563内部寄存器
PCF8563共有16个寄存器,其中00H~01H为控制方式寄存器、09H~0CH为报警功能寄存器、0DH为时钟输出寄存器、0EH和0FH为定时器功能寄存器、02H~08H为秒~年时间寄存器。
各寄存器的位描述如表2及3.14所示。
表2二进制格式寄存器概况
地址
寄存器名称
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
00H
控制/状态寄存器1
TEST1
0
STOP
0
TESTC
0
0
0
01H
控制/状态寄存器2
0
0
0
TI/TP
AF
TF
AIE
TIE
0DH
CLKOUT输出寄存器
FE
-
-
-
-
-
FD1
FD0
0EH
定时器控制寄存器
TE
-
-
-
-
-
TD1
TD0
0FH
定时器倒计数
数值寄存器
定时器倒计数数值(二进制)
表3BCD格式寄存器概况
地址
寄存器名称
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
02h
秒
VL
00~59BCD码格式数
03h
分钟
-
00~59BCD码格式数
04h
小时
-
-
00~59BCD码格式数
05h
日
-
-
01~31BCD码格式数
06h
星期
-
-
-
-
-
0~6
07h
月/世纪
C
-
-
01~12BCD码格式数
08h
年
00~99BCD码格式数
09h
分钟报警
AE
00~59BCD码格式数
0Ah
小时报警
AE
-
00~23BCD码格式数
0BH
日报警
AE
-
01~31BCD码格式数
0CH
星期报警
AE
-
-
-
-
0~6
注:
标明“-”的位无效
(1)控制/状态寄存器1
表4控制/状态寄存器1位描述(地址00H)
Bit
符号
描述
7
TEST1
TEST1=0,普通模式;TEST1=1,EXT_CLK测试模式
5
STOP
STOP=0,芯片时钟运行;STOP=1,所有芯片分频器异步置逻辑0。
芯片时钟停止运行(CLKOUT在32.768kHz时可用)
3
TESTC
TESTC=0,电源复位功能失效(普通模式时置逻辑0)
TESTC=1,电源复位功能有效
6,4,2,1,0
0
缺省值置逻辑0
(2)控制/状态寄存器2
表5控制/状态寄存器2位描述(地址01H)
Bit
符号
描述
7,6,5
0
缺省值置逻辑0
4
TI/TP
TI/TP=0:
当TF有效时INT有效(取决于TIE的状态)TI/TP=1:
INT脉冲有效,参见表6(取决于TIE的状态)。
注意:
若AF和AIE都有效时,则INT一直有效
3
AF
当报警发生时,AF被置逻辑1;在定时器倒计数结束时,TF被置逻辑1,它们在被软件重写前一直保持原有值,若定时器和报警中断都请求时,中断源由AF和TF决定,若要使清除一个标志位而防止另一标志位被重写,应运用逻辑指令AND,标志位AF和TF值描述参见表7
2
TF
1
AIE
标志位AIE和TIE决定一个中断的请求有效或无效,当AF或TF中一个为“1”时中断是AIE和TIE都置“1”时的逻辑或。
AIE=0,报警中断无效;AIE=1,报警中断有效
TIE=0,定时器中断无效;TIE=1,定时器中断有效
0
TIE
表6/INT操作(bitTI/TP=1)
源时钟
(Hz)
/INT周期
n=1
n>1
4096
1/8192
1/4096
64
1/128
1/64
1
1/64
1/64
1/60
1/64
1/64
注1.TF和/INT同时有效
注2.n为倒计数定时器的数值,当n=0时定时器停止工作。
表7AF和TF值描述
R/W
Bit:
AF
Bit:
TF
值
描述
值
描述
Read读
0
1
报警标志无效
报警标志有效
0
1
定时器标志无效
定时器标志有效
Write写
0
1
报警标志被清除
报警标志保持不变
0
1
定时器标志被清除
定时器标志保持不变
(3)秒、分钟和小时寄存器
表8秒/VL寄存器位描述(地址02H)
Bit
符号
描述
7
VL
VL=0:
保证准确的时钟/日历数据
VL=1:
不保证准确的时钟/日历数据
6~0
<秒>
代表BCD格式的当前秒数值,值为00~99
例如:
<秒>=1011001,代表59秒
表9分钟寄存器位描述(地址03H)
Bit
符号
描述
7
-
无效
6~0
<分钟>
代表BCD格式的当前分钟数值,值为00~59
表10小时寄存器位描述(地址04H)
Bit
符号
描述
7~6
-
无效
5~0
<小时>
代表BCD格式的当前小时数值,值为00~23
(4)日、星期、月/世纪和年寄存器
表11日寄存器位描述(地址05H)
Bit
符号
描述
7~6
-
无效
5~0
<日>
代表BCD格式的当前日数值,值为01~31。
当年计数器的值是闰年时,PCF8563自动给二月增加一个值,使其成为29天
表12星期寄存器位描述(地址06H)
Bit
符号
描述
7~3
-
无效
2~0
<星期>
代表当前星期数值0~6,参见表13,这些位也可由用户重新分配
表13星期分配表
日(Day)
Bit2
Bit1
Bit0
星期日
0
0
0
星期一
0
0
1
星期二
0
1
0
星期三
0
1
1
星期四
1
0
0
星期五
1
0
1
星期六
1
1
0
表14月/世纪寄存器位描述(地址07H)
Bit
符号
描述
7
C
世纪位;C=0指定世纪数为20××,C=1指定世纪数为19××,“××”为年寄存器中的值,参见表16。
当年寄存器中的值由99变为00时,世纪位会改变
6~5
-
无用
4~0
<月>
代表BCD格式的当前月份,值为01~12;参见表15
表15月分配表
月份
Bit4
Bit3
Bit2
Bit1
Bit0
一月
0
0
0
0
1
二月
0
0
0
1
0
三月
0
0
0
1
1
四月
0
0
1
0
0
五月
0
0
1
0
1
六月
0
0
1
1
0
七月
0
0
1
1
1
八月
0
1
0
0
0
九月
0
1
0
0
1
十月
1
0
0
0
0
十一月
1
0
0
0
1
十二月
1
0
0
1
0
表16年寄存器位描述(地址08H)
Bit
符号
描述
7~0
<年>
代表BCD格式的当前年数值,值为00~99
(5)报警寄存器
向一个或多个报警寄存器写入合法的分钟、小时、日或星期数值并且它们相应的AE(AlarmEnable)位为逻辑0,当这些数值与当前的分钟、小时、日或星期数值相等,标志位AF(AlarmFlag)被设置,AF保存设置值直到被软件清除为止,AF被清除后,只有在时间增量与报警条件再次相匹配时才可再被设置。
报警寄存器在它们相应位AE置为逻辑1时将被忽略。
表17分钟报警寄存器位描述(地址09H)
Bit
符号
描述
7
AE
AE=0,分钟报警有效;AE=1,分钟报警无效
6~0
<分钟报警>
代表BCD格式的分钟报警数值,值为00~59
表18小时报警寄存器位描述(地址0AH)
Bit
符号
描述
7AE
AE
AE=0,小时报警有效;AE=1,小时报警无效
6~0
<小时报警>
代表BCD格式的小时报警数值,值为00~23
表19日报警寄存器位描述(地址0BH)
Bit
符号
描述
7
AE
AE=0,日报警有效;AE=1,日报警无效。
6~0
<日报警>
代表BCD格式的日报警数值,值为00~31
表20星期报警寄存器位描述(地址0CH)
Bit
符号
描述
7
AE
AE=0,星期报警有效;AE=1,星期报警无效
6~0
<星期报警>
代表BCD格式的星期报警数值,值为0~6
(6)CLKOUT频率寄存器
表21CLKOUT频率寄存器位描述(地址0DH)
Bit
符号
描述
7
FE
FE=0,CLKOUT输出被禁止并设成高阻抗
FE=1,CLKOUT输出有效
6~2
-
无效
1
0
FD1
FD0
用于控制CLKOUT的频率输出管脚(fCLKOUT),
参见表22
表22CLKOUT频率选择表
FD1
FD0
fCLKOUT
FD1
FD0
fCLKOUT
0
0
32.768kHz
1
0
32Hz
0
1
1024Hz
1
1
1Hz
(7)倒计数定时器寄存器
定时器寄存器是一个8位字节的倒计数定时器,它由定时器控制器中位TE决定有效或无效,定时器的时钟也可以由定时器控制器选择,其它定时器功能,如中断产生,由控制/状态寄存器2控制。
为了能精确读回倒计数的数值,I2C总线时钟SCL的频率应至少为所选定定时器时钟频率的两倍。
表23定时器控制器寄存器位描述(地址0EH)
Bit
符号
描述
7
TE
TE=0,定时器无效;TE=1,定时器有效
6~2
-
无用
1
TD1
定时器时钟频率选择位,决定倒计数定时器的时钟频率,见表24,不用时TD1和TD0应设为“11”(1/60Hz),以降低电源损耗
0
TD0
表24定时器时钟频率选择
TD1
TD0
定时器时钟频率(Hz)
0
0
4096
0
1
64
1
0
1
1
1
1/60
表25定时器倒计数数值寄存器位描述(地址0FH)
Bit
符号
描述
7~0
<定时器倒计数数值>
倒计数数值“n”,
倒计数周期=n/时钟频率
7.EXT_CLK测试模式
测试模式用于在线测试、建立测试模式和控制RTC的操作。
测试模式由控制/状态寄存器1的位TEST1设定,这时CLKOUT管脚成为输入管脚。
在测试模式状态下,通过CLKOUT管脚输入的频率信号代替片内的64Hz频率信号,每64个上升沿将产生1秒的时间增量。
注意:
进入EXT_CLK测试模式时时钟不与片内64Hz始终时钟同步,也确定不出预分频的状态。
操作举例
(1)进入EXT_CLK测试模式;设置控制/状态寄存器1的位7(TEST=1)。
(2)设置控制/状态寄存器1的位5(STOP=1)。
(3)清除控制/状态寄存器1的位5(STOP=0)。
(4)设置时间寄存器(秒、分钟、小时、日、星期、月/世纪和年)为期望值。
(5)提供32个时钟脉冲给CLKOUT。
(6)读时间寄存器观察第一次变化。
(7)提供64个时钟脉冲给CLKOUT。
(8)读时间寄存器观察第二次变化;需要读时间寄存器的附加增量时,重复步骤(7)和(8)。
8.电源复位(POR)替换模式
POR的持续时间直接与振荡器的起动时间有关。
一种内嵌的长时间起动的电路可使POR失效,这样可使设备测试加速。
这种模式的设定要求I2C总线管脚SDA和SCL的信号波形如图3所示,图中所有的时间值为所需的最小值。
当进入替换模式时,芯片立即停止复位,操作通过I2C总线进入EXT_CLK测试模式。
设置位TESTC逻辑0可消除替换模式,再次进入替换模式只有在设置TESTC为逻辑1后进行。
在普通模式时设置TESTC为逻辑0没有意义,除非想阻止进入POR替换模式。
图3POR时序图
9.石英晶片频率调整
方法
(1):
定值OSCI电容――计算所需的电容平均值,用此值的定值电容,通电后在CLKOUT管脚上测出的频率应为32.768kHz,测出的频率值偏差取决于石英晶片,电容偏差和器件之间的偏差(平均为±5×10-6)。
平均偏差可达5分钟/年。
方法
(2):
OSCI微调电容――可通过调整OSCI管脚的微调电容使振荡器频率达到精确值,这时可测出通电时管脚CLKOUT上的32.768kHz信号。
方法(3):
OSCI输出—直接测量管脚OSCI的输出。
三、PCF8563与单片机的接口软件及功能应用举例
按I2C总线协议规约,PCF8563有唯一的器件地址0A2H。
如图4所示为PCF8563应用电路原理图,下面首先给出基本的接口软件,然后举例说明各种功能应用。
注:
电容C3的取值范围为1~20pF。
图4PCF8563应用电路原理图
1.时钟的读取和写入
(1)读时钟:
下面的程序将秒~年共七个字节的时间信息读出并放入MRD为首址的接收缓冲区中。
注意,时间读出后需进行整理(屏蔽无效位)方能得出正确的信息。
RCV8563:
MOVSLA,#0A2H;取器件地址
MOVSUBA,#02H;取读时间的首字节地址(从秒开始读)
MOVNUMBYTE,#07H;读七个时间信息
LCALLIRDNBYTE;读取时间并放入接收缓冲区中
MOVA,MRD;取秒字节
ANLA,#7FH;屏蔽无效位
MOVMRD,A
MOVA,MRD+1;取分钟字节
ANLA,#7FH;屏蔽无效位
MOVMRD+1,A
MOVA,MRD+2.;取小时字节
ANLA,#3FH;屏蔽无效位
MOVMRD+2,A
MOVA,MRD+3;取天字节
ANLA,#3FH;屏蔽无效位
MOVMRD+3,A
MOVA,MRD+4;取星期字节
ANLA,#07H;屏蔽无效位
MOVMRD+4,A
MOVA,MRD+5;取月字节
ANLA,#1FH;屏蔽无效位
MOVMRD+5,A
RET
(2)写时钟:
下面的程序将2000年6月20日星期3下午3点(15点)59分30秒的时间写入PCF8563。
SEND8563:
ACALLLOAD8563;将时间装入发送缓冲区(MTD)中
MOVSLA,#0A2H;取器件地址
MOVSUBA,#00H;取写入寄存器的首字节地址(从00H开始写)
MOVNUMBYTE,#09H;写七个时间信息和2个控制命令
LCALLIWRNBYTE;写时间
RET
LOAD8563:
MOVMTD,#00H;启动时钟
MOVMTD+1,#1FH;设置报警及定时器中断,定时器中断为脉冲形式
MOVMTD+2,#30H;以下分别将秒至年的时间写入发送缓冲区中
MOVMTD+3,#59H
MOVMTD+4,#15H
MOVMTD+5,#20H
MOVMTD+6,#02H
MOVMTD+7,#06H
MOVMTD+8,#00H
RET
2.主要功能的应用
PCF8563是一多功能时钟芯片,必须谨慎的使用这些功能(其中最主要的就是正确的设置功能参数),否则会产生意外的错误。
下面给出一些可能会用到的设置程序。
(1)报警功能的设置
PCF8563共有四种报警方式,分别为小时报警(每小时的同一分钟时刻报警)、日报警(每天的同一小时时刻报警)、月报警(每月的同一天时刻报警)和星期报警(每星期的同一天时刻报警)。
发生报警时AF位变为1。
设置报警有效的方法是将相应报警寄存器的最高位AE置0。
若同时置AIE=1,则在AF置1的同时将在/INT引脚产生一个中断(低电平有效),清除中断信号的方法是软件清AF。
由此看出,AIE相当于单片机中的中断允许控制位,而AF相当于中断申请标志位。
例:
让PCF8563在每小时的30分钟时产生报警并在/INT端产生一个中断给单片机P87LPC764。
●取原控制信息(目的是不破坏原来的配置)
MOVSLA,#0A2H;取器件地址
MOVSUBA,#01H;取中断控制字节地址
MOVNUMBYTE,#01H
LCALLIRDNBYTE;读中断控制字节信息
RET
●中断配置
MOVA,MRD
ORLA,#02H;置AIE=1
MOVMTD,A
MOVSUBA,#01H;取中断控制字节地址
MOVNUMBYTE,#01H
LCALLIWRNBYTE;送中断控制字节命令
RET
●报警配置
MOVMTD,#30H;30分报警时刻送发送缓冲区(最高位AE为0,报警有效)
MOVSUBA,#09H;取小时报警控制字节地址
MOVNUMBYTE,#01H
LCALLIWRNBYTE;送报警信息
RET
以上配置完成后,即可在/INT脚产生中断信号,在软件清除AF位之前,该中断信号一直有效。
清除中断信号的程序如下:
●取原控制信息(目的是不破坏原来的配置)
MOVSLA,#0A2H;取器件地址
MOVSUBA,#01H;取中断控制字节地址
MOV