历史上的今天
返回首页

历史上的今天

今天是:2024年12月26日(星期四)

正在发生

2018年12月26日 | STM32之RTC原理

2018-12-26 来源:eefocus

一、RTC时钟框图分析(重要)


先熟悉一下几个知识点:


      1、STM32的实时时钟(RTC)是一个独立的定时器!


      2、RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后备区域,即在系统复位火从待机模式唤醒后RTC的设置和时间维持不变。


RTC这章中,对RTC相关的寄存器的操作特别重要,我在这里不解释了,请查阅手册。。


先上图!


RTC时钟框图


RTC时钟框图分为完全独立的两个部分:1、APB1接口部分(用来RTC相关的寄存器);2、RTC核心;

      

第一部分:APB1接口。注意:这里涉及到寄存器RTC_CRL中的RSF位,这位是寄存器的同步标志,具体内容去看STM32参考手册RTC这一章。

      

第二部分:RTC核心。这里分为两个模块:1、RTC预分频器模块;2、一个32位的可编程计数器;

      

下面开始分析第二部分:

       

先给大家介绍下后备区域的几个特别重要的寄存器:

       

1、RTC_DIV(重要):RTC预分频器余数寄存器。这个寄存器的作用是来获得比秒钟更加准确的时钟(0.1s,0.01s),该寄存器是自减的,用来保存还需要多少个时钟周期获得一个秒信号。这里加上一个公式(STM32参考手册里有):fTR_CLK=fRTCCLK/(PRL[19:0]+1)    到这里是书上的原话~!

       

解释一下,RTC_DIV寄存器的值是由RTC_PRL(RTC预分频器装载寄存器)提供的,而RTC_DIV寄存器的时钟频率是由RTCCLK提供的(看图)。比如我们把RTC_PRL值设为32767,则RTC_DIV寄存器的值也为32767,他和RTCCLK的时钟频率是一样的(这里根据上面的公式,RTC_PRL加1,则RTC_DIV也加1)。RTCCLK的时钟周期是1/32768(s),也就是每一个RTCCLK的时钟周期,RTC_DIV自减1,直至到1s钟后,被硬件重新装载,也就是1s钟减32768次。那他到底是怎么提供0.1s,甚至是0.01s的呢?

       

举个例子就明白了。比如我想要得到1.12秒的这个时间,就要求RTC_DIV自减0.12/(1/32768)次。RTC_DIV只得到0.12s的时间,还有1s时间从哪儿来?他是TR_CLK提供的。这个问题会在下文讲解。。→_→

       

2、RTC_PRL:RTC预分频装载寄存器。这个寄存器有两个作用:1、提供给RTC_DIV的重新装载值;2、设置时钟分频系数。


       第一个作用不讲了。第二个作用:设置时钟分频系数。比如我们使用32.768KHz的晶振作为时钟输入,那么我们配置这个寄存器值位32767,就可以得到1s钟的计数频率(32768/(32767+1),单位(HZ))。


       3、RTC_CNT(重要):RTC计数器寄存器。这个寄存器较简单,用来记录秒钟值。如果之前对RTC_CR(控制寄存器),的相关中断允许位配置的话,RTC_CNT寄存器可以产生一个溢出中断。


       4、RTC_ALR:RTC闹钟寄存器。从图中就可以看出来,很简单。用来标记闹钟产生时间,如果RTC_CNT的值和RTC_ALR的值相等的话,并使能中断的话(在RTC_CR(控制寄存器)中配置),会产生一个闹钟中断。


       后备区域的寄存器就给大家介绍到这儿。相比大家通过上面的介绍结合框图,头脑里面应该有个大致流程了吧。没有~!?卧槽~那就给大家理一遍思路→_→


       首先外部加进来一个时钟信号RTCCLK(32.768K),然后设置RTC_PRL的分频系数为32767,得到一个秒时钟信号TR_CLK(1HZ)。当TR_CLK每过一个时钟周期,产生一个RTC_Second(秒钟中断),同时RTC_CNT计数器(记录秒值)加1。如果要求更精准的时间,还可以在RTC_CR寄存器的RSF位被置1时去读RTC_DIV的值。


推荐阅读

史海拾趣

EXCELSEMI [ EXCEL SEMICONDUCTOR INC. ]公司的发展小趣事

为了满足不同客户的需求,EXCELSEMI公司不断扩展产品线。除了传统的半导体芯片产品外,公司还涉足了功率半导体、传感器、智能模块等领域。通过多元化的产品线布局,EXCELSEMI能够为客户提供一站式解决方案,增强了市场竞争力。

BSI公司的发展小趣事

在电子行业的初期,由于缺乏统一的标准,各种电子产品之间的兼容性和互通性成为了一个大问题。这时,BSI作为国际标准化组织的重要参与者,积极推动了电子产品的标准化工作。通过与各国政府、行业协会和企业的合作,BSI制定了一系列电子产品的标准,为行业的发展提供了可靠的参考依据。这些标准的出台,极大地促进了电子产品的互通性和兼容性,推动了电子行业的健康发展。

