目录
我最近在项目上需要使用一款可以3.3V供电的时钟芯片,在网上找了一下发现了这款芯片SD3077(由于在淘宝上买的,店主应该是个倒手的,不提供资料和技术支持)没办法只能自己找资料了。不找不知道,一找差点要了我的老命(CSDN上面就一个技术手册就要四十多个币,文库那些就更别说了,好多网站还只要微信转账9.9就能下载)现在的资料都这么“值钱”了吗?本着白嫖的原则,找了一晚上,终于找到厂家了,在他那里下载了数据手册和例程。我解决问题之后,觉得还是把这些坑都写清楚,方便后面的初学者。
芯片管脚设置:
管脚说明:
原理框图:
芯片资料获取:
浏览器搜索:http://www.whwave.com.cn/在主页面打开产品中心——>实时时钟芯片——>选择你的时钟芯片型号(单击打开),芯片介绍下面就有官方例程和数据手册。
下面是DS3077、DS3078芯片介绍界面可下载资料截图:
部分驱动代码:
主函数:
主函数是一个多功能调试的集合,有给RTC写入计时的初始时间、读出芯片的ID号演示、充电使能设置演示、频率中断设置演示、报警中断设置演示、倒计时中断设置演示、禁止中断演示等。
int main(void)
{
u8 i;
CountDown_Def cdInit;
/********* USART1 配置模式为 115200 8-N-1**********/
USARTx_Config();
printf("\r\n--这是一个读写RTC的演示程序-- \r\n");
/***************** I2C总线初始化 *****************/
IIC_Init();
/************* 给RTC写入计时的初始时间 ************/
RTC_WriteDate(&time_init);
RTC_ReadDate(&sysTime);
printf("写入的初始时间为: \r\n");
printf("%02X-%02X-%02X %02X:%02X:%02X 星期%02X\r\n\r\n", \
sysTime.year, sysTime.month, sysTime.day, sysTime.hour,\
sysTime.minute, sysTime.second, sysTime.week);
printf("----------------------------\r\n\r\n");
#ifdef SD30XX_25XX
/*************** 读出芯片的ID号演示 ****************/
I2CReadSerial(RTC_Address,ID_Address,8,data_Buf);
printf("芯片64bit ID号为:\r\n");
for (i=0; i<8; i++)
printf("0x%02X ", data_Buf[i]);
printf("\r\n----------------------------\r\n\r\n");
/**************** 充