PCF8563芯片时序程序.docx

上传人:b****6 文档编号:16054114 上传时间:2023-07-10 格式:DOCX 页数:20 大小:20.81KB
下载 相关 举报
PCF8563芯片时序程序.docx_第1页
第1页 / 共20页
PCF8563芯片时序程序.docx_第2页
第2页 / 共20页
PCF8563芯片时序程序.docx_第3页
第3页 / 共20页
PCF8563芯片时序程序.docx_第4页
第4页 / 共20页
PCF8563芯片时序程序.docx_第5页
第5页 / 共20页
PCF8563芯片时序程序.docx_第6页
第6页 / 共20页
PCF8563芯片时序程序.docx_第7页
第7页 / 共20页
PCF8563芯片时序程序.docx_第8页
第8页 / 共20页
PCF8563芯片时序程序.docx_第9页
第9页 / 共20页
PCF8563芯片时序程序.docx_第10页
第10页 / 共20页
PCF8563芯片时序程序.docx_第11页
第11页 / 共20页
PCF8563芯片时序程序.docx_第12页
第12页 / 共20页
PCF8563芯片时序程序.docx_第13页
第13页 / 共20页
PCF8563芯片时序程序.docx_第14页
第14页 / 共20页
PCF8563芯片时序程序.docx_第15页
第15页 / 共20页
PCF8563芯片时序程序.docx_第16页
第16页 / 共20页
PCF8563芯片时序程序.docx_第17页
第17页 / 共20页
PCF8563芯片时序程序.docx_第18页
第18页 / 共20页
PCF8563芯片时序程序.docx_第19页
第19页 / 共20页
PCF8563芯片时序程序.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

PCF8563芯片时序程序.docx

《PCF8563芯片时序程序.docx》由会员分享,可在线阅读,更多相关《PCF8563芯片时序程序.docx(20页珍藏版)》请在冰点文库上搜索。

PCF8563芯片时序程序.docx

PCF8563芯片时序程序

PCF8563芯片时序程序

实时时钟,日历芯片PCF8563的驱动方

实时时钟,日历芯片PCF8563的驱动方法

PCF8563是低功耗的CMOS实时时钟,日历芯片,它提供一个可编程时钟输出,一个中断输出和掉电检测器,所有的地址和数据通过I2C总线接口串行传递。

最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动产生增量。

它在实际的开发中有着广泛的应用,如移动电话、便携仪器、传真机、电池电源产品等。

其特性如下:

1、低工作电流:

典型值为0.25μA(VDD=3.0V,Tamb=25?

时)。

2、世纪标志

3、大工作电压范围:

1.0,5.5

4、低休眠电流;典型值为0.25μA(VDD=3.0V,Tamb=25?

5、400KHz的I2C总线接口(VDD=1.8,5.5V时)。

6、可编程时钟输出频率为:

32.768KHz,1024Hz,32Hz,1Hz。

7、报警和定时器。

8、掉电检测器。

9、内部集成的振荡器电容。

10、片内电源复位功能。

11、I2C总线从地址:

读,0A3H;写,0A2H。

12、开漏中断引脚。

PCF8563的引脚配置图:

引脚功能详述如下:

名称引脚编号功能描述

OSCI1振荡器输入

OSCO2振荡器输出

/INT3中断输出(开漏;低电平有效)

VSS4地

SDA5串行数据I/O

SCL6串行时钟输入

CLKOUT7时钟输出(开漏)

VDD8正电源

PCF8563的功能框图:

功能描述:

PCF8563有16个,位寄存器:

一个可自动增量的地址寄存器,一个内置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)控制,定时器控制寄存器用于设定定时器的频率(4096,64,1,或1/60Hz),以及设定定时器有效或无效。

定时器从软件设置的8位二进制数倒计数,每次倒计数结束,定时器设置标志位TF,定时器标志位TF只可以用软件清除,TF用于产生一个中断(/INT),每个倒计数周期产生一个脉冲作为中断信号。

TI/TP控制中断产生的条件。

当读定时器时,返回当前倒计数的数值。

3)CLKOUT输出

管脚CLKOUT可以输出可编程的方波。

CLKOUT频率寄存器(地址0DH)决定方波的频率,CLKOUT可以输出32.768KHz(缺省值),1024,32,1Hz的方波。

CLKOUT为开漏输出管脚,通电时有效,无效时为高阻抗。

4)复位

PCF8563包含一个片内复位电路,当振荡器停止工作时,复位电路开始工作。

在复位状态下,I2C总线初始化,寄存器TF、VL、TD1、TD0、TESTC、AE被置逻辑,,其它的寄存器和地址指针被清,。

5)掉电检测器和时钟监控

