[笔记分享] [RTC] RTC Hardware介绍
来源:互联网 发布:淘宝店铺如何开分店 编辑:程序博客网 时间:2024/05/21 06:37
Platform: msm8260
Clock source
虽然Alarm和RTC是不同的两个功能,但是alarm基于RTC实现,所以先来看下硬件时钟图,如下:
可以看出,RTC的时钟源来自32.768KHz的晶振,当RTC或者SMPS需要支持时,晶振就需要接上,否则可不接。从图上看来好像也可以由内部19.2MHz RC振荡电路提供,其实它只是提供给SLEEP_CLK使用的。
这里晶振有两种。一种是自激式,可以通过自己振荡产生时钟,另一种是需要通过PMIC8058内部提供振荡。
32.768KHz晶振一旦系统上电就开始工作,只要供给它足够的电压(可通过外部电源、主电池、纽扣电池),即使是在PMIC电源关闭时。如果没供电就会停振。
RTC
RTC通过一个32-bit的realtime counter和4个8-bit alarm registers来运行,如下图,它们都以秒为单位递增。当前设置的时间是以用户定义的一个值来定义的,如我们后面程序中用到的1970年1月1号。例如我们设置了1971年1月1号,那么我们只要写进去1年所用的秒数就OK了。
由于RTC是以秒递增的,那么32.768KHz晶振也要分频32768之后才能使用。当晶振精度不高时,我们也可以通过编程来调整分频值来提高精度。
当写使能time时,clock停止,divider被清除, RTC counter被设置成我们要的value,然后写使能被清除,clock开始,divider被释放。(软件部分只要设置rtc counter value就可以了)
当读时,是按照LSB的顺序读取的。
关于alarm是通过比较RTC counter和alarm register里面的值来运作的,当两个值相等时,会触发一个alarm中断。如果想要禁止alarm,只要将alarm register中的value设置成比rtc counter中的低就可以了。默认中断是禁止的。
目前MSM8260平台并没有使用硬件的alarm, 而是直接使用了android添加的alarm软件接口来实现。
Power
主要来自外部电源、主电池或者纽扣电池。
当纽扣电池电压过低时(没有主电池),会产生一个中断,当然RTC也不能正常工作了。
- [笔记分享] [RTC] RTC Hardware介绍
- [笔记分享] [RTC] RTC Software之内核驱动
- [笔记分享] [RTC] RTC Software之内核框架
- [笔记分享] [RTC] RTC Software之用户空间
- [笔记分享] [RTC] RTC Software之Modem端
- RTC
- RTC
- RTC
- RTC
- RTC
- [笔记分享] [RTC] Alarm内核驱动分析
- [笔记分享] [RTC] Alarm用户空间分析
- RTC学习笔记
- RTC学习笔记
- STM32学习笔记:RTC
- STM32笔记----RTC的初始化
- RTC Java API 学习笔记
- WinCE中RTC驱动开发介绍
- Spring 框架的设计理念与设计模式分析
- UI自动化测试:为什么找不到属性,为什么找不到模块???
- SQL实现分组排序和组内排序(相同分数并列排名)
- 魅族容器云平台基于Kubernetes自动化运维实践
- 【系统学习SpringBoot】SpringBoot 对象转JSON输出
- [笔记分享] [RTC] RTC Hardware介绍
- 自定义圆角边框
- JavaScript中event对象的clientX,offsetX,screenX,pageX的区别
- oracle字符串拼接,在后面追加字符串等
- SpringMVC注解说明
- unity粒子系统简单常用功能介绍
- 字符串插入字符串函数
- MyISAM 和InnoDB
- 函数中的this指向,以及 修改this指向的 call/apply/bind方法