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

ERTC实时时钟--AT_SURF案例

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 风吹过后 于 2022-10-27 09:54 编辑
$ q" g" U8 j- M! z/ a& W' u: e' h- v! }, }+ d
AT32实时时钟(ERTC)是一个BCD计数器,内部完整的实现了日历计数逻辑,ERTC计数逻辑位于电池供电域,只要电池供电域有电,ERTC便会一直运行,不受系统复位以及VDD掉电影响。/ |. c8 @. z0 A$ n' K3 T
ERTC主要具有以下功能:
1 O3 V5 ?# K: Q4 |# ?―        日历功能:年、月、日、时、分、秒9 z* E6 E- n2 t. k, D7 k8 r
―        闹钟功能:闹钟A、闹钟B
" ]% J! ]! q( ^―        周期性唤醒功能5 t  v$ m+ Q0 k2 d) }5 l
―        入侵检测功能
" _2 d& X/ M- h* r1 M  v$ Y1 g  b―        校准功能:精密校准、粗略校准, M# `2 C/ n8 C
该例程展示了如何使用ERTC实现日历功能,并通过LCD屏将日历显示出来。' w6 a4 ?6 T5 l. [

: c* G( Q# k6 K, j资源准备
7 `" ~0 r, R5 W2 e1 U硬件环境:+ ]8 c$ b+ P* @6 u
对应产品型号的AT-SURF-F437 Board4 [( |, n. A" Q, v
软件环境:' a# ^) z: z# r. L1 Q
AT32F435_437_Firmware_Library_v2.x.xprojectat_sufr_f437examplescalendar7 t5 q  y% g. \

9 a) D7 p* ]" A( E; j硬件设计0 E# n% v  K4 L7 Q
本案例使用的硬件资源有外部32768Hz晶振、电池,对应的引脚如下:1 h% K7 r" V2 a; G3 j
表-硬件资源使用
" J6 C# q( F& q  I, a. @  G
* x1 c" n" I9 n# Q
" D8 b4 P; z$ d* Q: f. D4 l+ \. a, l) H" M
对应的电路原理如下:5 n% f5 m' G  L- l+ V4 L3 C
图-外部低速晶振电路原理图
1 r  }' l! D9 l, E
/ c5 r1 ~  K, l% d: W! j% b# Q7 E; I' I: c& b, D- S0 N% b* g, J
图-电池供电电路原理图
! g5 [- U4 d9 h7 a8 a! Z* C
: [4 H3 k4 Q" R5 c6 [
# ~% T" }2 \! u5 R  R2 v软件设计
/ K. a3 r# p2 T1)        日历测试6 D7 x: t* E+ [  x( c
初始化ERTC! P) {$ i0 V/ o1 `+ C- G/ l- L$ T3 z
将日历显示在LCD屏上9 k6 i2 {- \, _8 X* K. @
2)        代码介绍
6 R2 L$ j1 O1 smain函数代码描述
! V' A- X) R2 R  `$ L! T: e
  • 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);
  • }
  • }
  • }
    # L: z6 V- B  i8 x4 u

+ m5 B9 H* s* b% G5 ~
- {0 G, \% l' d
% s: m( t* W6 |9 S8 \7 L0 hvoid calendar_init(void)函数代码描述
% f2 |( o1 R9 M: o! h, p5 k
  • /**
  • * @Brief calendar init.
  • * @param none.
  • * @retval none.
  • */
  • void calendar_init(void)
    5 U% w$ R, P. T: Z

2 x. @" T6 l1 z% k
2 b! v* d9 V6 p; k* v7 z1 O2 s# W. w6 n& e8 f

该用户从未签到

2#
发表于 2022-10-27 11:08 | 只看该作者
AT32的ERTC时钟源可以选择LEXT、LICK、HEXT,3种时钟源各有适应的场景/ f- b: p3 W9 S3 Z
LEXT:通常使用32.768Khz的晶振   
4 f3 O! n0 _2 n& m  优点:是该种时钟源精度最高,并且能在电池供电下、以及低功耗模式下工作# \  B9 c7 `6 n" e
  缺点:需要一颗晶振,增加元件成本,增大PCB布线面积. K6 K& j9 H) p+ Q2 i
HEXT: 主晶振
  V4 h9 h9 l3 T4 {) U2 Z  优点:该种时钟源精度也比较高,节省一颗晶振,降低了PCB布线面积& K6 [4 _: H: d, ~$ ~
  缺点:不能在电池供电下、以及低功耗下模式工作  t6 p3 F7 d. o; A  {. E9 r
LICK:典型值为40Khz,官方手册写了范围在30Khz~60KHz,; M! T6 H4 d# }1 w* a7 b
  优点:能在电池供电下、以及低功耗模式下工作,节省一颗晶振,降低了PCB布线面积
) y5 {; q) Q9 p0 h; v$ G  缺点:时钟精度低,时间不是很准

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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