找回密码
 注册
查看: 331|回复: 2
打印 上一主题 下一主题

ERTC实时时钟--AT_SURF案例

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 风吹过后 于 2022-10-27 09:54 编辑 ! t4 s" {" a" C) B. g
& U+ n1 s  r) ~0 d/ F+ V% f" I; l
AT32实时时钟(ERTC)是一个BCD计数器,内部完整的实现了日历计数逻辑,ERTC计数逻辑位于电池供电域,只要电池供电域有电,ERTC便会一直运行,不受系统复位以及VDD掉电影响。. I# b" W) s  ?2 b6 N5 i. G
ERTC主要具有以下功能:
+ }" e2 A$ K# ?9 @, K9 T$ l―        日历功能:年、月、日、时、分、秒
* X: S& e& n9 @+ v5 g+ U- W  `% A―        闹钟功能:闹钟A、闹钟B
. _1 L$ n6 z( o3 m) }" v7 T8 q―        周期性唤醒功能
9 f( X* S$ V2 H8 x―        入侵检测功能  U3 f7 `& g* n( h  ]# \
―        校准功能:精密校准、粗略校准
/ w8 C% B1 h5 ]- e该例程展示了如何使用ERTC实现日历功能,并通过LCD屏将日历显示出来。
& ~6 \9 ]6 B* |# I( g4 M0 q" ?6 S2 L2 q* w5 Y- ], @2 p
资源准备$ k. J" I7 ]" j
硬件环境:' N  ]8 X  g! d3 G$ p+ ]0 F
对应产品型号的AT-SURF-F437 Board8 r7 Q  B  l1 L, E  i7 y
软件环境:( `6 I' y1 i/ F7 A% x
AT32F435_437_Firmware_Library_v2.x.xprojectat_sufr_f437examplescalendar
9 Y& r, P, m+ {% \7 h7 _/ J8 g8 j7 ~; v; {) E4 @4 z6 I
硬件设计
1 i" }1 X2 T7 B/ z8 y+ z! n5 J% N. h) ^本案例使用的硬件资源有外部32768Hz晶振、电池,对应的引脚如下:
% @( n) l: e; q4 L2 b- P9 k% r表-硬件资源使用
3 ?( b% U, c% e& Q. _, E( ]  w" v% o) b6 c

  u$ c4 g5 Q' W/ I- Y- p  Z( l
) C0 I7 W+ ]" ]4 r& h8 P7 f对应的电路原理如下:
$ P4 D6 l$ w% I- X- c6 d图-外部低速晶振电路原理图
) M% l1 l- @8 M1 B8 d4 _1 J" ^$ A 1 e% x# J' K8 T" ?$ H
. w7 v( m% ]9 w" K1 x" v5 ?, {
图-电池供电电路原理图
& n3 Q/ z% M* q 5 C* k' N5 q7 @$ G$ i- ^

' f6 a) `/ [+ a. e3 c软件设计( T9 Z. R; l0 I: r2 X& M
1)        日历测试5 ?% w, {- J: |: P
初始化ERTC- R8 }* E4 c% U! `2 Y% ~
将日历显示在LCD屏上
9 h! H+ k! w0 r; n" I. D4 G" N2)        代码介绍
; V/ V3 `3 C3 P4 L( ?( B) _0 Y% nmain函数代码描述2 @0 h" V( I7 e; i
  • 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);
  • }
  • }
  • }
    8 A5 e" Z2 C7 n% ^  K
( D( }- }+ z% {, u: a8 @
$ Z% o5 T) j- ]( D# x

1 T7 p  q) N; ?void calendar_init(void)函数代码描述
& o+ N7 \, J" n/ y6 x
  • /**
  • * @Brief calendar init.
  • * @param none.
  • * @retval none.
  • */
  • void calendar_init(void)) i2 s3 V4 F( u! O6 [" P

7 s% |! q) J2 F8 D3 V* a) B' G9 A1 D2 q) x8 j% X8 K- E
( B  U0 D& c) _9 c' {

该用户从未签到

2#
发表于 2022-10-27 11:08 | 只看该作者
AT32的ERTC时钟源可以选择LEXT、LICK、HEXT,3种时钟源各有适应的场景
( @- p# G* l0 x4 h7 ~LEXT:通常使用32.768Khz的晶振   
+ K* i& q: q# |9 f1 o7 L  优点:是该种时钟源精度最高,并且能在电池供电下、以及低功耗模式下工作* L! F3 g* L9 f) K/ G1 k& y* J
  缺点:需要一颗晶振,增加元件成本,增大PCB布线面积
4 O1 O4 \! v2 J6 u5 P8 d4 v- fHEXT: 主晶振
' R7 _7 O& k" M! r* }  优点:该种时钟源精度也比较高,节省一颗晶振,降低了PCB布线面积
* Q! J* u8 x  r8 M/ d  缺点:不能在电池供电下、以及低功耗下模式工作, d. F  q+ T* I
LICK:典型值为40Khz,官方手册写了范围在30Khz~60KHz,
1 [1 @- X/ ~( s! `5 m; w6 O  优点:能在电池供电下、以及低功耗模式下工作,节省一颗晶振,降低了PCB布线面积
( Z8 e$ W: E; G) A2 }5 p  缺点:时钟精度低,时间不是很准

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-3 15:28 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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