STM32高级RTC概述外文翻译资料

 2022-08-10 05:08

英语原文共 45 页,剩余内容已隐藏,支付完成后下载完整资料


1 STM32高级RTC概述

STM32 微控制器中嵌入的实时时钟 (RTC) 作为独立的BCD 计时器/计数器。RTC 可用于提供全功能日历、闹钟、定期唤醒单元、数字校准、同步、时间戳和高级篡改检测。

有关每个功能上可用的功能的完整列表,请参阅表 15:高级 RTC 功能

装置。

1.1 RTC日历

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

● 日历:

- 亚秒(不可编程)

- 秒

- 分钟

- 以12小时或24小时表示的小时

- 星期几

- 当月几号

- 月份

- 年份
● 二进制编码小数 (BCD) 格式的日历

● 自动管理天数为28,29(闰年),30,31天的月份

● 夏令时间调整可通过软件编程

图1. RTC日历区域

  1. RCT_DR,RTC_TR是 RTC 日期和时间寄存器。
  2. 亚秒字段是同步预分频计数器的值,此字段不可写。

软件日历可以用软件计数器(通常为32位)来表示秒数。软件例程将计数器值转换为小时、分钟、天月、星期和日、月和年。此数据可以转换为 BCD 格式并且显示在标准 LCD 上,这在使用12小时制的国家/地区非常有用,AM/PM指标(参见图2)。转换例程使用重要的程序内存空间且占用 CPU 时间,这对于某些实时应用程序可能至关重要。

当使用STM32 RTC日历时,则不再需要软件转换例程,由硬件执行它们的功能。

STM32 RTC 日历以 BCD 格式提供。这避免了二进制到BCD软件转换流程,它使用重要的程序内存空间和 CPU 负载,这可能在某些实时应用中至关重要。

图2. 液晶显示屏上的日历显示示例

1.1.1 初始化日历

在表2中进行了正确配置日历时间和日期所需的步骤的相关描述。

表2 初始化日历的步骤

1.1.2 RTC 时钟配置

RTC 时钟源

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

图 3.STM32L1xx RTC 时钟源

注意:RTCSEL[1:0]bits是RCC控制/状态寄存器(RCC_CSR) [17:16]bits

图 4.STM32F2xx 或 STM32F4xx RTC 时钟源

如何调整 RTC 日历时钟

RTC 具有多个预缩放器,无论时钟源如何,都允许将 1 Hz 时钟传送到日历单元。

图 5.从 RTC 时钟源到日历单元的预缩放器

注意:同步预缩放器的长度取决于产品并以13bits表示。

计算ck_spre的公式是:

其中:

bull; RTCCLK 可以是任何时钟源:HSE_RTC、LSE或LSI

bull; PREDIV_A可以是 1,2,3,..., 或 127

bull; PREDIV_S可以是 0,1,2,..., 或 8191

表3显示了获取日历时钟(ck_spre)=1Hz的几种方法。

表3.日历时钟等于1Hz 的不同时钟源

1. 对于 STM32L1xx,LSI = 37 KHz,但LSI精度不适合日历应用。

2. 对于 STM32F2xx 和 STM32F4xx,LSI = 32 KHz,但LSI精度不适合日历应用。

1.2 RTC 报警

1.2.1 RTC 报警配置

STM32 RTC嵌入了两个类似的报警器,报警器A和报警器B。报警器可以在给定时间或/和用户编程的日期生成。

STM32 RTC提供了丰富的报警设置组合,并提供许多功能,便于配置和显示这些警报设置。

每个报警单元提供以下功能:

bull; 完全可编程报警:次秒(稍后讨论),秒,分钟,可以独立选择或屏蔽小时和日期字段,以提供丰富的警报的组合。

bull; 能够在报警发生时从低功耗模式退出设备。

bull; 报警事件可以路由到具有可配置极性的特定输出引脚。

bull; 专用报警标志和中断。

图 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 时间计数器达到报警寄存器中编程的值,标志显示发生了报警事件。

