STM32F0项目进阶之实时时钟DS1307
扫描二维码
随时随地手机看文章
写在前面的话:STM32F0项目进阶系列是硬件系统工程师星克曼以项目进阶的方式写出的入门教程,以项目开发为蓝底,快速学习进入实战。
STM32 I2C总线在上一讲 STM32F0项目进阶之I2C 中已经讲过了,已经将标准库抽象成hal_i2c.c和hal_i2c.h了,下面的就是适配不同的芯片了,这次我们适配一下DS1307。
电路配置
引脚图如下:
引脚描述如下:
电路配置如下:
BCD格式
注意:时间和日期的格式均是BCD格式的。
上电工作
上电即可以工作,时钟使能的话,就没有其它配置;如果没有使能就看要点二。
时钟使能
00h 地址的寄存器第7 位为器件时钟允许位(CH),此位为1则芯片未开始工作,即时钟未走时,所以在上电时单片机要先读出秒,并判断位7(CH)是否为1,如为1要把该位清零写入秒寄存器(地址为0),并把其他的时间单元设定为默认值。如果上电复位时读出的秒的最高位CH为0,说明时钟已工作(前已对CH清0,且停电后有备用电池),此时不能重写时间单元!
时间配置
直接把时间值写入0x00~0x06的时间寄存器。
时间读取
直接读取0x00~0x06的时间寄存器即可。
芯片时钟输出
控制寄存器的描述如下
要想芯片OUT脚输出一定频率的时钟,BIT4的SQWE需要被使能,输出频率是靠RS[1:0]配置。