DS1302实时时钟芯片详解:功能、引脚与51单片机通信时序
DS1302实时时钟芯片详解:功能、引脚与51单片机通信时序
DS1302是一款常用的实时时钟芯片,广泛应用于各种需要时间记录的电子设备中。它不仅能够提供精确的时间信息,还具有低功耗、宽电压范围等特点。本文将详细介绍DS1302的特性、引脚功能、寄存器配置以及与51单片机的通信时序,帮助读者更好地理解和使用这款芯片。
DS1302的特点
- DS1302是一个实时时钟芯片,可以提供秒、分、小时、日期、月、年等信息,并且还有软件自动调整的能力,可以通过配置AM/PM来决定采用24小时格式还是12小时格式。
- 拥有31字节数据存储RAM。
- 串行I/O通信方式,相对并行来说比较节省IO口的使用。
- DS1302的工作电压比较宽,在2.0~5.5V的范围内都可以正常工作。
- DS1302这种时钟芯片功耗一般都很低,它在工作电压2.0V的时候,工作电流小于300nA。
- DS1302共有8个引脚,有两种封装形式:DIP-8(双列直插式)和SOP-8(L形引脚)。
- 当供电电压是5V的时候,兼容标准的TTL电平标准,可以完美的和单片机进行通信。
- 较DS1202,DS1302有两个电源输入,一个主电源,另一个备用电源,在系统掉电的情况下,我们的时钟还会继续运行。如果备用电源使用充电电池,还可以在正常工作时,设置充电功能,给我们的备用电池进行充电。
DS1302的引脚功能图及电路图
DS1302寄存器介绍
DS1302 的一条指令一个字节共 8 位,其中第 7 位(即最高位)固定为 1,这一位如果是 0 的话,那写进去也是无效的。第 6 位是选择 RAM 还是 CLOCK 的,我前边说过,我们这里主要CLOCK 时钟的使用,它的 RAM 功能我们不用,所以如果选择 CLOCK 功能,第 6位是 0,如果要RAM,那第 6 位就是 1。从第 5 到第 1 位,决定了寄存器的 5 位地址,而第 0 位是读写位,如果要写,这一位就是 0,如果要读,这一位就是 1。指令字节直观位分配如下图:
DS1302 的时钟寄存器
寄存器 0:最高位 CH 是一个时钟停止标志位。如果时钟电路有备用电源,上电后,我们要先检测一下这一位,如果这一位是 0,那说明时钟芯片在系统掉电后,由于备用电源的供给,时钟是持续正常运行的;如果这一位是 1,那么说明时钟芯片在系统掉电后,时钟部分不工作了。如果 Vcc1 悬空或者是电池没电了,当我们下次重新上电时,读取这一位,那这一位就是 1,我们可以通过这一位判断时钟在单片机系统掉电后是否还正常运行。剩下的7 位高 3 位是秒的十位,低 4 位是秒的个位,这里再提请注意一次,DS1302 内部是 BCD 码,而秒的十位最大是 5,所以 3 个二进制位就够了。
寄存器 1:最高位未使用,剩下的 7 位中高 3 位是分钟的十位,低 4 位是分钟的个位。
寄存器 2:bit7 是 1 的话代表是 12 小时制,0 代表是 24 小时制;bit6 固定是 0,bit5 在12 小时制下 0 代表的是上午,1 代表的是下午,在 24 小时制下和 bit4 一起代表了小时的十位,低 4 位代表的是小时的个位。
寄存器 3:高 2 位固定是 0,bit5 和 bit4 是日期的十位,低 4 位是日期的个位。
寄存器 4:高 3 位固定是 0,bit4 是月的十位,低 4 位是月的个位。
寄存器 5:高 5 位固定是 0,低 3 位代表了星期。
寄存器 6:高 4 位代表了年的十位,低 4 位代表了年的个位。请特别注意,这里的 00~99 指的是 2000 年~2099 年。
寄存器 7:最高位一个写保护位,如果这一位是 1,那么是禁止给任何其它寄存器或者那 31 个字节的 RAM 写数据的。因此在写数据之前,这一位必须先写成 0。
DS1302通信时序
DS1302的通信是SPI的变异种类,它用了SPI的通信时序,但是通信的时候没有完全按照SPI的规则来。以下为SPI与DS1302的操作时序对比。
CPOL=0 / CPHA=0 通信时序
DS1302 单字节写操作
DS1302 单字节读操作