找回密码
 注册
关于网站域名变更的通知
查看: 511|回复: 2
打印 上一主题 下一主题

ERTC实时时钟--AT_SURF案例

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-10-27 09:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 风吹过后 于 2022-10-27 09:54 编辑
; m/ T9 O( o  \# [6 r/ O
& N# M1 ]  \8 N& r4 EAT32实时时钟(ERTC)是一个BCD计数器,内部完整的实现了日历计数逻辑,ERTC计数逻辑位于电池供电域,只要电池供电域有电,ERTC便会一直运行,不受系统复位以及VDD掉电影响。
/ `  e- {# x, B2 H  T9 H) kERTC主要具有以下功能:
; D0 f  C& m& I+ i―        日历功能:年、月、日、时、分、秒0 S) ?0 @  l2 {4 E/ D- D
―        闹钟功能:闹钟A、闹钟B
/ o7 l% k$ x  s; i& e/ V4 B―        周期性唤醒功能
8 ~% P; C1 b( S0 G2 r―        入侵检测功能
# o* o) M' b. z. z3 V3 L4 o―        校准功能:精密校准、粗略校准) [8 J( u* B) R- B" r# h
该例程展示了如何使用ERTC实现日历功能,并通过LCD屏将日历显示出来。& J; D* b" F' |, D) S" x
1 |7 e: O- a/ \0 m! F
资源准备
' O( T" R- c! e) d3 x硬件环境:; z' G- Z. [( o: Y8 p
对应产品型号的AT-SURF-F437 Board3 I. V: f8 L5 ~' J
软件环境:  t" n% w' `% ~- K8 Q* V/ r
AT32F435_437_Firmware_Library_v2.x.xprojectat_sufr_f437examplescalendar" C0 n4 u$ |- I0 J0 Q* t7 G

+ v6 ?8 y% W2 K1 l: g# o硬件设计
( C1 U- J/ r3 v/ a5 q4 Y本案例使用的硬件资源有外部32768Hz晶振、电池,对应的引脚如下:
% Z7 M, w: c0 o  `表-硬件资源使用
! ]6 ~% M3 k, k% B: h/ Z  c7 B/ n7 ^7 W
7 `/ P' ~# b; C4 F4 ^$ B

; s5 g7 m. I6 I3 d对应的电路原理如下:; i* b! K; g, N. Z4 ]/ O
图-外部低速晶振电路原理图
; v  l! Z% }5 W- n& |8 V1 G& k6 t
+ |- d; P" p* ?! Y8 N
& m6 b- c1 x6 K. ~( L4 A图-电池供电电路原理图
4 ~! _8 [% ^7 d
- g* D6 }/ d5 x& e1 |6 a7 r1 o! r( s+ Z  [" k
软件设计3 u$ `. \- x( I1 [0 z& R# d
1)        日历测试
% K: |" K2 r# f% r/ S$ K初始化ERTC
8 g+ x1 ~1 l4 k# O# Z$ v8 Q将日历显示在LCD屏上/ E6 o, I5 C1 ?$ d: M8 `
2)        代码介绍
/ p0 A" A; W( F# w3 T1 U* [. Jmain函数代码描述7 g! Y& E2 o( m* C0 t: o7 @
  • int main(void)
  • {
  • uint8_t temp = 0;
  • ertc_time_type time;
  • /* 初始化系统时钟 */
  • system_clock_config();
  • /* 初始化中断优先级分组 */
  • nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
  • /* 初始化延时函数 */
  • delay_init();
  • /* 初始化LCD */
  • lcd_init(LCD_display_VERTICAL);
  • /* 初始化日历 */
  • calendar_init();
  • /* 显示信息 */
  • lcd_string_show(10, 20, 200, 24, 24, (uint8_t *)"Calendar Test");
  • /* 显示符号 */
  • lcd_string_show(10, 60, 200, 24, 24, (uint8_t *)" - - : : ");
  • while(1)
  • {
  • /* 获取当前时间 */
  • ertc_calendar_get(&time);
  • if(temp != time.sec)
  • {
  • temp = time.sec;
  • /* 显示年 */
  • lcd_num_show(10, 60, 200, 24, 24, time.year + 2000, 4);
  • /* 显示月 */
  • lcd_num_show(70, 60, 200, 24, 24, time.month, 2);
  • /* 显示日期 */
  • lcd_num_show(106, 60, 200, 24, 24, time.day, 2);
  • /* 显示时 */
  • lcd_num_show(142, 60, 200, 24, 24, time.hour, 2);
  • /* 显示分 */
  • lcd_num_show(178, 60, 200, 24, 24, time.min, 2);
  • /* 显示秒 */
  • lcd_num_show(214, 60, 200, 24, 24, time.sec, 2);
  • }
  • }
  • }* {0 w8 G2 \. n6 y
# y/ E( C. F% b& n! E/ K$ c
% p9 V1 \# J# G9 m8 [9 T- E. p

; F; S6 e2 @  ~: J2 E6 g* |: Evoid calendar_init(void)函数代码描述
; x1 [& V/ M2 p! {3 z2 w
  • /**
  • * @Brief calendar init.
  • * @param none.
  • * @retval none.
  • */
  • void calendar_init(void)
    . \8 g/ r: I7 O' Z/ ^/ c
  F2 m+ h, L/ _% F2 |; Q5 n( h

$ D4 Y( ?6 d: g3 f1 W* {, W- n, M( F* Y5 u! G: M

该用户从未签到

2#
发表于 2022-10-27 11:08 | 只看该作者
AT32的ERTC时钟源可以选择LEXT、LICK、HEXT,3种时钟源各有适应的场景
% M0 p' E$ T" X+ U1 |9 u. M: n  o% ZLEXT:通常使用32.768Khz的晶振   : t$ d5 R& z, K5 k
  优点:是该种时钟源精度最高,并且能在电池供电下、以及低功耗模式下工作
8 ~, Q0 d3 c: r$ U. L% r7 J! J# b  缺点:需要一颗晶振,增加元件成本,增大PCB布线面积* X9 W2 Y9 [8 H& S( F" B3 H* A
HEXT: 主晶振
' o. J/ |* X5 S% x: J  优点:该种时钟源精度也比较高,节省一颗晶振,降低了PCB布线面积
! n! n( R8 _. ^  缺点:不能在电池供电下、以及低功耗下模式工作0 X! h1 Y0 D2 A- p
LICK:典型值为40Khz,官方手册写了范围在30Khz~60KHz,
4 O  i' @" `+ \4 D- f) A4 ^4 L' {& z  优点:能在电池供电下、以及低功耗模式下工作,节省一颗晶振,降低了PCB布线面积4 o: Y) j& g, l' s" ]7 A7 r9 \+ U1 A
  缺点:时钟精度低,时间不是很准

该用户从未签到

3#
发表于 2022-10-27 13:17 | 只看该作者
ERTC的意思是增强型RTC,在ERTC里面,逻辑就不是简单的增加计数值了,而是里面有完整的年月日时分秒,有日历逻辑,相比于RTC,ERTC不存在将日期转化成秒,或者将秒转化成日期的操作,这简化了软件的操作,更不容易出bug,我们配置好初始的时间之后,然后就可以直接读取时间了,所以ERTC和RTC两个外设是完全不一样的外设,也就是他们的程序不能通用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2026-4-18 20:31 , Processed in 0.125000 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表