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

ERTC实时时钟--AT_SURF案例

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 风吹过后 于 2022-10-27 09:54 编辑
7 w' E: L' Y) q8 ^5 B/ E$ w3 \0 i: f/ w
AT32实时时钟(ERTC)是一个BCD计数器,内部完整的实现了日历计数逻辑,ERTC计数逻辑位于电池供电域,只要电池供电域有电,ERTC便会一直运行,不受系统复位以及VDD掉电影响。5 q0 W# C) W  H* o
ERTC主要具有以下功能:
2 H: @+ b* ~4 A" l% S  ]―        日历功能:年、月、日、时、分、秒
3 E6 v) V. t/ j  Q, h+ d1 M―        闹钟功能:闹钟A、闹钟B
. `8 {; V9 V/ f! g: Y5 U―        周期性唤醒功能
- K+ X* F* _  z. C―        入侵检测功能
& P; O& d0 X! O1 m1 D4 t―        校准功能:精密校准、粗略校准
9 D( K% G* i1 j该例程展示了如何使用ERTC实现日历功能,并通过LCD屏将日历显示出来。
0 U) h6 l* y' K; y: y: n$ Y/ o# B* n( J7 D6 G$ ^
资源准备
7 g  x1 j0 b; z* _硬件环境:, R9 Z. E& i8 {5 E: Z; e7 h
对应产品型号的AT-SURF-F437 Board
9 z( l( Q2 P' ]5 p) C) u8 y软件环境:3 s+ b+ a; b$ e* ^0 @1 @
AT32F435_437_Firmware_Library_v2.x.xprojectat_sufr_f437examplescalendar9 k: R( F# t: M" r6 E

) O9 @- L; w, E1 |! ]$ X0 k硬件设计$ N% _" w8 G' ~" J* Q5 a! c
本案例使用的硬件资源有外部32768Hz晶振、电池,对应的引脚如下:
6 ]/ _+ V, P8 h7 Y表-硬件资源使用
% I4 E* B5 j4 r3 J. }& u! G1 _; M) p2 P: {  G+ r
& S5 L3 H7 ]2 ^6 S8 r0 Q+ o$ F
7 {2 A, ~8 z  P0 G/ h& ~
对应的电路原理如下:/ X: L+ N/ I  G3 B; v0 R/ v& G
图-外部低速晶振电路原理图0 ?* `0 A, F+ [) B) a' ]$ z

/ @. e% u1 |4 t0 J, G0 @
6 {" Y3 a9 B3 P# Y6 ]图-电池供电电路原理图
+ ?3 M# G7 B  I  w3 b9 y , X- y4 F2 e) u# [% j0 f- |) [

% p+ j; x) J3 a6 ~! a0 w8 i软件设计" m9 {6 I6 }- B$ U) u+ }4 Z
1)        日历测试  `! [9 S; X6 j" D
初始化ERTC
% n5 P0 o  g% a, ~将日历显示在LCD屏上
8 A( L" T: A+ C$ c" e6 \( ^2)        代码介绍
; I5 Y# t& Z/ E3 q" kmain函数代码描述* s% S, d& G4 C. m
  • 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);
  • }
  • }
  • }
    5 l0 L, W0 Q. Z# E& I0 J$ }3 y4 t$ a

  P- N) N% F8 T0 D8 D. `0 {! m# h

, j- p! r, V; ~+ j* |( kvoid calendar_init(void)函数代码描述$ w( S6 Z% }0 j+ Z
  • /**
  • * @Brief calendar init.
  • * @param none.
  • * @retval none.
  • */
  • void calendar_init(void)% b* I2 N0 T* U

1 R" e% @, b. E9 u+ z7 t9 g7 d
; n# S: M7 y1 \
8 H2 X1 G5 |  x% ^; H+ L) G) e3 y' e

该用户从未签到

2#
发表于 2022-10-27 11:08 | 只看该作者
AT32的ERTC时钟源可以选择LEXT、LICK、HEXT,3种时钟源各有适应的场景) O. w  m) W8 v+ |. ]( F3 @* y
LEXT:通常使用32.768Khz的晶振   + K5 z- F* z3 l9 l1 d' G9 y
  优点:是该种时钟源精度最高,并且能在电池供电下、以及低功耗模式下工作/ S2 N- a% z  q: r4 K
  缺点:需要一颗晶振,增加元件成本,增大PCB布线面积/ i( P8 E6 J6 [$ g
HEXT: 主晶振
( H* P* D7 N, r7 P9 T  优点:该种时钟源精度也比较高,节省一颗晶振,降低了PCB布线面积9 ?& [) W( A, o
  缺点:不能在电池供电下、以及低功耗下模式工作
! [3 U8 M# B* N$ @4 f% W4 HLICK:典型值为40Khz,官方手册写了范围在30Khz~60KHz,; j1 T3 P8 L( c3 t! Q
  优点:能在电池供电下、以及低功耗模式下工作,节省一颗晶振,降低了PCB布线面积1 s5 S- s6 A# b, C! H8 h+ C
  缺点:时钟精度低,时间不是很准

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-12 02:29 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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