硬件实时时钟(RTC)在STM32 F0、F2、F3、F4和MCUs中L1系列的使用外文翻译资料

 2021-11-11 11:11

英语原文共 45 页

AN3371应用注解

硬件实时时钟(RTC)在STM32 F0、F2、F3、F4和MCUs中L1系列的使用

介绍:实时时钟(RTC)是一种跟踪当前时间的计算机时钟。虽然RTC通常用于个人计算机,服务器和嵌入式系统,但它们也存在于几乎任何需要精确计时的电子设备中。支持RTC的微控制器可用于计时器,闹钟,手表,小型电子议程和许多其他设备。
本应用注释介绍了嵌入在超低功耗中密度、超低功耗高密度、F0、F2和F4系列器件微控制器中的实时时钟(RTC)控制器的功能,以及配置RTC所需的步骤,使日历,报警,定期唤醒单元,篡改检测,时间戳和校准应用程序得以利用。
示例提供了配置信息,使您能够快速、正确地配置RTC以匹配日历,警报,定期唤醒单元,篡改检测,时间戳和校准应用程序。
注意:所有示例和说明均基于STM32L1xx,STM32F0xx,STM32F2xx STM32F4xx和STM32F3xx固件库以及STM32L1xx(RM0038),STM32F0xx(RM0091),STM32F2xx(RM0033),STM32F4xx(RM0090),STM32F37x(RM0313)和STM32F30x(RM0316)的参考手册。
STM32是指本文档中的超低功率中密度,超低功耗高密度,F0,F2和F4系列器件。
超低功耗中等(ULPM)密度器件是STM32L151xx和STM32L152xx微控制器,其闪存密度介于64和128 KB之间。
超低功耗高(ULPH)密度器件是STM32L151xx,STM32L152xx和STM32L162xx微控制器,其闪存密度为384 KB。

F2系列器件是STM32F205xx,STM32F207xx,STM32F215xx和STM32F217xx微控制器。
STM32F3xx是指STM32F30x,STM32F31x,STM32F37x和STM32F38x器件。
F4系列是STM32F405xx,STM32F407xx,STM32F415xx和STM32F417xx微控制器。

F0系列器件是微控制器。

表1列出了本应用注释所涉及的微控制器。

类型

适用产品

微控制器

STM32 F0 STM32 F2

STM32 F3 (STM32F30x, STM32F31x, STM32F37x, STM32F38x)

STM32 F4 (STM32F405xx, STM32F407xx, STM32F415xx, STM32F417xx) STM32 L1

表1.适用的产品

1 STM32高级RTC概述

嵌入STM32微控制器的实时时钟(RTC)充当独立的BCD定时器/计数器。 RTC可用于提供全功能的日历,闹钟,定期唤醒单元,数字校准,同步,时间戳和高级篡改检测。
有关每个设备上可用功能的完整列表,请参阅表15:高级RTC功能。

RTC 日历

日历记录时间(小时,分钟和秒)和日期(日,周,月,年)。 STM32 RTC日历提供了多种功能,可以轻松配置和显示日历数据字段:

  • 日历:
    - 亚秒(不可编程)
    - 秒
    - 分钟
    - 12小时或24小时格式的小时
    - 星期几(周几)
    - 月中的某天(日期)
    - 月份
    - 年份
  • 二进制编码的十进制(BCD)格式的日历
  • 自动管理28-,29-(闰年),30-和31天的月份
  • 夏令时调整由软件编程

图1 RTC日历字段

1. RCT_DR,RTC_TR是RTC日期和时间寄存器。
2. sub-second字段是同步预分频器计数器的值

软件日历可以是软件计数器表示秒数(通常为32位长)。 软件例程将计数器值转换为小时,分钟,月中的某天,星期几,月份和年份。这些数据可以转换为BCD码并显示在标准LCD上,这对于使用带有AM / PM指示的12小时格式的国家非常有用(参见图2)。转换例程使用大量的程序存储空间,并且耗费CPU时间,这在某些实时应用程序中可能至关重要。
在使用STM32 RTC日历时,不再需要软件转换例程,因为它们的功能由硬件执行。
STM32 RTC日历以BCD码提供。这避免了二进制到BCD软件转换过程,而这种过程使用大量程序存储空间和CPU负载,这在某些实时应用程序中可能是至关重要的。

11:15:28:09 PM

WED OCT 26 2011

图2 LCD上的日历显示示例

初始化日历

表2描述了正确配置日历时间和日期所需的步骤。

