1 RTC有关的背景知识
1.1 什么是实时时钟(rtc for real time clock)
(1)时间点和时间段的概念区分。
(2)单片机为什么需要时间点。
(3)RTC如何存在于系统中(单片机内部集成 or 单片机外部扩展)。
1.2 DS1302介绍
(1)数据手册。
(2)SPI数字接口访问。
(3)内部存着一个时间点信息(年月日时分秒星期几),可以读写,上电自动走表。
1.3 RTC学习的关键点
(1)SPI接口及其相关概念:3线or4线、同步、主从、串行等。
(2)时序的理解和编程实现。
2 原理图和接线
2.1 原理图分析
(1)DS1302引脚介绍。
(2)原理图中跳线设计对接线的影响。
2.2 接线
(1)正确的接线要点:
JP595断开,是为了让P3.4在控制DS1302的时候,不影响74HC595工作;
JP1302接上,是为了让P3.4能够控制到DS1302;
J11断开,是为了让P3.5在控制DS1302的时候,不影响NE555模块的工作。
(2)详解接线设置的原理和必要性:
正常的产品一般不会这么设计,正常产品一般接线都是确定的,一般不会复用。
开发板来说,主要是为了学习,所以会放很多个模块,所以这时候GPIO就不够用,这时候就需要复用设计。一个引脚接多个模块就会互相影响(有2种可能:一个是A模块工作时B模块莫名其妙的工作,二是有时候B模块会影响到A模块正常工作)。对于复用引脚的情况,接线的关键是确认目标模块接线ok时还不影响其他模块。
3 数据手册
DS1302 涓流充电计时芯片包含一个实时时钟/日历和 31 字节的静态 RAM,通过简单的串行接口与微处理器通讯。这个实时时钟/日历提供年月日,时分秒信息。对于少于 31 天的月份月末会自动调整,还有闰年校正。由于有一个 AM/PM 指示器,时钟可以工作在 12 小时制或者 24小时制。
使用同步串行通讯简化了 DS1302 与微处理器的接口。与时钟/RAM 通讯只需要三根线: CE,I/O (数据线), and SCLK (串行时钟).。数据输出输入时钟/RAM 一次 1字节或者在脉冲串中多达 31 字节,DS1302 被设计工作在非常低的电能下,在低于 1μW 时还能保持数据和时钟信息。
串行计时器的主要元素:移位寄存器,控制逻辑,振荡器,实时时钟,还有 RAM。
4 时序图的读法
4.1 时序图关键点
(1)横轴代表时间,纵轴是同一时间点各个通信线的状态。
(2)静态与动态2个角度去看。
(3)注意SCLK的边沿处。
4.2 结合示例代码来理解时序
/*******************************************************************************
* 函 数 名 : Ds1302Write
* 函数功能 : 向DS1302命令(地址+数据)
* 输 入 : addr,dat
* 输 出 : 无
*******************************************************************************/
void Ds1302Write(uchar addr, uchar dat)
{
uchar n;
RST = 0;
_nop_();
SCLK = 0;//先将SCLK置低电平。
_nop_();
RST = 1; //然后将RST(CE)置高电平。
_nop_();
for (n=0; n<8; n++)//开始传送八位地址命令
{
DSIO = addr & 0x01;//数据从低位开始传送
addr >>= 1;
SCLK = 1;//数据在上升沿时,DS1302读取数据
_nop_();
SCLK = 0;
_nop_();
}
for (n=0; n<8; n++)//写入8位数据
{
DSIO = dat & 0x01;
dat >>= 1;
SCLK = 1;//数据在上升沿时,DS1302读取数据
_nop_();
SCLK = 0;
_nop_();
}
RST = 0;//传送数据结束
_nop_();
}
/**********************