Cristek Interconnects Inc公司的发展小趣事

Cristek Interconnects Inc公司在技术创新和质量管理的双重驱动下,开始积极拓展市场。公司不仅在国内市场取得了显著的成绩,还积极开拓国际市场。通过与国外知名企业的合作,Cristek的产品成功打入国际市场,进一步提升了公司的知名度和影响力。

GE Oil & Gas Digital Solutions公司的发展小趣事
在生产线上对电阻元件进行快速筛选和分类。
AIRPAX公司的发展小趣事

随着全球环保意识的提高,AIRPAX开始关注产品的环保性能。公司积极研发符合RoHS标准的产品,并致力于减少生产过程中的环境污染。同时,AIRPAX还推动了绿色供应链的建设,与供应商共同实现可持续发展。这些努力使得AIRPAX在电子行业中树立了绿色环保的良好形象。

D3 Semiconductor公司的发展小趣事

D3 Semiconductor自创立之初,就致力于半导体技术的研发与创新。公司凭借其独特的超结金属氧化物半导体场效应晶体管(MOSFET)技术,在功率电子市场上迅速崭露头角。这项技术在硬开关应用中展现出了同类最佳性能,为通讯、企业计算、不间断电源(UPS)和太阳能等领域提供了高效可靠的解决方案。D3 Semiconductor的这一技术突破不仅赢得了市场的认可,也为公司后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

为什么GPIO中有的Pin要设为Pull_Up/Pull_Down?

如题,其中有的pin为输入pin,有的pin为输出pin,但是为什么要设置一些pin的属性为pull up或者为pull down,pull up/pull down到底是干吗用的?根据什么来设的呢,聆听各位大虾的教诲!!…

查看全部问答>

两相四线的步进电机,启动后方向为何不确定?

电机是12v两相四线,驱动芯片是L6219,脉冲指令是八拍的。完全空载启动,各种启动频率都试过了。就算是相同的指令,启动后方向都不确定。实在想不明白是哪里出了问题。(不是电机本身的问题,两个相同的电机现象一样)。 还有一个疑问是,两相的电压 ...…

查看全部问答>

djyos缘起

    一直不敢公开这篇东西,怕别人笑我,笑一个毫无软件经验的硬件工程师居然不自量力地向uclinux(是uclinux而不是linux)、vworks、wince等巨头们挑战。然而,计算机界是需要奇迹的,也是孕育奇迹的天堂,辍学的盖茨能盖起微软王国, ...…

查看全部问答>

3MAB5000/AB5000S/AB5000R吸波材料

3MAB5000/AB5000S/AB5000R吸波材料 上海常祥实业有限公司作为3M顶级合作伙伴,全面代理3M电磁屏蔽电磁吸波兼容胶带EMC/EMI/RFI胶带,上海常祥公司可以提供性价比最高的3M电磁屏蔽电磁兼容胶带EMC/EMI/RFI胶带产品,并且是唯一一家可以提供3M电磁屏 ...…

查看全部问答>

WinCE5 C# serialport控件的 接收数据 问题!

问题说明:     我在WinCE5环境里,使用vs2005(C#)编写串口Demo ,使用serialport控件,现在数据接收不行,查看资料后说需要适用委托,我按照例子更改后仍然不能接收,将接收这一段的代码贴出来,请大家指点!     using Sys ...…

查看全部问答>

一个关于i2c总线锁死的问题

最近用了一块i2c总线的ad芯片,现在遇到这个情况:芯片一开始正常工作,写进去的值和转化后的值都准确,工作一端时间后(时间不定)就出现了锁死现象,表现为sda被拉低,会有乱码出来(不是正常波形),scl比较正常,但少了一段.以接上拉电阻,10k ...…

查看全部问答>

wince5.0 系统休眠唤醒后出现异常

我的系统,用的2416。在休眠唤醒后出现异常: 1 运行地图中的游戏。此时休眠唤醒后,游戏没声音。但在其他地方就正常。 2 运行地图时,在某一个界面,休眠唤醒后,文字显示不出来,但在其他界面就是好的, 3 我在休眠前显示了一个窗口。本想在唤 ...…

查看全部问答>

彻底杜绝病毒木马的加密U盘

彻底杜绝病毒木马的加密U盘 (secWall 安全U盘)     secWall 安全U盘(防病毒木马保密U盘)   超强的数据防泄密安全性 加密闪存设备(安全U盘)可以设定主人的安全认证密码(PIN),防止设备丢失后被其它人利用。另外,增强 ...…

查看全部问答>

STM32如何控制PWM脉冲输出数量

                                 STM32如何控制PWM脉冲输出数量,,我用PWM脉冲来做我外设的同步时钟所以需要确切的数值!…

查看全部问答>