打印

关于RTC亚秒值的一个注记

[复制链接]
520|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
求关注啊|  楼主 | 2018-7-11 12:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好。
在探索者RTC这一节时,关于亚秒值,一个注记为:
根据RTC_SSR寄存器的描述,图1所示,同步预分频器有一个计数器SS[15:0],从亚秒值计算公式中的减号可以推出,该计数器是从同步预分频器的值PREDIV_S开始递减计数到0,周而复始。
该递减计数器的计数频率为粗略校准RTC_CALIBR的输出频率,由于ck_spre为1hz,故粗略校准RTC_CALIBR的输出频率是(PREDIV_S+1),图2所示。这样,在某一时刻读取的亚秒值为(PREDIV_S-SS)/(PREDIV_S+1)。注意,计数器SS[15:0]是不能写的,只能读取。
例如,PREDIV_S=255,这时,SS从255开始以RTC_CALIBR的输出频率递减计数,在某一时刻,SS递减到了200,则此时刻的亚秒值=(255-200)/(255+1)=55/256秒。在下一时刻,SS递减到了100,
则此时刻的亚秒值=(255-100)/(255+1)=155/256秒。
亚秒值是通过不停读取SS[15:0]的值,在程序中通过计算得到的。
在RTC的标准库中,RTC_GetSubSecond()函数返回的是亚秒寄存器SSR的值,图3所示,该函数并没有计算亚秒。

使用特权

评论回复

相关帖子

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

本版积分规则

380

主题

380

帖子

0

粉丝