外国器件PCF8563I2C实时时钟/日历芯片在8051系统中的应用

2006-05-07 15:49:39来源: 国外电子元器件

低功耗CMOS实时时钟/日历芯片,文中介绍了PCF8563的结构、功能及工作原理。结合其在8051系统中的应用实例,给出了PCF8563与8051单片机的硬件接口电路和C语言软件编程程序。

总线 串行接口 PCF8563 BCD码 C语言

1 PCF8563简介

PCF8563是PHILIPS公司生产的低功耗CMOS实时时钟/日历芯片,芯片最大总线速度为400kbits/s,每次读写数据后,其内嵌的字地址寄存器器会自动产生增量。PCF8563可广泛应用于移动电话、便携仪器、传真机、电池电源等产品中。

PCF8563的引脚排列如图1所示,各引脚功能说明如表1所列。

PCF8563有16个8位寄存器,其中包括:可自动增量的地址寄存器、内置32.768kHz的振荡器(带有一个内部集成电容)、分频器(用于给实时时钟RTC提供源时钟)、可编程时钟输出、定时器、报警器、掉电检测器和400kHz的I2C总线接口。

所有16个寄存器设计成可寻址的8位并行寄存器,但不是所有位都有用。当一个RTC寄存器被读时,所有计数器的内容将被锁存,因此,在传送条件下,可以禁止对时钟/日历芯片的错读。

表2、表3所列为各寄存器概况及对应的内存地址和功能,同时列出了它们的BCD格式编码。表中“——”表示无效位,“0”表示此位应置逻辑。表3中的世纪位C=0指定世纪数为20XX,C=1指定世纪数为19XX。当年寄存器中的99变00时,世纪位才会改变。

表1 PCF8563的管脚描述

符  号 管脚号

描         述

OSCI 1 振荡器输入
OSCO 2 振荡器输出
INT 3 终端输出(开漏:低电平有效)
Vss 4
SDA 5 串行数据I/O
SCL 6 串行时钟输入
CLKOUT 7 时钟输出(开漏)
VDD 8 正电源

2 I2C总线

2.1 I2C总线特性

I2C总线用两条线(SDA和SCL)在芯片和模块间传递信息。SDA为串行数据线,SCL为串行时钟线,这两条线必须用一个上拉电阻与正电源相连,其数据只有在总线不忙时才可传送。I2C总线的系统配置参见图2,产生信号的设备是传送器,接收信号的设备是接收器,控制信号的设备是主设备,受控制信号的设备是从设备。

表2 寄存器概况

地址 寄存器名称 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
00H 控制/状态寄存器1 TEST 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 定时器倒计数数值寄存器 定时器倒计数数值

表3 BCD格式寄存器概况

地  址 寄存器名称 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
01H VL 00~59BCD码格式数
03H 分钟 - 00~59BCD码格式数
04H 小时 - - 00~23BCD码格式数
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

2.2 启动和停止条件

总线不忙时,数据线和时钟线保持在高电平。数据线(SDA)在下降沿而时钟线(SCL)为高电平时,为起动条件(S);数据线在上升沿而时钟线为高电平时为停止条件(P),参见图3。

2.3 位传送

每个时钟脉冲传送一个数据位,SDA线上的数据在时钟脉冲高电平时应保持稳定,否则将成为控制信号,参见图4。

2.4 标志位

在起动条件和停止条件之间,传送器传送给接收器的数据数量没有限制。在每个8位字节后加一个标志位,传送器便产生一个高电平的标志位,这时主设备产生一个附加标志位时钟脉冲。

从接受器必须在接收到每个字节后产生一个标志位,主接收器也必须在接收从传送器传送的每个字节后产生一个标志位。在标志位时钟脉冲出现时,SDA线应保持低电平(应考虑起动和保持时间)。传送器应在从设备接收到最后一个字节时变为低电平,而使接收器产生标志位,这时主设备即可产生停止条件。参见图5。

2.5 I2C总线协议

用I2C总线传递数据前,接收的设备应先标明地址,在I2C总线起动后,这个地址与第一个传送字节一起被传送出去。PCF8563可以作为一个从接收器或从传送器,此时的时钟信号线SCL只能输入信号线,数据信号线SDA则为一条双向信号线。PCF8563的从地址参见图6。

3 应用概述

图7所示为PCF8563的具体应用电路图,对图中石英晶片频率的调整,笔者给出3种可行性方法,供参考:

