ds1302是dallas公司推出的一款基于spi总线的日历时钟芯片,它能够向单片机提供秒、分、时、日、月、年及星期等实时时间信息,并能够对闰年天数自动调整,日历有效至2100年。ds1302由双电源中较大者供电,使系统在没有主电源的情况下也能保持时钟的连续运行。片内具有31个字节静态ram,可用来保存重要数据。ds1302具有引脚少、体积小、价格低等优点,应用广泛。
ds1302的引脚及其功能描述见表5-10。
ds1302串行实时时钟芯片主要由移位寄存器、控制逻辑、振荡器、实时时钟及31个字节ram组成。数据传送前,必须把rst置为高电平且把提供地址和命令信息的8位字节装入到移位寄存器。在进行单字节传送或多字节传送时,开始的8位命令字节用于指定40个字节(31个字节ram和9个字节时钟寄存器)中哪个将被访问。
表5-10 ds1302的引脚及其功能描述
ds1302的命令字节格式见表5-11。第7位通常为“1”,如果为“0”则禁止写ds1302。第5位为逻辑“0”时指定传送时钟/日历数据,为逻辑“1”时指定传送ram数据。第1~5位指定进行输入或输出的特定寄存器的地址。第0位控制读写操作,为逻辑“0”时指定进行写操作(输入),为逻辑“1”时指定进行读操作(输出)。命令字节总是从最低有效lsb(位0)开始输入。
表5-11 ds1302的命令字节格式
ds1302共有8个时钟寄存器和2个控制寄存器,各寄存器的功能和位信息见表512。秒寄存器中的ch位用于暂停时钟,当ch=1时,时钟振荡器停止,ds1302进入低功耗的备份模式;当ch=0时,时钟重新启动。小时寄存器的第7位用于设定小时制式,“1”代表12小时制,“0”代表24小时制;当处于12小时制时,第5位用于设定上、下午,“1”表示pm,“0”代表am;当处于24小时制时,第5位和第4位组成小时的十位数字。wp用于ram和寄存器的写保护设置,当wp=1时,禁止对ram和其他任何寄存器进行写操作。充电控制寄存器的高4位tcs用于设定慢速(涓流)充电,只有当tcs=1010时才进行慢速充电;ds用于设定主电源和备用电源之间的二极管个数,ds=01时选择1个二极管,ds=10时选择2个二极管,其他值禁止充电;rs用于设定主电源和备用电源间的电阻,rs=00时无电阻,rs=01时电阻为2kΩ,rs=10时电阻为4kΩ,rs=11时电阻为8kΩ。
表5-12 ds1302中各寄存器的功能和位信息
(www.xing528.com)
(续)
ds1302与单片机进行数据交换时,首先由单片机发送命令字节,8位命令字节传送结束之后,在随后8个sclk周期的上升沿输入数据字节,或在下8个sclk周期的下降沿输出数据字节,具体读写时序如图512所示。
图5-12 ds1302的读写时序
a)读时序 b)写时序
51系列单片机与ds1302发送/接收数据的参考程序如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。