PCF8563内嵌掉电检测器,当VDD低于Vlow时,位VL(VoltageLow,秒寄存器的位7)被置,,用于指明可能产生不准确的时钟,日历信息,VL标志位只可以用软件清除(当VDD慢速降低(例如以电池供电)达到Vlow时,标志位VL被设置,这时可能会产生中断。

6)寄存器结构

寄存器概况如下:

D7D6D5D4D3D2D1D0地址寄存器名称

00HTEST0STOP0TESTC000控制,状态寄存器1

01H000TI/TPAFTFAIETIE控制,状态寄存器2

0DHFE-----FD1FD0CLKOUT频率寄存器

0EHTE-----TD1FD1定时器控制寄存器

0FH定时器倒计数数值寄存定时器倒计数数值

BCD格式寄存器概况如下:

D7D6D5D4D3D2D1D0地址寄存器名称

02HVL秒00~59BCD码格式数

03H分钟,00~59BCD码格式数

04H小时,,00~59BCD码格式数

05H日,,01~31BCD码格式数

06H0~6星期,,,,,

07HC月,世纪,,01~12BCD码格式数

08H年00~99BCD码格式数

09HAE分钟报警00~59BCD码格式数

0AHAE小时报警,00~23BCD码格式数

0BHAE日报警,01~31BCD码格式数

0CHAE0~6星期报警,,,,

1.控制,状态寄存器1

控制,状态寄存器1位描述(地址00H)

位符号描述

7TEST1TEST1=0普通模式

TEST1=1EXT_CLK测试模式

5STOPSTOP=0芯片时钟运行

STOP=1所有芯片分频器异步置逻辑0

芯片时钟停止运行

(CLKOUT在32768Hz时可用)3TESTCTESTC=0电源复位功能失效

(普通模式时置逻辑0)

TESTC=1电源复位功能有效

6,4,2,1,00缺省值置逻辑0

2.控制,状态寄存器2

控制,状态寄存器2位描述(地址01H)

位符号描述

7,6,50缺省值置逻辑0

4TI/TFTI/TP=0:

当TF有效时INT有效(取决于TIE的状态)

TI/TP=1:

INT脉冲有效(取决于TIE的状态)

注意:

若AF和AIE都有效时,则INT一直有效3AF当报警发生时,AF被置逻辑1;在定时器倒计数结束时,

TF被置逻辑1,它们在被软件重写前一直保持原有值,2TF

若定时器和报警中断都请求时,中断源由AF和TF决定,

若要使清除一个标志位而防止另一标志位被重写,应运

用逻辑指令AND。

1AIE标志位AIE和TIE决定一个中断的请求有效或无效,当

AF或TF中一个为“1”时中断是AIE和TIE都置“1”0TIE

时的逻辑或。

AE=0:

报警中断无效;AIE=1:

报警中断有效

TIE=0:

定时器中断无效;TIE=1:

定时器中断有效

/INT操作(位TI/TP=1)

源时钟/INT周期

(Hz)n=1n>1

40961/81921/4096

641/1281/6411/641/641/601/641/64

注1.TF与/INT同时有效

注2.n为倒计数定时器的数值,当n=0时定时器停止工作。

AF与TF值描述

R/W位:

AF位:

TF

值描述值描述

00Read读报警标志无效定时器标志无效

11报警标志有效定时器标志有效

00Write写报警标志被清除定时器标志被清除

11报警标志保持不变定时器标志保持不变

3.秒、分钟与小时寄存器

秒,VL寄存器位描述(地址02H)

位符号描述

7VLVL=0:

保证准确的时钟,日历数据

VL=1:

不保证准确的时钟,日历数据

6,0<秒>代表BCD格式的当前秒数值,值为00,59

例如:

<秒>=1011001,代码59秒

分钟寄存器位描述(地址03H)

位符号描述

7,无效

6,0<分钟>代表BCD格式的当前分钟数值,

值为00,59

小时寄存器位描述(地址04H)

位符号描述

7,6,无效

5,0<小时>代表BCD格式的当前小时数值,

值为00,23

4.日、星期、月,世纪与年寄存器

日寄存器位描述(地址05H)

位符号描述

7,6,无效

5,0<日>代表BCD格式的当前日数值,值为01,31。

当年计数器的值是闰年时,PCF8563自动给

二月增加一个值,使其成为29天

星期寄存器位描述(地址06H)

位符号描述

7,6,无效

5,0<日>代表BCD格式的当前日数值,值为01,31。

当年计数器的值是闰年时,PCF8563自动给

二月增加一个值,使其成为29天

星期分配表

日(day)位2位1位0

000星期日

001星期一

010星期二

011星期三

100星期四

101星期五

110星期六

