AM437x——RTC裸机

CSDN仅用于增加百度收录权重,排版未优化,日常不维护。请访问:www.hceng.cn 查看、评论。
本博文对应地址: https://hceng.cn/2017/08/23/AM437x——RTC裸机/#more
AM437x的RTC模块裸机程序。


0.为什么要RTC

在实际开发中,往往需要知道当前的时间,比如现在的2017年8月23日17点02分。
由于设备不使用的时候或者遇到故障时,会出现关机操作,而关机的这段时间长短,设备是不知道的,当再次开机时,时间要么被归零,要么显示为关机时的那个时间。

为了同步到现在的实时时间,我能想到两个解决方案。

1.利用网络,从网络中获取当前时间。
2.利用一个设备关机仍在计时工作的模块,开机后加上关机的这段时间。

第一个方案,需要网络,对于大多数单片机设备是不现实的,附加的成本太高。
第二个方案,就是现在大量使用的RTC,有的集成到SOC里面了,有些仍以外部芯片的形式出现。

在设备关机后,RTC在备用电池(一般是纽扣电池)的支持下,以超低功耗的方式继续默默的工作,直到开机,将时间同步。

这就是RTC存在的主要意义。

1.AM437x的RTC

AM437x的RTC介绍在参考手册19章Timers的第4部分:Real-Time Clock (RTC)
大致的特性有:

  • 总计数时间为100年;
  • 提供秒、分、小时、星期、日期、月份、年等;
  • 数据以Binary-coded-decimal (BCD)表示;
  • 时钟源可选择内部或外部;
  • 有两个闹钟;
  • 有两种中断:时间中断和闹钟中断;

很良心的有个Use Cases:

The following list includes high-level steps to start using the RTC:

  1. Enable the module clock domains (for details on which clock domain, see Section 19.4.2, Integration).
  2. Enable the RTC module using CTRL_REG.RTC_disable.
  3. Enable the 32K clock from PER PLL, if using the internal RTC oscillator.
  4. Write to the kick registers (KICK0R, KICK1R) in the RTC.
  5. Configure the timer in RTCSS for desired application (set time and date, alarm wakeup, and so on).
  6. Start the RTC (in CTRL_REG.STOP_RTC).

基本把配置步骤写得很清楚了。

  • 关于时钟和中断:

    时钟来自于外部CLKIN32的CLK_32K_RTC或者内部PRCM的CLK_32KHz;
    可以产生两种中断:timer_intr_pend和alarm_intr_pend。

  • 关于写保护

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值