有没有人用过SD3088这个芯片,

2019-08-23 16:04发布

我看了半天编出来的程序感觉不对啊!写进去的值也不对,我想问这个芯片是自己会走时间的对吧》?那怎样才能让他走时?是供电了就走时还是要写什么数据进去?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
a295055641
2019-08-24 00:52

/*
*SD3088时钟芯片 读写
*文件 sd3088.h
*作者 于
*麦知 www.mazclub.com
*版本 v1.0
*/  
#include "sd3088.h"  
  #include "stm32f2xx.h"
//extern I2C_HandleTypeDef hi2c1;  
  #define                true                          1
#define         false                         0
Time Time_sd3088 = {0x55, 0x59, 0x14, 0x01, 0x12, 0x11, 0x14};  //初始化时间结构体变量(设置时间:2014年11月12日 14:59:55  星期一)  
//Time1 Time_sd3088   
uint8_t  rtc_data[8];       //通用数据缓存器  
uint8_t sram[8];        //通用数据缓存器  
uint8_t pdata;  
  
u8 read_rtc(void)  
{   
  // 读取时间  
                         IIC_Start();  
     IIC_Send_Byte(0x65);
          //        if (!IIC_Wait_Ack()) {IIC_Stop();return 0;}
                        IIC_Wait_Ack();
                        Time_sd3088.second =IIC_Read_Byte();
                       IIC_Ack();
              //IIC_SDA0 ;
     Time_sd3088.minute = IIC_Read_Byte();
IIC_Ack();       
      Time_sd3088.hour = IIC_Read_Byte();
IIC_Ack();  
      Time_sd3088.week =IIC_Read_Byte();
IIC_Ack();  
      Time_sd3088.day = IIC_Read_Byte();
        IIC_Ack();
      Time_sd3088.month =IIC_Read_Byte();
        IIC_Ack();
      Time_sd3088.year =IIC_Read_Byte();
   IIC_Ack();       
            Time_sd3088.quantity = IIC_Read_Byte();
     IIC_NAck();       
                           // IIC_NAck();                //读时间完成,发送NoAck
               IIC_Stop();
       return 1;
   
   

}  
u8 send_rtc(void)
{   
        //写时间操作求一次对实时时间寄存器(00H~06H)依次写入,
                              //不可以单独对7个时间数据中的某一位进行写操作,否则可能会引起时间数据的错误进位.
            IIC_Start();  
        //WriteTimeOn();       
     IIC_Send_Byte(0x64);        //要修改其中某一个数据 , 应一次性写入全部 7 个实时时钟数据.
           IIC_Wait_Ack();
  IIC_Send_Byte(0x00);
             IIC_Wait_Ack();
        //        if(IIC_Wait_Ack()){IIC_Stop(); return 0;}
        IIC_Send_Byte(Time_sd3088.second);
             IIC_Wait_Ack();//IIC_Ack();
        IIC_Send_Byte(Time_sd3088.minute);
        IIC_Wait_Ack();
        IIC_Send_Byte(Time_sd3088.hour);
        IIC_Wait_Ack();
        IIC_Send_Byte(Time_sd3088.week);
        IIC_Wait_Ack();
        IIC_Send_Byte(Time_sd3088.day);
                IIC_Wait_Ack();
        IIC_Send_Byte(Time_sd3088.month);
        IIC_Wait_Ack();
        IIC_Send_Byte(Time_sd3088.year);
        IIC_Wait_Ack();
          IIC_Stop();
                //WriteTimeOff();       
                return        1;
}


一周热门 更多>