月,世纪寄存器位描述(地址07H)

位符号描述

7C世纪位:

C=0指定世纪数为20××,C=1指定

世纪数为19××,“××”为年寄存器中的值,参

见表18。

当年寄存器中的值由99变为00时,

世纪位会改变。

6,5,无用

4,0<月>代码BCD格式的当前月份,值为01,12

月分配表:

月份位4位3位2位1位0

00001一月

00010二月

00011三月

00100四月

00101五月

00110六月

00111七月

01000八月

01001九月

10000十月

10001十一月

10010十二月

年寄存器位描述(地址08H)

位符号描述

7,0<年>代表BCD格式的当前年数值,值为00,99。

5.报警寄存器

当一个或多个报警寄存器写入合法的分钟、小时、日或星期数值并且它们相应的AE(AlarmEnable)位为逻辑,,以及这些数值与当前的分钟、小时、日或星期数值相等,标志位AF(AlarmFlag)被设置,AF保存设置值直到被软件清除为止,AF被清除后,只有在时间增量与报警条件再次相匹配时才可再被设置。

报警寄存器在它们相应位AE置为逻辑,时将被忽略。

分钟报警寄存器位描述(地址09H)

位符号描述

7AEAE=0,分钟报警有效;

AE=1,分钟报警无效

6,0<分钟报警>代表BCD格式的分钟报警数值,

值为00,59

小时报警寄存器位描述(地址0AH)

位符号描述

7AEAE=0AE=0:

小时报警有效,AE=1:

报警无效

6,0<小时报警>代表BCD格式的小时报警数值,

值为00,23

日报警寄存器位描述(地址0BH)

位符号描述

7AEAE=0:

日报警有效。

AE=1:

日报警无效。

6,0<日报警>代表BCD格式的日报警数值,

值为00,31

星期报警寄存器位描述(地址0CH)

位符号描述

7AEAE=0;星期报警有效。

AE=1;无效

6,0<星期报警>代表BCD格式的星期报警数值,

值为0,6

6.CLKOUT频率寄存器

CLKOUT频率寄存器位描述(地址0DH)

位符号描述

7FEFE=0:

CLKOUT输出被禁止并设成高阻抗。

FE=1:

CLKOUT输出有效。

6,2,无效

1FD1用于控制CLKOUT的频率输出管脚0FD0(fCLKOUT)CLKOUT频率选择表

FD1FD0fCLKOUT

0032768Hz

011024Hz

1032Hz111Hz

7.倒计数定时器寄存器

定时器寄存器是一个8位字节的倒计数定时器,它由定时器控制器中位TE决定有效或无效,定时器的时钟也可以由定时器控制器选择,其它定时器功能,如中断产生,由控制,状态寄存器2控制。

为了能精确读回倒计数的数值,I2C总线时钟SCL的频率应至少为所选定定时器时钟频率的两倍。

定时器控制器寄存器位描述(地址OEH)

位符号描述

7TETE=0:

定时器无效。

TE=1:

定时器有效。

6,2,无用

1TD1定时器时钟频率选择位,决定倒计数定时器的

时钟频率,参见表26,不用时TD1和TD0应0TD0

设为“11”(1/60Hz),以降低电源损耗。

定时器时钟频率选择

TD1TD0定时器时钟频率(Hz)

004096

0164

101111/60

定时器倒计数数值寄存器位描述(地址OFH)

位符号描述

7,0<定时器倒计数数值>倒计数数值“n”,倒计数周期=n/

时钟频率

7)EXT_CLK测试模式

测试模式用于在线测试、建立测试模式和控制RTC的操作。

测试模式由控制,状态寄存器,的位TEST1设定,这时CLKOUT管脚成为输入管脚。

在测试模式状态下,通过CLKOUT管脚输入的频率信号代替片内的64Hz频率信号,每64个上升沿将产生,秒的时间增量。

注意:

进入EXT_CLK测试模式时时钟不与片内64Hz始终时钟同步,也确定不出预分频的状态。

1.操作举例

、进入EXT_CLK测试模式:

设置控制,状态寄存器,的位7(TEST=1)。

、设置控制,状态寄存器,的位5(STOP=1)。

、清除控制,状态寄存器,的位5(STOP=0)。

、设置时间寄存器(秒、分钟、小时、日、星期、月,世纪和年)为期望值。

、提供32个时钟脉冲给CLKOUT。

、读时间寄存器观察第一次变化。

、提供64个时钟脉冲给CLKOUT。

8)电源复位(POR)失败模式

POR的持续时间直接与振荡器的起动时间有关。

一种内嵌的长时间起动的电路可使POR失效,这样可使设备测试加速。

