RTCReal-Time Clock)实时时钟为系统提供一个可靠的时间,并且在断电的情况下,RTC 实时时钟也可以通过电池供电,一直运行下去。RTC 通过类 SPI 总线向 FPGA 传送 8 位数据(BCD 码)。数据包括秒,分,小时,日期,天,月和年。在本实验中我们将读取 RTC 的时,,秒的数据通过串口发送到 PC
   PGL22G 开发板上 RTC 设计采用 DALLAS 公司的低功耗实时时钟芯片 DS1302, DS1302 VCC2为主电源,VCC1 为后备电源。在主电源关闭的情况下,也可以通过电池保持时钟的连续运行。DS1302 外接 32.768kHz 晶振为 RTC 电路提供振荡源。 RTC 部分的原理图如下图所示:
1.png
程序设计


通过分析 DS1302 读写时序,可以看出和 SPI 时序类似,只丌过数据输出和输入分时复用了,本测试利用 SPI Master 模块来做为 DS1302 的底层读写控制模块,然后再编写一个 RTC 读写模块。
ds1302_io 模块完成 DS1302 寄存器读写控制,状态机如下图所示。状态“S_IDLE”空闲状态,收到读写寄存器请求写迚入“S_CE_HIGH”状态,将 CE 拉高,然后根据请求类型,迚入读(S_READ)戒写状态(S_WRITE)S_WRITE”状态下一个状态迚入写地址状态“ S_WRITE_ADDR,再迚入写数据状态S_WRITE_DATA”,完成一个寄存器的写入,最后应答,拉低 CES_READ ” 状 态 下 一 个 状 态 迚 入 读 地 址 状 态 “ S_READ_ADDR , 再 迚 入 读 数 据 状 态“S_READ_DATA”,完成一个寄存器的读取,最后应答,拉低 CE。

    2.png
3.png
4.png
  试验结果:
5.png