专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
FPGA
Xilinx FPGA入门连载63:基于数码管显示的RTC读取之RTC芯片解析
2020-02-06 11:17
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
FPGA
9265
1
1
本帖最后由 rousong1989 于 2016-3-31 19:01 编辑
Xilinx FPGA
入门连载
63
:基于数码管显示的
RTC
读取之
RTC
芯片解析
特权同学,版权所有
配套例程和更多资料下载链接:
http://pan.baidu.com/s/1jGjAhEm
1 RTC
芯片解析
本实例使用的RTC实时时钟芯片是型号为PCF8563,是PHILIPS 公司推出的一款工业级内含IIC 总线接口功能的具有极低功耗的多功能时钟/日历芯片。PCF8563的多种报警功能、定时器功能、时钟输出功能以及中断输出功能能完成各种复杂的定时服务,甚至可为单片机提供看门狗功能。内部时钟电路、内部振荡电路、内部低电压检测电路(1.0V) 以及两线制IIC 总线通讯方式,不但使外围电路及其简洁,而且也增加了芯片的可靠性。同时每次读写数据后内嵌的字地址寄存器会自动产生增量,因而PCF8563 是一款性价比极高的时钟芯片,它已被广泛用于电表、水表、气表、电话、传真机、便携式仪器以及电池供电的仪器仪表等产品领域。
特性
● 宽电压范围1.0 5.5V 复位电压标准值Vlow=0.9V● 超低功耗典型值为0.25 A VDD=3.0V,Tamb=25°C● 可编程时钟输出频率为32.768KHz/1024Hz/32Hz/1Hz● 四种报警功能和定时器功能● 内含复位电路振荡器电容和掉电检测电路● 开漏中断输出● 400kHz的IIC 总线(VDD=1.8-5.5V) 其从地址读0xa3,写0xa2PCF8563的引脚排列及描述如下所示。
PCF8563有16 个位寄存器:一个可自动增量的地址寄存器,一个内置32.768KHz 的振荡器(带有一个内部集成的电容),一个分频器用于给实时时钟RTC 提供源时钟,一个可编程时钟输出,一个定时器,一个报警器,一个掉电检测器和一个400KHz的IIC 总线接口。所有 16 个寄存器设计成可寻址的8 位并行寄存器,但不是所有位都有用。前两个寄存器(内存地址00H 01H)用于控制寄存器和状态寄存器,内存地址02H~08H 用于时钟计数器(秒~年计数器),地址09H~0CH用于报警寄存器(定义报警条件),地址0DH 控制CLKOUT 引脚的输出频率,地址0EH 和0FH分别用于定时器控制寄存器和定时器寄存器。秒、分钟、小时、日、月、年、分钟报警、小时报警、日报警寄存器,编码格式为BCD,星期和星期报警寄存器不以BCD 格式编码。当一个 RTC 寄存器被读时,所有计数器的内容被锁存。因此,在传送条件下,可以禁止对时钟日历芯片的错读。PCF8563 共有16 个寄存器,其中00H~01H为控制方式寄存器;09H~0CH为报警功能寄存器;0DH为时钟输出寄存器;0EH 和0FH 为定时器功能寄存器,02H~08H为秒~年时间寄存器。各寄存器的位描述如下示。
看了这么多条条框框的寄存器描述,大家一定有些累了,下面我们来电实用的,和大家简单说说如何使用这个芯片初始设置或读出年月日时分秒等信息。我们将并且只能够使用IIC接口来读写这个芯片的各个寄存器,IIC接口有一定的协议,需要按照协议规定送起始位、器件地址、读写寄存器地址、读写数据、停止位等,这个内容我们下一小节的设计中详细探讨,后面我们先抛开IIC具体读写控制时序,先从宏观角度来把该读写哪些寄存器这码事理清楚。正常来说,一个芯片的使用,无外乎设置一下控制寄存器,然后读写相关数据,必要的话产生一个中断,此时可能回去看看状态寄存器。不过,我们这颗RTC更简单,地址0x00和0x01的控制寄存器1和2默认状态即可,我们只需要读写时间便可,其他什么报警、中断等功能留待大家有兴趣自己琢磨去。好,那么简单又是怎么操作的,不急,精彩马上送到。地址0x02~0x08寄存器的内容是秒、分、时、日、星期、月、年信息,我们只要操作他们便可以了。假设现在我们就是要把这些基本的时间信息读出来,然后以我们最常规的大家都能看得懂的10进制方式显示出来,那么如何操作?就按下面这个步骤就好,至于原理,大家回去对照各个寄存器的定义稍微一想也就能够领会。 ① 读地址0x02的秒寄存器数据second,在显示时,十位数据为((second&0x70)>>4),个位的数据为(second&0x0f)。 ② 读地址0x03的分钟寄存器数据minute,在显示时,十位数据为((minute&0x70)>>4),个位的数据为(minute&0x0f)。 ③ 读地址0x04的小时寄存器数据hour,在显示时,十位数据为((hour&0x30)>>4),个位的数据为(hour&0x0f)。 ④ 读地址0x05的日寄存器数据day,在显示时,十位数据为((day&0x30)>>4),个位的数据为(day&0x0f)。 ⑤ 读地址0x06的星期寄存器数据week,在显示时,数据为(week&0x07)。 ⑥ 读地址0x07的月份寄存器数据month,在显示时,十位数据为((month&0x10)>>4),个位的数据为(month&0x0f)。 ⑦ 读地址0x08的年寄存器数据year,在显示时,十位数据为((year&0xf0)>>4),个位的数据为(year&0x0f)。 以上这些寄存器值,如果我们希望重设,直接往里面写数据即可,这样我们便可以调整当前的时间和实际时间同步,因为我们芯片是由3V的纽扣电池供电的,所以即便我们的电路板下电后,芯片内部的时间计数单元还是在正常工作运转的。
发送
看不清?
0条回答
一周热门
更多
>
相关问题
如何用FPGA驱动LCD屏?
5 个回答
请教一下各位专家如何用FPGA做eDP接口?
6 个回答
FPGA CH7301c DVI(显示器数字接口)没有数字输出
7 个回答
100颗FPGA的板子,开开眼界
6 个回答
求教自制最小系统版
10 个回答
基于FPGA的X射线安检设备控制器
2 个回答
CycolneIVGX核心板,可扩展PCIE,光纤接口,大家来鉴赏一下
6 个回答
关于VHDL或Verllog程序稳定性的问题
11 个回答
相关文章
嵌入式领域,FPGA的串口通信接口设计,VHDL编程,altera平台
0个评论
Xilinx的FPGA开发工具——ISE开发流程
0个评论
基于FPGA的详细设计流程
0个评论
干货分享,FPGA硬件系统的设计技巧
0个评论
一种通过FPGA对AD9558时钟管理芯片进行配置的方法
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
FPGA
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
一周热门 更多>