ertc接口简介
ertc计数逻辑位于电池供电域,只要电池供电域有电,ertc便会一直运行,不受系统复位以及vdd掉电影响,ertc主要具有以下功能:― 日历功能:年、月、日、时、分、秒― 闹钟功能:闹钟a、闹钟b― 周期性唤醒功能― 入侵检测功能― 校准功能:精密校准、粗略校准图1. ertc框图
ertc功能
各型号ertc功能差异
各型号ertc基本功能相同,只是各个型号之间,可能去掉了一些更高级的功能,所有保留的功能程序兼容。表1. 各型号ertc差异√:表示支持该功能,且功能相同。×:表示不支持该功能。
寄存器访问
寄存器写保护上电复位后ertc寄存器处于写保护状态,需要先解除写保护,才能写配置ertc寄存器。需要注意的是ertc_sts[14:8]、ertc_tamp和ertc_bprx寄存器不受写保护。
解锁步骤:
1) 使能pwc接口时钟2) 解锁电池供电域写保护3) 依次向ertc_wp寄存器写入0xca,0x53,解锁写保护若向ertc_wp寄存器写入错误的值,将重新激活写保护4) 配置ertc寄存器
下表列举了ertc寄存器受写保护状态,以及写入的条件:
表2. ertc寄存器
寄存器复位
ertc寄存器处于电池供电域,可以crm_bpdc的bpdrst进行电池供电域复位,也可以由提供的库函数对每个寄存器写默认值进行复位。
ertc复位相关函数:
电池供电域复位将ertc所有寄存器恢复成默认值
时钟设置
时钟源选择ertc时钟源经过选择后输入到分频器a和分频器b,最终得到1hz的时钟用来更新日历。图2. ertc时钟结构
ertc的时钟源共有3种可以选择:
― lext:外部低速晶振,通常为32.768khz― lick:内部低速晶振,通常典型值为40khz范围(30~60khz),详情请见各型号的datasheet― hext_div:外部高速晶振分频后得到的时钟,不同的型号下,分频值不一样,请见表3表3. 各型号hext的预分频值
表4. 各时钟源优缺点对比
ertc时钟源设置相关函数:
选择对应时钟使能选择ertc时钟使能ertc时钟
预分频器设置
通过预分频器a和预分频器b将获得1hz时钟,计算公式如下:推荐在应用中将预分频器a设置成最大值(127)这样可以最大程度降低功耗。表5. 分频设置举例
设置ertc预分频器
ertc时钟初始化举例:
日历
ertc日历格式如下图所示,包含有年、月、日、星期、时、分、秒、亚秒。图3. 日历格式
时间格式设置
时间格式可以选择24小时或者12小时格式,如果为24小时格式时,am/pm字段无意义,在初始化日历之前,应该首先选择时间格式。时间格式设置函数:例如设置日历格式为24小时模式
日历初始化
通过配置ertc_date和ertc_time寄存器可以设置日历时间:日历值设置函数:例如设置时间为2020-05-01 1200星期六
日历读取
通过读取ertc_date、ertc_time和ertc_sbs寄存器可以读取日历时间,日历读取有两种模式分别为同步读取(dren=0)和异步读取(dren=1)。― 同步读取:ertc每两个ertc_clk周期,将日历值同步到影子寄存器ertc_date、ertc_time和ertc_sbs,同步完成后updf将置1。读取低阶寄存器时会将高阶寄存器值锁定,直到读取ertc_date寄存器,这保证读取的ertc_sbs、ertc_time、ertc_date寄存器值来自同一时刻。例如读取ertc_sbs,会将ertc_time、ertc_date寄存器值锁定。― 异步读取:ertc直接读取电池供电域的ertc时钟和日历值,这样避免了由于同步时间带来的误差。异步读取时,updf标志将由硬件清0。为保证异步读取时钟和日历值来自同一时刻,软件必须连续两次读取时钟和日历值,并比较两次结果是否一致,如果不一致应该再读,直到两次结果一致。在大多数应用下,都推荐使用同步读取模式,因为这样可以简化程序。等待同步函数(等待updf置1)读取模式设置函数例如设置读取模式为同步读取日历读取函数:结构体ertc_time_type里面参数含义如下:― year:年― month:月― day:日― hour:时― min:分― sec:秒― week:星期几― ampm:上午/下午(只有在12小时制时,数据有效)亚秒读取亚秒值为预分频器div_b的计数值,预分频器div_b是一个递减计数器,例如当div_b=255时,1个亚秒值代表的时间为1/(255+1)秒。亚秒读取函数:
闹钟
ertc包含两个完全相同的闹钟a、闹钟b,闹钟值由ertc_alasbs/ertc_ala(ertc_albsbs/ertc_alb)设定,开启闹钟后,当设定的闹钟值匹配日历值时alaf/albf置1,发生闹钟事件。通过maskx位,可选择性的屏蔽日历字段,被屏蔽的字段不参与闹钟匹配。图4. 日闹钟匹配因为闹钟a和闹钟b完全一样,所以后面的举例都用闹钟a举例闹钟格式选择:― ertc_ala的wksel=0时:日期、时、分、秒、亚秒― ertc_ala的wksel=1时:星期、时、分、秒、亚秒闹钟的各个字段日期/星期、时、分、秒、亚秒均可通过mask位屏蔽,使闹钟的产生更加的灵活― mask4=1:闹钟和日/星期无关― mask3=1:闹钟和小时无关― mask2=1:闹钟和分钟无关― mask1=1:闹钟和秒钟无关例如在wksel=0时,将闹钟设置为15号1210表6. 屏蔽设置举例通过设置ertc_alasbs的sbsmsk可以对亚秒进行屏蔽:― sbsmsk=0:不匹配亚秒,闹钟与亚秒无关;― sbsmsk=1:只匹配sbs[0];― sbsmsk=2:只匹配sbs[1:0];― sbsmsk=3:只匹配sbs[2:0];― ...― sbsmsk=14:只匹配sbs[13:0];― sbsmsk=15:匹配sbs[14:0]。―例如在div_a=127,div_b=255(亚秒)时,只考虑亚秒的触发闹钟表7. 亚秒屏蔽设置举例
闹钟相关函数
日期/星期、时、分、秒屏蔽选择日期或者星期格式设置闹钟值:日期/星期、时、分、秒、am/pm设置闹钟亚秒值以及屏蔽闹钟中断使能获取当前配置的闹钟值获取当前配置的闹钟亚秒值
周期性自动唤醒
周期性唤醒功能用于周期性自动唤醒低功耗模式,唤醒周期由val[15:0]设定。当唤醒计数器值由val值递减至0时,watf标志置1,产生唤醒事件,同时唤醒计数器值重载val值。
可以根据需要选择不同的时钟源,通过寄存器watclk[2:0]配置
― 000:ertc_clk/16;― 001:ertc_clk/8;― 010:ertc_clk/4;― 011:ertc_clk/2;― 10x:1hz;― 11x:1hz,唤醒计数值增加216,唤醒时间=wat+216+1。图5. 唤醒定时器时钟选择当watclk[2:0]=11x时,如果日历时钟为1hz,可获得最长的唤醒时间=65535+216+1=131072秒。如果日历时钟调整为none reset。如果寄存器里数据正确打印bpr reg=>reset。主函数里每秒打印一次日历信息。案例 使用日历以及闹钟功能
功能简介
演示日历功能、闹钟功能的使用。
资源准备
1) 硬件环境:对应产品型号的 at-start board2) 软件环境project\at_start_f4xx\examples\ertc\calendar注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考at32xxx_firmware_library_v2.x.x\project\at_start_xxx\templates中各种编译环境(例如iar6/7,keil 4/5)进行简单修改即可。
软件设计
1) 配置流程
开启pwc时钟使能电池供电域写保护检查日历是否已经初始化,如果正确就跳过初始化,如果不正确就初始化日历以及闹钟主函数里每秒打印一次日历信息在21-05-01 1210时刻发生闹钟。2) 代码介绍
main函数代码描述
ertc初始化ertc_config函数代码描述
闹钟中断函数代码描述
实验效果
信息通过串口打印出来,在电脑上通过串口助手观看打印信息。主函数里每秒打印一次日历信息。在21-05-01 1210时刻发生闹钟。案例 使用lick时钟并校准
功能简介
使用lick时钟作为ertc时钟,并通过定时器测量出lick时钟频率,通过得到的频率值,调整ertc分频,达到在一定范围内校准时间的效果
资源准备
1) 硬件环境:对应产品型号的at-start board2) 软件环境project\at_start_f4xx\examples\ertc\lick_calibration注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考at32xxx_firmware_library_v2.x.x\project\at_start_xxx\templates中各种编译环境(例如iar6/7,keil 4/5)进行简单修改即可。
软件设计
1) 配置流程
ertc初始化配置测量lick频率定时器根据测量到的频率重新配置ertc分频2) 代码介绍
main函数代码描述
实验效果
信息通过串口打印出来,在电脑上通过串口助手观看打印信息。通串口打印出当前测量出的lick的频率以及div_a、div_b的值。每秒钟打印一次日历。案例 入侵检测
功能简介
演示入侵检测功能使用,pc13脚当检测到一个上升沿后将触发入侵检测,当入侵事件发生时,电池供电数据寄存器将会被清除。
资源准备
1) 硬件环境:对应产品型号的at-start board2) 软件环境project\at_start_f4xx\examples\ertc\tamper注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考at32xxx_firmware_library_v2.x.x\project\at_start_xxx\templates中各种编译环境(例如iar6/7,keil 4/5)进行简单修改即可。
软件设计
1) 配置流程
ertc初始化初始化入侵检测初始化电池供电寄存器2) 代码介绍
main函数代码描述
入侵检测中断处理函数代码描述
实验效果
信息通过串口打印出来,在电脑上通过串口助手观看打印信息。当发生入侵事件时(pc13出现上升沿),在入侵中断函数里打印电池供电寄存器被清除的信息。案例 时间戳
功能简介
演示时间戳功能使用,pc13脚当检测到一个上升沿后将触发时间戳,在时间戳中断里打印发生事件的时刻。
资源准备
1) 硬件环境:对应产品型号的at-start board2) 软件环境project\at_start_f4xx\examples\ertc\time_stamp注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考at32xxx_firmware_library_v2.x.x\project\at_start_xxx\templates中各种编译环境(例如iar6/7,keil 4/5)进行简单修改即可。
软件设计
1) 配置流程
ertc初始化初始化时间戳2) 代码介绍
main函数代码描述
时间戳中断处理函数代码描述
实验效果
信息通过串口打印出来,在电脑上通过串口助手观看打印信息。当发生时间戳事件时(pc13出现上升沿),在中断里打印当前保存的时间戳。案例 周期唤醒定时器
功能简介
演示周期唤醒定时器功能使用。
资源准备
1) 硬件环境:对应产品型号的at-start board2) 软件环境project\at_start_f4xx\examples\ertc\wakeup_timer注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考at32xxx_firmware_library_v2.x.x\project\at_start_xxx\templates中各种编译环境(例如iar6/7,keil 4/5)进行 简单修改即可。
软件设计
1) 配置流程
ertc初始化初始化周期唤醒定时器2) 代码介绍
main函数代码描述
周期唤醒中断处理函数代码描述
实验效果
信息通过串口打印出来,在电脑上通过串口助手观看打印信息。每个5秒发生一次周期性唤醒事件,在中断里打印出信息。每秒钟打印一次日历。关于雅特力雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器(mcu)创新趋势的芯片设计公司,专注于arm cortex-m4/m0+的32位微控制器研发与创新,全系列采用55nm先进工艺及arm cortex-m4高效能或m0+低功耗内核,缔造m4业界最高主频288mhz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、adas、t-box、数字电源、电动工具等终端设备应用,广泛地覆盖5g、物联网、消费、商务及工控等领域。
超级电容使用注意事项
减速电机日常出现的异常原因及解决方法
FreeRTOS消息队列结构体
博世正式发布了车载3D显示屏,可能开启新一轮装机热潮
今日看点丨中国之外,美国限制英伟达向中东国家出口AI芯片;传苹果正测试金属3D打印工艺制造Apple Watch
AT32讲堂022 | AT32 MCU ERTC的基本功能
工业4.0革命的幕后推手是谁?
从AlphaGO到现在的Master,人工智能AI也不一定无敌
T-Mobile在贝尔维尤开设了新的设备实验室来用于测试各种无线技术
多路接口与E1协议转换器设计
小米提交的一项专利在背面展示了一个滑动摄像头模块
施密特触发器能代替电压比较器吗_电压比较器与施密特触发器的区别
全球6大旗舰PK,一加3T以快充领先
使用便携式有毒气体检测仪前需要注意哪些事项?
碧桂园战略布局机器人领域
7月动力电池市场数据公布!
电视机顶盒哪个牌子好?经销商推荐线下热销电视机顶盒排行榜
USB Type-C接口将促使着手机端口的统一化
深圳市麦捷微电子科技股份有限公司举行投资者关系活动
联发科推出i700平台 2020年对外供货