打印
[应用相关]

STM32初学-外部RTC时钟芯片DS3231

[复制链接]
98|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xdvca|  楼主 | 2023-12-23 15:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
   RTC(Real_Time Clock)即实时时钟,它是电子产品中不可或缺的东西。其最直接的作用就是时钟功能。细心的朋友可以发现,当我们的电脑或者手机没联网时,仍然可以正常显示日期与时钟,这就是RTC的功劳。

        RTC的运行无需网络连接,只需一个频率固定的振荡源和一个计数器,就能实现精准的计时。假如有一个振荡源,其每秒固定振荡1000次,那我们就可以用计数器对振荡进行计数,每振荡1000次,代表时间过去了1s,然后复位计数器并开始新的计数,同时,秒寄存器加1。如此循环,就能实现时钟的走时。


  在单片机的某些使用场景下,RTC时钟是不可或缺的,例如使用了文件系统,就必须启用RTC时钟,用于更新文件的时间。

使用特权

评论回复
沙发
xdvca|  楼主 | 2023-12-23 15:07 | 只看该作者
STM32内置了RTC时钟模块,只要配置好参数,就能启用RTC。RTC的时钟振荡源可以来自内部也可以来自外部。内部时钟源由HCLK经过分频得到,外部时钟源则由石英晶振提供。

使用特权

评论回复
板凳
xdvca|  楼主 | 2023-12-23 15:09 | 只看该作者
        内部时钟源是由高频晶振分频得到,所以其精度计时不高,为了准确计时,一般采用外部时钟源。外部时钟源一般选用32.768KHz的石英晶振。这种参数的石英晶振一秒钟能振荡32768次,正好对应2^16。

使用特权

评论回复
地板
xdvca|  楼主 | 2023-12-23 15:11 | 只看该作者
    然而,即使采用了外部晶振的RTC,其精度仍然是有限的。因为晶振外置,线路上的寄生电容电感、温度都会影响晶振频率,短时间可能看不出误差,但是时间一长,其误差就大了。

        如果想进一步减小RTC的误差,则需要使用RTC时钟芯片。时钟芯片的优势在于其内部带有温度补偿功能,能通过检测环境温度来对晶振进行误差补偿,减小计时误差。且时钟芯片的年、月、日等时间数据单独存储在内部的RAM中,对单片机来说,只要通过串口读取特定寄存器地址的数据就能得到时间参数,而无需再去计算。现在流行的时钟芯片很多,如DS1302、 DS1307。但是这些芯片仍需要外置晶振才能工作,所以仍存在误差。

使用特权

评论回复
5
xdvca|  楼主 | 2023-12-23 15:12 | 只看该作者
  所以一种在内部集成晶振的时钟芯片应运而生。DS3231就是这样一种时钟芯片。其精度最高可以达到±2ppm。实测6个月在常温下连续运行,误差不超过1分钟。

使用特权

评论回复
6
xdvca|  楼主 | 2023-12-23 15:12 | 只看该作者
DS3231采用快速IIC通信进行数据传输,最高时钟频率400KHz。还带有闹钟,复位等功能。

使用特权

评论回复
7
xdvca|  楼主 | 2023-12-23 15:13 | 只看该作者
DS3231有两种封装,引脚功能一样,16pin的封装只是多了八个空引脚。

如下是其应用电路。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

108

帖子

0

粉丝