这种模式的设定要求I2C总线管脚SDA和SCL的信号波形如下图所示,图中所有的时间值为所需的最小值。

当进入失败模式时,芯片立即停止复位,操作通过I2C总线进入EXT_CLK测试模式。

设置位TESTC逻辑0可消除失败模式,再次进入失败模式只有在设置TESTC为逻辑,后进行。

在普通模式时设置TESTC为逻辑0没有意义,除非想阻止进入POR失败模式。

PCF8563的驱动程序如下:

/*------------------------------------PCF8563I2C总线从地址:

读:

0A3H;写:

0A2H;

寄存器

(地址00H,01H)用于控制寄存器和状态寄存器

(地址02H,08H)用于时钟计数器(秒~年计数器)

(地址09H,0CH)用于报警寄存器(定义报警条件)

(地址0DH)控制CLKOUT管脚的输出频率

(地址0EH和0FH)分别用于定时器控制寄存器和定时器寄存器。

秒、分钟、小时、日、月、年、分钟报警、小时报警、日报警寄存器,编码格式为BCD,星期和星期报警寄存器不以BCD格式编码。

5:

BCD格式寄存器概况

标明“,”的位无效

地址寄存器名称Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0

02h秒VL00,59BCD码格式数

03h分钟-00,59BCD码格式数

04h小时--00,59BCD码格式数

05h日--01,31BCD码格式数

06h星期-----0,6

07h月/世纪C--01,12BCD码格式数

08h年00,99BCD码格式数

09h分钟报警AE00,59BCD码格式数

0Ah小时报警AE-00,23BCD码格式数

0BH日报警AE-01,31BCD码格式数

0CH星期报警AE----0,6

------------------------------------*/

voidTime_putnum(unsignedchardatax){

unsignedchartemp;

temp=datax;

Store[0]=(temp>>4)&0x0f;/*十位*/

Store[1]=temp&0x0f;/*个位*/

}

/********************************************

内部函数,I2C开始

********************************************/

voidStart()

{

//EA=0;

SDA=1;

SCL=1;

delay

(2);

SDA=0;

delay

(2);

SCL=0;

}

/********************************************

内部函数,I2C结束

********************************************/

voidStop()

{

SDA=0;

SCL=0;

delay

(2);

SCL=1;

delay

(2);

SDA=1;

delay

(2);

//EA=1;

}

/**************************************************************************

内部函数,输出ACK,每个字节传输完成,输出ack=0,结束读书据,ack=1;***************************************************************************/

voidWriteACK(unsignedcharack){

SDA=ack;

delay

(2);

SCL=1;

delay

(2);

SCL=0;

}

/********************************************

内部函数,等待ACK

********************************************/

voidWaitACK()

{

unsignedcharerrtime=20;

SDA=1;

delay

(2);/*读ACK*/

SCL=1;

delay

(2);

while(SDA)

{

errtime--;

if(!

errtime)Stop();

}

SCL=0;

delay

(2);

}

/********************************************

内部函数.输出数据字节

入口:

B=数据

********************************************/

voidwritebyte(unsignedcharwdata){

unsignedchari;

for(i=0;i<8;i++)

{

if(wdata&0x80)SDA=1;

elseSDA=0;

wdata<<=1;

SCL=1;

delay

(2);

SCL=0;

}

WaitACK();//I2C器件或通讯出错,将会退出I2C通讯

}

/********************************************

内部函数.输入数据

出口:

B

********************************************/

unsignedcharReadbyte()

{

unsignedchari,bytedata;

SDA=1;

for(i=0;i<8;i++)

{

SCL=1;

bytedata<<=1;

bytedata|=SDA;

SCL=0;

delay

(2);

}

return(bytedata);

}

/********************************************

输出数据->pcf8563

********************************************/

voidwriteData(unsignedcharaddress,unsignedcharmdata)

{

Start();

writebyte(0xa2);/*写命令*/

writebyte(address);/*写地址*/

writebyte(mdata);/*写数据*/

Stop();

}

/********************************************

输入数据<-pcf8563

********************************************/

unsignedcharReadData(unsignedcharaddress)/*单字节*/{

unsignedcharrdata;

Start();

writebyte(0xa2);/*写命令*/

writebyte(address);/*写地址*/

Start();

writebyte(0xa3);/*读命令*/

rdata=Readbyte();

WriteACK

(1);

Stop();

return(rdata);

}

voidReadData1(unsignedcharaddress,unsignedcharcount,unsignedchar*buff)/*多字节*/

{

unsignedchari;

Start();

writebyte(0xa2);/*写命令*/

writebyte(address);/*写地址*/

Start();

writebyte(0xa3);/*读命令*/

for(i=0;i

{

buff[i]=Readbyte();

if(i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2