ds1302芯片的使用

引脚功能及结构
  DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。

DS1302的控制字节
  DS1302 的控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
  
数据输入输出(I/O)
  在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
  
调试中问题说明
  DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位Write Protect(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5~D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入), D0=1,指定读操作(输出)。
  在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。
  DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。
  要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的3.6V充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。100 μF就可以保证1小时的正常走时。DS1302在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。
  
常见问题描述:
1.时间能够写进ds1302芯片,但时间保持不便
1)遇到时间不走的问题,首先查看 妙寄存器(81h)的最高位CH是否为1,该位用于控制晶振是否停止起振,为0晶振才能正常起振;
2)如果CH位为0,晶振不起振,就得检查晶振是否悍反,电路是否正确,晶振是否损坏。

2.数据无法写入
检测WP写保护寄存器(8fh)的最高位是否为1,为一则会处于写保护状态

3.无法充电
ds1302上电充电功能是禁用的,检测充电控制寄存器(91h)寄存器,能够充电的条件是:
1)TCS为1010h,其他的值则禁用充电功能;
2)DS为01,选择1个二极管,DS为10,选择2个二极管,00,11则禁用充电功能;

3)RS为01,选择2kΩ的电阻,RS为10,选择4kΩ的电阻,RS为11,选择8kΩ的电阻,RS为00,则禁用充电功能。


4.通过示波器抓的波形分析没有问题,但就是无法正常读写RTC

如果通过示波器抓波形分析,读写时序没有问题,但写入RAM后的数据读出后不正确,没法设置时间,那就得怀疑芯片问题了,市场上存在很多国产假芯片,其时序可能和ds1302官方提供的datasheet时序不一致所致,可以买个进口芯片替换试试。



你可能感兴趣的:(项目问题记录,Linux,driver,ds1302)