方法1:定值OSCI电容。计算所需的电容平均值,用此值的定值电容,通电后在CLKOUT管脚上测出的频率应为32.768kHz,测出的频率值偏差取决于石英晶片本身,电容偏差和器件之间的偏差平均为±5×10 -6。平均偏差可达5分钟/年。

方法2:OSCI微调电容。可通过调整OSCI管脚的微调电容式振荡器的频率来获得更高的精度,此时可测出通电时管脚CLKOUT上的信号频率为32.768kHz。

方法3:OSCI输出。直接测量管脚OSCI的输出。

4 程序范例

以下的C语言源程序是用8051单片机的普通I/O口(如P0.0/P0.4)模拟实现PCF8563的I2C时钟/日历芯片的操作,有字节写/读两种状态。程序中从地址的读地址为0A3H,写地址为0A2H.所发送的数据字节为9个,发送的初始数据在rom_sed[9]中,rom_sed[9]定义了寄存器中当前发送的值:控制/状态寄存器1为0,控制/状态寄存器2为0,秒寄存器为0,分钟寄存器55,小时寄存器为23,日寄存器为31,星期寄存器为6,月/世纪寄存器为0x12,年寄存器为0x99(即1999年12月31日23点55分0秒),当程序运行一段时间(5分钟)后,从地址寄存器02H开始读数据,数据存放在rom_rec7中,发现变量rom_rec7变为2000年1月1日0点0分。若外转帐电路有显示,则时间可以显示在面板上。

#include

#define byte unsigned char

sbit scl=0x81; //定义串行I/O口

sbit sda=0x80;

idata byte rom_sed[9];

idata byte rom_rec[7];

idata byte j,k;

bit flag,flag1;

void delay(void) //延时子程序

{data byte i;

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

}

void I_start(void) //发送I2C总线起始条件子程序

{sda=1;

;

scl=1;

delay();

sda=0;

delay();

scl=0;

;

}

void I_stop(void) //I2C总线停止条件子程序

{sda=0;

;

scl=1;

delay();

sda=1;

delay();

}

bit I_send(byte I_data) //字节数据传送子程序

{data byte i;

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

{sda-(bit)(I_data&0x80);

I_data=I_data<<1;

;

scl=1;

delay();

scl=0;

}

;;

sda=1; ;; //ready for receiving ACK bit

scl=1; ;; //start receiving ack bit

flag=0;

if(sda= =0)flag=0;

else flag=1; //return(~I_clock());

scl=0;

return(flag);

}

byte I_receive(void) //字节数据接收子程序

{ data byte i;

byte I_data=0;

sda=1;

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

{ I_data*=2;

;

scl=0;

delay();

scl=1; ;;

if(sda= =1)I_data++;

;;

}

scl=0; ;;;

sda=0;

if(flag1= =0){;;scl=1;delay();scl=0;} //not last receic_byte ACK

else{sda=1; ;;scl=1;delay();scl=0;flag1=0;} //the last receive_byte ~ACK

return(I_data);

}

main() //主程序

{data byte i;

rom_sed[0]=0x00; rom_sed[1]=0x00;

rom_sed[2]=0x00; rom_sed[3]=0x55;

rom_sed[4]=0x23; rom_sed[5]=0x31;

rom_sed[6]=0x06; rom_sed[7]=0x92;

rom_sed[8]=0x99;

for(i=0;i<255;i++)delay();

I_start();

if(~I_send(rom_sed[i]));

else;

}

I_stop();

}

else;

}

else;

start: I_start();

if(~I_send(0xa2)) //pcf_write address

{if(~I_send(0x02)) //pcf_status register address

{I_start();

if(~I_send(0xa3)) //write status register

{for(i=0;i<7;i++)

{if(i= =6)flag1=1;

else flag1=0;

rom_rec[i]=I_receive();

switch(i)

{case 1:rom_rec[i]=rom_rec[i]&0x7f;break;

ease2:

case3:rom_rec[i]=rom_rec[i]&0x3f;break;

case4:rom_rec[i]=rom_rec[i]&0x07;break;

case5:rom_rec[i]=rom_rec[i]&0x9f;brealk;default:break;

}

}

I_stop()

}

}

}

goto start;

}

关键字:日历  芯片  系统  应用

编辑: 引用地址:http://www.eeworld.com.cn/gykz/qrsxt/200605/4184.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
日历
芯片
系统
应用

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved