15.6I2C总线实时时钟/日历芯片PCF8563 PCF8563是PHILIPS公司推出的I2C总线接口功能的低功耗CMOS实 时时钟/日历芯片,芯片最大总线速度为400 kbits/s。PCF8563的多种报警 功能、定时器功能、时钟输出功能以及中断输出功能能完成各种复杂的定 时服务,甚至可为单片机提供看门狗功能。内部时钟电路、内部振荡电路 内部低电压检测电路以及两线制I2C总线通讯方式不但使外围电路极其简 洁,而且也增加了芯片的可靠性。同时每次读写数据后,内嵌的字地址寄 存器会自动产生增量。因而PCF8563是一款性价比极高的时钟芯片,已被 广泛用于电表水表气表电话传真机便携式仪器。其主要技术指标如下: (1)内含复位电路、振荡器电容和掉电检测电路: (2)400KHz的I2C总线(VDD=1.8~5.5V),其从地址读时为0A3H,写时 为0A2H: (3)宽电压范围:1.0-5.5V,复位电压标准值为0.9V (4)超低功耗:典型值为0.25μA(VDD-3.0V,Tamb-25℃): (5)可编程时钟输出频率为32.768KHz、1024Hz、32Hz、1Hz: (6)开漏中断输出,有四种报警功能和定时器功能。 1.芯片引脚定义及功能 PC℉8563的引脚如图11.25所示,引脚功能说明如下: (1)OSC:振荡器输入: (2)OSCO:振荡器输出: (3)7:中断输出,开漏结构,低电平有效: (4)SDA:I2C总线串行数据引脚; (5)SCL:I2C总线串行时钟引脚:
(6)CLKOUT:时钟输出,开漏结构: (7)、VDD、VSS:正电源、地 0sco日PCF8s63巳aKoT NT口 口scL vss SDA 图11.25PCF8563的引脚 2.内部寄存器 PCF8563有16个位寄存器,一个可自动增量的地址寄存器,一个内置 32768Hz的振荡器,一个分频器、一个可编程时钟输出、一个定时器、一 个报警器、一个掉电检测器和一个400KHz的I2C总线接口。所有16个寄 存器设计成为可寻址的8位并行寄存器,但不是所有位都有用。00H、01H 为控制寄存器和状态寄存器:02H、08H为时钟计数器(秒~年计数器): O9HOCH为报警寄存器:ODH为控制CLKOUT管脚的输出频率的时钟输 出寄存器:OEH和OFH分别用于定时器控制寄存器和定时器寄存器。秒、 分钟、小时、日、月、年、分钟报警、小时报警、日报警寄存器编码格式 为BCD。 (1)二进制格式寄存器 PCF8563的内部二进制格式寄存器如表11.4所示 表11.4PCF8563内部寄存器 地址尚行器名称 D7 D6 D5 D4 D3 D2 DI DO 00H控状态尚存器1 TESTI 0 STOP 0 TESTC 0 0 0 01H轻状态岗存器2 0 0 0 TVTP AIE T亚 ODH CLKOUT输出存器 FE FDI FDO 0EH定时控制寄存器 TE TDI TDO 0FH定时器倒计数数值寄存器 定时器倒计数数值(进制)
控制/状态寄存器1的D6、D4、D2、D1、D0缺省值置0,其余各位的功能 如表11.5所示 表11.5控制/状态寄存器1 位符号描述 D7TEST1TEST1-0时为普通模式,TEST1-1时为EXT_CLK测减核式 DS STOP STOP0时芯片时钟运行,STOP-1时所有芯片分器异步置逻辑0,芯片时钟停什运 行,(CLKOUT在32.768kHz时可用) D3 TESTC TE5TC0时电源复位功能尖效(普通模式时置逻0,TESTC1电源复位功能有效 控制/状态寄存器2的D7、D6、D5缺省值置0,其余各位的功能如表11.6 所示。 表11.6控制/状态寄存器2 位符号捞述 D4 TIT/P TTP-0:当F有效时N7有效取决于T正的状态.TP=1:NT脉汁有效取 决于TE的状态.若AF和AE都有效时则N7一直有效。 D3 AF 当根整发生时,AF被置1:在定时器倒计数结束时,T下被国1,它们在被软件重 D2 TF 写前 一保持原有值若定时器和报中断都请求时中断源由A和T决定,芳 要使清除一个标志位而防上另一标惠位被重写,应运用逻指令AD。 DI AIE 标志位A正和T正决定一个中断的请求有效或无效,当AF或TF中一个为1时, DO TIE 中断是A正和T正都置1时的逻辑或。A正0时报警中断无效,AE-1时报答中 断有效,T正0时定时器中新无效,T正1时定时器中断有效, AF和TF值的功能如表11.7所示。 表11.7AF和TF值的功能 R/W AF 值捞述 值描述 读0 报警标志无效 0 定时器标志无效 拟警标志有效 1 定时器杯志有效 写0 批警标志被清除 0 定时器标志被清除 1 报警标志保持不变1 定时器标志保村不变 w7的操作如表11.8所示。其中n为倒计数定时器的数值,当n=0时定 时器停止工作。 表11.8w7的操作
时钟源 WT周期 (Hz) n-1 a>I 096 1/8192 14096 64 1/28 164 1 1/64 1/64 1/60 164164 CLKOUT频率寄存器各位的描述如表11.9所示。 表11.9 CLKOUT频率寄存器 位 符号☐精述 D7 FE FE 0 CLKOUT输出被禁止并设成高阻抗 FE1 CLKOUT输出有效 D6-D2 无效 用于控制CLKOUT的须率输出管测 D1-DO FD2 00:32.768kHz:01:1024H7 10:32H:11:1业 定时寄存器是一个8位的倒计数定时器,它由定时控制器中的位TE决定 是否有效,定时器的时钟也可以由定时器控制器选择,其它定时器功能, 如中断产生,由控制状态寄存器2控制。为了能精确读到倒计数的数值,2C 总线时钟SCL的频率应至少为所选定时器时钟频率的两倍。定时控制器寄 存器的各位功能如表11.10所示。 表11.10定时控制器寄存器 符号描述 D7 TE TE0时定时器无效:TE1时定时器有效 D6-D2 无用 定时器时钟频离选择位,决定倒计数定时零的时钟须率。 00:4096H2:01:64H D0TD010:1: 11:1V6oH (2)BCD格式寄存器 PCF8563的内部BCD格式寄存器如表11.11所示 表11.11PCF8563的内部BCD格式寄存器 地址寄布器名称D7D6D5D4D3D2D1D0 02h秒 L00-59BCD码格式数
03H分钟 00-59BCD码格式数 04H小时 00-23BCD码格式数 05H 01-31BCD码格式数 06 0-6 07H月纪 01-12BCD码格式数 08H 年 0099BCD码格式数 09H 分钟报答 AE0-59BCD格式数 OH 小时报警 AE 00-23BCD码格式数 0BH日报警 0131BCD码格式数 OCH足捌报警 AE --0-6 秒寄存器:VL=0时保证准确的时钟/日历数据,VL=1时不保证准确的时钟 日历数据 月/世纪寄存器:世纪位C=0时指定世纪数为20××,C=1时指定世纪数为 19××。 报警寄存器:AE-O时报警有效,AE=1时报警无效。 3.PCF8563与单片机的接口 PCF8563与单片机的接口电路如图11.26所示。 VDD PCF8563 osCI VDD 32768 IC9-51 osco 公 SDA 034 CLKOUT 图11.26PCF8563与单片机的接口电 由于PCF8563采用I2C串行总线,所以总线上需要接上拉电阻。由于 PCF8563的中断输出及时钟输出均为开漏结构,所以也要外接上拉电阻, 若不使用这两个信号,对应的上拉电阻可以不用。对于PCF8563芯片,需 外接时钟晶振32768Hz和15pF的晶振匹配电容,实际应用时可以作相应的
调整,以使RTC获得更高精度的时钟源。一般晶振匹配电容在15pF一21pF 之间调整,15pF电容时时钟频率略偏高,21pF电容时时钟频率略偏低。 4.软件设计 按I2C总线协议规约,PCF8563有唯一的器件地址A2H,软件设计首先要 把2C软件包复制到用户程序相应的目录下,然后在用户主程序开头加入 #include即可以使用内部的函数。对PCF8563的读写操作只需调用 IRevStr(uchar sla,uchar suba,uchar *s,uchar no)ISendStr(uchar sla,uchar suba,uchar*s,uchar no)函数就可以了。软件流程如图1l.27所示。 扦始 天 延时 图11.27PCF8563接口程序流程 相应的C51程序如下,该程序先向PCF8563写入2012年7月1日,星期 天,0点00秒为起始时间,而后循环读出其中的数据存放在q[数组中, 若有显示系统,可以将q中的时间显示出来。 #include #define PCF8563 0xA2 /定义器件地址 #define SUBADDR 0x02 指定操作地址
main uchar p[7={0x0,0x0,0x0,0x06,0x01,0x07,0x0c;/2012.7.1; 星期天,0点00秒 uchar q[7]; uint i; bit bp; for(i=0;i<7;i++) bp=ISendStr((PCF8563,SUBADDR+i,p+i,I;/向各时钟寄存器 写入初始数据 while(1) for(i-0;i<7;i计+) bp=IRcvStr(PCF8563,SUBADDR+i,q+i,1):/PCF8563 时钟寄存器 /屏蔽无效位 q[0]&=0x7F;//second q[1]&=0x7F;//minute q[2]&=0x3F;//hour q[3]&=0x3F;/day
q[4]&=0x07;/week q[5]&=0xIF;//month q[6]&=0xFF;//year delay(; } 15.7I2C总线数字温度传感器芯片LM75A LM75A是一个高速I2C总线接口的数字温度传感器,可以在-55℃~+125 ℃的温度范围内将温度直接转换为数字信号,并可实现0.125℃的精度.CPU 可以通过2C总线直接读取其内部寄存器中的数据,并可通过2C总线对4 个数据寄存器进行操作,以设置成不同的工作模式。LM75A有3个可选的 逻辑地址引脚,使得同一总线上可同时连接8个器件而不发生地址冲突。 LM75A可配置成不同的工作模式。它可设置成在正常工作模式下周期性地 对环境温度进行监控,或进入关断模式来将器件功耗降至最低。过热关断 输出OS有两种可选的工作模式(OS比较器模式和OS中断模式),OS输 出可选择高电平或低电平有效。正常工作模式下,当器件上电时,OS工作 在比较器模式,温度阈值为80℃,滞后阈值为75℃。 1.芯片引脚定义及说明 LM75A的引脚如图11.28所示,引脚功能说明如下: SDA SCL■ ☐A0 LM75A 0S■ □A GND口 图11.28LM75A的引脚图
(1)A2、A1、A0:器件地址选择线,用于多个器件级联时设置器件地址, 最多可以级联8个同类型器件: (2)OS:过热关断输出,开漏输出结构: (3)SCL;I2C总线串行时钟线: (4)SDA:I2C总线串行数据线: (5)VDD:电源正: (6)GND:电源地 2.LM75A的寄存器 LM75A内部有温度寄存器Temp、配置寄存器、滞后寄存器Thyst和过温关 断闽值寄存器Tos等4个寄存器,地址分别为0x00、0x01、0x02和0x03: (1)温度寄存器Temp:LM75A的内部温度寄存器Temp是一个只读寄存 器,地址为0x00。它包含2个8位的数据字节,由一个高数据字节(MS) 和一个低数据字节(LS)组成。这两个字节中只有11位用来存放分辨率为 0.125℃的Temp数据(以二进制补码数据的形式),如表11.12所示。对于 8位的I2C总线来说,只要从LM75A的温度寄存器的“00地址”连续读两 个字节即可得到温度数值(温度的高位在前,低位在后)。 表11.12Temp寄存器 根据11位的Temp数据来计算温度值的方法为:若D10=0,温度值(℃) =十Temp数据×0.125℃:若D10=1,温度值(℃)=-Temp数据的二进 制补码×0.125℃。 (2)配置寄存器:配置寄存器为8位可读写寄存器,其位功能分配如表 11.13所示。 表11.13配置寄存器
D7D6 D5 D4 D3 D2 DI DO 保留 O5故障列队0s极性O5比较中断关断 D7~D5:保留,默认为0。 D4D3:用来编程0S故障队列。00到11代表的值分别为1、2、4、6,默 认值为00 D2:用来选择OS极性。D2=0,OS低电平有效(默认):D2=1,OS高电 平有效。 D1:选择OS工作模式。D1-0,配置成比较器模式,直接控制外围电路: D1=1,OS控制输出功能配置成中断模式,以通知MCU进行相应处理。 D0:选择器件工作模式。D0-0,LM75A处于正常工作模式(默认):D0=1, LM75A进入关断模式。 (3)滞后寄存器Thyst:滞后寄存器是读/写寄存器,也称为设定点寄存器, 提供了温度控制范围的下限温度。每次转换结束后,Temp数据(取其高9 位)将会与存放在该寄存器中的数据相比较,当环境温度低于此温度的时 候,LM75A将根据当前模式(比较、中断)控制OS引脚作出相应反应。 该寄存器都包含2个8位的数据字节,但2个字节中,只有9位用来存 储设定点数据(分辨率为0.5℃的二进制补码),其数据格式如表11.14所示, 默认为75℃。 表11.14滞后寄存器数据格式 D15D14D8 D7 D6-D0 T8 T7 T6 TS T4 T3 T2 TI TO (4)过温关断阈值寄存器TOs:过温关断寄存器提供了温度控制范围的上 限温度。每次转换结束后,Temp数据(取其高9位)将会与存放在该寄存 器中的数据相比较,当环境温度高于此温度的时候,LM75A将根据当前模