STM32 RTC报警器可以由硬件配置,以生成不同类型的警报。有关详细信息,请参阅表 5。

报警器编程

表4描述了配置报警器A所需的步骤。

表4.配置警报的步骤

1. ALRBE位用于报警器B。

2. ALRBWF位用于报警器B。

3. RTC_ALRMBR登记报警器B。

4. 例如,如果将报警事件设置为在下午 3:00:00 发生,则使日历时间为15:00:00,因为RTC日历为24小时格式,警报格式为12小时格式。

5. ALRBE位用于报警器B。

6. RTC报警寄存器只能在禁用相应的 RTC 警报或 RTC 期间写入初始化模式。

使用MSKx位配置报警行为

报警行为可以使用 MSKx 位(x = 1、2、3、4)配置。RTC_ALRMAR寄存器用于报警器A(RTC_ALRMBR寄存器用于报警器B)。

表 5 显示了所有可能的报警设置。例如,将报警时间配置为周一 23:15:07(假设 WDSEL = 1),MSKx 位必须设置为 0000b。当 WDSEL = 0 时,所有情况都类似,只不过'Alarm Mask'是当月几号,而不是星期几,并且MSKx位必须设置为0000b。

表5.报警组合

表5.报警组合(续)

注意:如果选择了秒字段(MSK0 位重置RTC_ALRMAR或RTC_ALRMBR),则同步预分频除法器PREDIV_S在RTC_PRER寄存器中必须至少设置3个以确保正确的运行。

1.2.2 报警子秒配置

STM32 RTC 单元提供两个类似的可编程次秒报警器A和B。它们以高分辨率生成警报(对于第二个分区)。

警报次秒寄存器中编程的值对应日历单元中的次秒字段。

次秒字段计数器从同步中配置的值倒计时将预缩放器预缩放为零,然后在RTC_SPRE寄存器中重新加载值。

图7.报警器次秒部分

注意:掩码ss是次秒警报中最重要的位,对应于同步预缩放寄存器。

可以使用报警子秒中的掩码位配置报警次秒注册。表 6:报警子秒掩码组合显示了对于掩码寄存器的配置可能性,并提供具有以下设置的示例:

bull;选择 LSE 作为 RTC 时钟源(例如 LSE = 32768 Hz)。

bull;将异步预缩放器设置为 127。

bull;将同步预缩放器设置为 255(日历时钟等于 1Hz)。

bull;将警报设置为 255 秒(将 255 放在 SS[14:0] 字段中)。

表6. 报警子秒掩码组合

注意:次秒寄存器位(15、16 和 17)中的溢出位不是相对应的。

1.3 RTC单元周期性唤醒

与许多 ST 微电子微控制器一样,STM32提供多种低功耗降低功耗的模式。

STM32具有定期的时间库和唤醒单元,当STM32在低功耗模式下工作时,可唤醒系统。此单元是可编程的向下计数自动重新加载计时器。当此计数器达到零时,标志和中断(如果启用)生成。

唤醒装置具有以下功能:

bull;可编程的倒计时自动载入计时器。

bull;能够从低功耗模式下唤醒设备的特定标志和中断。

