历史上的今天
今天是:2025年05月14日(星期三)
2019年05月14日 | STM32F0项目进阶之实时时钟DS1307
2019-05-14 来源:eefocus
写在前面的话:STM32F0项目进阶系列是硬件系统工程师星克曼以项目进阶的方式写出的入门教程,以项目开发为蓝底,快速学习进入实战。
STM32 I2C总线在上一讲 STM32F0项目进阶之I2C 中已经讲过了,已经将标准库抽象成hal_i2c.c和hal_i2c.h了,下面的就是适配不同的芯片了,这次我们适配一下DS1307。
芯片手册如下:www.maximintegrated.com/en/DS1307.pdf

电路配置
引脚图如下:
引脚描述如下:

电路配置如下:

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]配置。
史海拾趣
|
谁做过驱动啊?告诉我什么得什么样的流程啊,我假如我对scsi进行编程怎么办? 谁做过驱动啊?告诉我什么得什么样的流程啊,我假如我对scsi进行编程怎么办? PCI有13个关于scsi的针脚,怎么样的过程或流程给我说下被,如何编写?但是寄存器的首地址无法确定 该怎么做呢?… 查看全部问答> |
|
求助:WinCE StandardSDK Emulator启动后死机 Downloading files Downloading file d:\\wince\\test.exe. Finished downloading. 之后在StandardSDK Emulator打开My Computer 窗口里只有cemgrc, Control Panel 没有test.exe, windows, program files等 并且emulator死机了 有朋友碰过这 ...… 查看全部问答> |
|
Linux下CAN驱动问题(HMs30c7202) c_candrv-1.2.0 目前接手一项目,头有点大,CAN在运行过程中,会出现不能收发的情况,从新上电后正常 使用的是c_candrv-1.2.0驱动程序,个人感觉可能是使用方法不对 #define can0file \"/dev/can0\" #define can1file \"/dev/can1\" #define can2file \"/dev/can ...… 查看全部问答> |
|
有没有人用过 LoadAnimatedCursor 这个API啊? 环境 evc4, Standard SDK for wince 5.0 我在 resource.h 下这么定义 #define IDB_BITMAP1 MAKEINTRESOURCE(104) #define IDB_BITMAP2   ...… 查看全部问答> |
|
两个F149之间的通信 你好,我现在正在做两个F149之间的通信,要求是:发送和接受全用中断,而且当接受正确时,给对方一个应答信号!!!急用!!!谢谢!!! 能给我个例子好吗? 我是一个新手,7月份才毕业,现在在公司是试用期,所以我特别的 ...… 查看全部问答> |




