接口时序的实现
DS1302的基本操作实际上非常简单,只有两个操作:其一是设定时间参数,其二是读取实时时间。不管是那个操作,MCU都要通过SPI接口进行数据交互,而SPI接口有其规定的时序,这个必须参考数据手册。
控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟信号的上升沿,数据被写入DS1302,数据的输入从最低位开始;在控制字指令输入后的下一个SCLK时钟信号的下降沿,数据从DS1302读出,数据的读出也是从最低位到最高位。
<1> 单字节写的时序
51单片机-DS1302-05.PNG (25.11 KB, 下载次数: 3)
下载附件 保存到相册
2018-2-10 12:21 上传
底层驱动代码实现可参考如下:
- void DS1302_WriteByte(unsigned char addr, unsigned char dat)
- {
- unsigned char n;
- RST = 0;
- nop();
- SCLK = 0;
- nop();
- RST = 1;
- nop();
- for (n=0; n<8; n++) //发送要写入数据的内存地址
- {
- DSIO = addr & 0x01;
- addr >>= 1;
- SCLK = 1;
- nop();
- SCLK = 0;
- nop();
- }
- for (n=0; n<8; n++) //将指定内容写入该地址的内存
- {
- DSIO = dat & 0x01;
- dat >>= 1;
- SCLK = 1;
- nop();
- SCLK = 0;
- nop();
- }
- RST = 0;
- nop();
- }