bull;唤醒备用函数输出,可路由到RTC_ALARM输出(唯一具有可配置极性的报警器A、报警器B或唤醒事件。

bull;一套完整的预缩放器,用于选择所需的等待期。

1.3.1 自动唤醒单元编程

表 7 描述了配置自动唤醒单元所需的步骤。

表7.配置自动唤醒单元的步骤

1.3.2 STM32 高级 RTC 概述

最大和最短的RTC唤醒周期唤醒单元时钟通过WUCKSEL[2:0]位RTC_CR1寄存器进行配置。

可以进行三种不同的配置:

bull; 配置 1:对于短唤醒周期,WUCKSEL[2:0] = 0xxb(有关时钟配置 1,请参阅定期时间库/唤醒配置)

bull; 配置 2:对于中等唤醒周期,WUCKSEL[2:0] = 10xb(有关时钟配置 2,请参阅定期时间库/唤醒配置)

bull; 配置 3:对于长唤醒周期,WUCKSEL[2:0] = 11xb,(有关时钟配置 3,请参阅定期时间库/唤醒配置)

时钟配置的周期时基/唤醒配置 1

图 8 显示了到时基/唤醒单元的预缩放器连接,表 8 给出了

与配置 1 对应的时间基/唤醒时钟分辨率。

预缩放器取决于唤醒时钟选择:

bull; WUCKSEL[2:0] =000:选择RTCCLK/16时钟

bull; WUCKSEL[2:0] =001:选择RTCCLK/8时钟

bull; WUCKSEL[2:0] =010:选择RTCCLK/4时钟

bull; WUCKSEL[2:0] =011:选择RTCCLK/2时钟

图 8.连接到配置1的时基/唤醒单元的预缩放器

表8.时钟配置1的时基/唤醒单元周期分辨率

当RTCCLK=32768Hz时,最小时基/唤醒分辨率为61.035mu;s,并且

最大分辨率为488.28mu;s。因此:

bull; 最小时间基数/唤醒周期为(0x0001 = 1)x 61.035mu;s =122.07mu;s。时基/唤醒计时器计数器WUT[15:0]不能设置为0x0000与WUCKSEL_2:0_011b (fRTCCLK/2),因为此配置是被禁止的。请参阅有关更多详细信息的STM32参考手册。

bull; 最大时基/唤醒周期为(0xFFFF= 1)x 488.28 mu;s = 2 s。

时钟配置的周期时间基/唤醒配置 2

图9显示了到时基/唤醒单元的预分频器连接,表9给出了与配置2对应的时间基/唤醒时钟分辨率。

图 9.连接到唤醒单元的预分频器,用于配置 2 和 3

表9.时钟配置2对应的时基/唤醒单元周期分辨率

1. PREDIV_A中等密度设备上的最小值为'1'。

当 RTCCLK= 32768 Hz 时,配置 2 的最小分辨率为 61.035 mu;s,并且

最大分辨率为 32s。

因此:

bull; 最小时间基数/唤醒周期为 (0x0000 = 1) x 61.035 mu;s = 122.07 mu;s。

bull; 最大时间基/唤醒周期为 (0xFFFF= 1) x 32 s = 131072 s(超过36 小时)。

时钟配置的周期时基/唤醒配置 3

对于此配置,分辨率与配置 2 的分辨率相同。但是,时间基/唤醒计数器停机时间从 0x1FFFF 开始到 0x00000,而不是0xFFFF 到 0x000,用于配置 2。

当 RTCCLK= 32768 时,

bull; 最短时间基数/唤醒周期为:

(0x1000 times; 1) x 61.035 mu;s = 250.06 ms

bull; 最长时间基/唤醒周期为:

(0x1FFFF= 1) x 32 s = 4194304 s(超过 48 天)。

时基/唤醒周期极值的总结

当 RTCCLK= 32768 Hz 时,最小值和最大周期值,具体取决于配置,相关数据见表10。

表10.最小值和最大值RTCCLK= 32768 时的时基/唤醒周期配置

1. 这些数值是在RTCCLK = 32768 Hz时计算的。

1.4 RTC 数字校准

1.4.1 RTC 粗校准

数字粗校准可通过在输出异步预缩放器 (ck_apre)添加(正校准)或屏蔽(负校准)时钟周期,以补偿晶体的误差。

可执行负校准的分辨率约为 2 ppm,且为正校准的分辨率约为 4 ppm。最大校准范围从 -63 ppm 到 126 ppm。

图10.粗校准模块

您可以使用AFO_CALIB计算时钟偏差,然后更新校准模块。它无法检查校准结果,因为 512 Hz 输出在校准模块之前。您可以检查校准结果的某些产品,因为

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[238142],资料为PDF文档或Word文档,PDF文档可免费转换为Word

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

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