步骤

目的

方法

评价

1

禁用RTC寄存器写保护

将“0xCA”“0x53”写入RTC_WPR寄存器

可以修改RTC寄存器

2

进入初始化模式

在RTC_ISR寄存器中将INIT位设置“1”

日历计数器停止以允许更新

3

等待初始化模式的确认(时钟同步)

轮询RTC_ISR中的INITF位,直到它被设置为止

对于中等密度设备,大约需要2个RTCCLK时钟周期

4

如果需要,编程预分频器寄存器

RTC_PRER寄存器:首先写入同步值和
然后编写异步

默认情况下,当RTCCLK = 32768Hz时,RTC_PRER预分频器寄存器初始化为日历单元提供1Hz

5

在影子寄存器中加载时间和日期值

设置RTC_TR和RTC_DR寄存器

6

配置时间格式(12h或24h)

在RTC_CR寄存器中设置FMT位Set

FMT = 0: 24小时/天格式FMT = 1:AM / PM小时格式

7

退出初始化模式

清除RTC_ISR寄存器中的INIT位

当前日历计数器自动加载,计数在4个RTCCLK时钟周期后重新开始

8

使能RTC寄存器写保护

将“0xFF”写入RTC_WPR寄存器

RTC寄存器不能再被修改

表2 正确配置日历时间和日期所需的步骤。

RTC时钟配置
RTC时钟源
RTC日历可以由三个时钟源LSE,LSI或HSE驱动(参见图3和图4)

图3. STM32L1xx RTC时钟源
注:RTCSEL [1:0]位是RCC控制/状态寄存器(RCC_CSR)[17:16]位

图4. STM32F2xx或STM32F4xx RTC时钟源

如何调整RTC日历时钟
RTC具有多个预分频器,无论时钟源如何,都可以向日历单元提供1 Hz时钟。

RTC

时钟

图5.从RTC时钟源到日历单元的预分频器
注意:同步预分频器的长度取决于产品。对于本节,它以13位表示。
计算ck_spre的公式是: ck_spre =RTCCLK/ PREDIV_A 1 /PREDIV_S 1

其中:
RTCCLK可以是任何时钟源:HSE_RTC,LSE或LSI
PREDIV_A可以是1,2,3,......或127
PREDIV_S可以是0,1,2,...,或8191

RTCCLK

时钟源

Prescalers

ck_spre

PREDIV_A[6:0]

PREDIV_S[12:0]

HSE_RTC = 1MHz

124

(div125)

7999

(div8000)

1 Hz

LSE = 32.768 kHz

127

(div128)

255

(div256)

1 Hz

LSI = 32 kHz(1)

127

(div128)

249

(div250)

1 Hz

LSI = 37 kHz(2)

124

(div125)

295

(div296)

1 Hz

表3显示了获取日历时钟(ck_spre)= 1 Hz的几种方法。
表3.具有不同时钟源的日历时钟等于1 Hz的几种方法
1.对于STM32L1xx,LSI = 37 KHz,但LSI精度不适合日历应用。
2.对于STM32F2xx和STM32F4xx,LSI = 32 KHz,但LSI精度不适合日历应用。

RTC报警
RTC报警配置
STM32 RTC嵌入了两个报警,报警A和报警B,它们是相似的。可以在用户编程的给定时间或/和日期生成警报。
STM32 RTC提供丰富的报警设置组合,并提供许多功能,使配置和显示这些报警设置变得容易。
每个报警单元都提供以下功能:
完全可编程警报:亚秒(稍后讨论),可以独立选择或屏蔽秒,分,小时和日期字段,以提供丰富的警报组合。
发生报警时,能够从低功耗模式退出设备。
报警事件可以路由到具有可配置极性的特定输出引脚。
专用报警标志和中断。

图6.警报A字段
1. RTC_ALRMAR是RTC寄存器。 RTC_ALRMBR寄存器也可以使用相同的字段。
2. RT_ARMASSR是RTC寄存器。 RTC_ALRMBR寄存器也可以使用相同的字段。
3. Maskx是RTC_ALRMAR寄存器中的位,用于启用/禁用用于报警A和日历比较的RTC_ALARM字段。有关更多详细信息,请参阅表5。
4.掩码ss是RTC_ALRMASSR寄存器中的位。
报警由一个与RTC时间计数器长度相同的寄存器组成。当RTC时间计数器达到报警寄存器中设定的值时,将设置一个标志以

原文和译文剩余内容已隐藏,您需要先支付 20元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。