当前位置: 首页 > news >正文

S32K328上芯片内部RTC的使用和唤醒配置

1:RTC介绍

1.1 RTC基础功能介绍

参考《S32K3xx Reference Manual》,S32K328芯片内部自带RTC功能,并且支持从低功耗状态下唤醒设备;
在这里插入图片描述

1.2 RTC电源介绍

由以下三张图可知

1:RTC由V11供电,V11依赖外部V15供电;
2:MCU外部只需要输入3.3V或5V + 1.5V;
3:待机模式下,RTC任然保持供电在;

电源转换框图
在这里插入图片描述
外部电源输入图,也就是说 外部电源只需要输入3.3V和1.5V即可
在这里插入图片描述
详细电源介绍
在这里插入图片描述

2:RTC的mex配置

2.1 RTC模块配置

基础通道配置
在这里插入图片描述
硬件中断配置
在这里插入图片描述
唤醒配置
在这里插入图片描述

2.2 WKPU 模块配置

参考文档可知,RTC唤醒源,默认为bit0或bit1
在这里插入图片描述

添加以下中断配置表
在这里插入图片描述
配置以下唤醒通道
在这里插入图片描述
唤醒通道基础配置
在这里插入图片描述

2.3 clock配置

两个模式状态均需要使能;不然可能在待机模式下,RTC不会继续计数
在这里插入图片描述

3:软件代码

3.1 RTC时间设置和读取

RTC时间设置和获取就比较简单了,只要初始化正确就行;

int main (void)
{static Rtc_Ip_TimedateType lasttime;Rtc_Ip_TimedateType nowtime;/* 时钟初始化 */Clock_Ip_Init(&Clock_Ip_aClockConfig[0]);/* 失能和清除API中断,否则上电启动进入中断 */Rtc_Ip_DisableInterrupt(RTC_INST, RTC_IP_API_INTERRUPT);/* 初始化中断控制器 */IntCtrl_Ip_InstallHandler(RTC_IRQn, RTC_0_Ch_0_ISR, NULL_PTR);IntCtrl_Ip_EnableIrq(RTC_IRQn);/* 初始化RTC */Rtc_Ip_Init(RTC_INST, &RTC_0_InitConfig_PB);/* 配置中断,API匹配中断 */ // 注意这里要设置不同的参数Rtc_Ip_EnableInterrupt(RTC_INST, RTC_IP_API_INTERRUPT);/* 定时器启动,并配置API比较值 */Rtc_Ip_StartTimer(RTC_INST,RTC_PERIOD);/* 设置当前时间 ,实则配置rtc比较值 */Rtc_Ip_SetTimeDate(RTC_INST, &Rtc_DateTimeCfg_0);while(1){/* RTC获取当前时间 */Rtc_Ip_GetTimeDate(RTC_INST, &nowtime);/* 对比时间,判断时间是否更新 */
//    	if(false == DataTimeCompare(&lasttime, &nowtime))if(memcmp(&lasttime, &nowtime, sizeof(Rtc_Ip_TimedateType))){printf("%d-%d-%d %d:%d:%d\r\n",nowtime.year, nowtime.month, nowtime.day,\nowtime.hour, nowtime.minutes, nowtime.seconds);}/* 记录值用于比较 */lasttime = nowtime;}return 0;
}

这里存在两个问题
1:如果发现 Rtc_Ip_GetTimeDate 的时间数据不更新,那么参考以下初始化RTC的三个函数,缺一不可;
2:RTC记录的时间,MCU重启就会丢失,通过示波器测量V11电源稳定无变化;实测不能实现掉主电(MCU_3V3)持续更新时间功能

跟踪了一下RTD生成的源代码,发现 “Rtc_Ip_GetTimeDate” 获取的参数,初始化会设置为0;
在这里插入图片描述

3.2 RTC唤醒

通过 "figure 189"可知,RTC可以配置两个唤醒源;

初始化都设置好了之后,在休眠前执行如下唤醒函数;配置 wakeup source bit[0];
参考 Rtc_Ip.h 定义–“Rtc_Ip_StartTimer”, reads the RTC counter register,这里是tick计数,需要自己进行单位转**

// Rtc_Ip.h 定义
/**
* @brief         Function for starting the Rtc timer channel.
* @details       This function:
*                       - disables the API functionality
*                       - sets the timeout value (in RTCC - APIVAL)
*                       - enables API functionality (RTCC - APIEN).
*                       - reads the RTC counter register and stores the value of the channel start time
*
* @param[in]     value            channel timeout value
* @return        void
* @pre           The data structure including the configuration set required for initializing the GPT driver
*
*/
void Rtc_Ip_StartTimer(uint8 instance, uint32 value);
/*************************************/// 应用实现,配置一下定时时间和唤醒中断0
void wkup_config(void)
{/* RTC configuration */Rtc_Ip_StopTimer(RTC_INST);Rtc_Ip_StartTimer(RTC_INST, 30*32768);/* WKPU configuration */Wkpu_Ip_Init(WKPU_INST, &Wkpu_Ip_Config_PB);Wkpu_Ip_EnableInterrupt(WKPU_INST, 0);/*enter sleep*/Power_Ip_SetMode(Power_Ip_aModeConfigPB);
}

休眠之后实现唤醒
在这里插入图片描述

唤醒中断1的配置如下, 未实测过

void Wkup_Config(void)
{/* WKPU configuration */Wkpu_Ip_Init(WKPU_INST, &Wkpu_Ip_Config_PB_BOARD_InitPeripherals);Wkpu_Ip_EnableInterrupt(WKPU_INST, 1);/* Init Rtc and RTC_0_InitConfig_PB is config tool generated */Rtc_Ip_Init(RTC_INST, &RTC_0_InitConfig_PB);/* Stop the Rtc counter */Rtc_Ip_StopCounter(RTC_INST);/* Sets the timeout value (in RTCC - RTCVAL)Start the Rtc counter. */Wkup_SetRtcCompareValue(RTC_TIME);Rtc_Ip_StartCounter(RTC_INST);
}

文章转载自:

http://XKebg04e.jbxmb.cn
http://iHOBDrRb.jbxmb.cn
http://6ETu0lKI.jbxmb.cn
http://q2FUmtLq.jbxmb.cn
http://UL0Tu3v6.jbxmb.cn
http://zjojYPLN.jbxmb.cn
http://5f0WcK9x.jbxmb.cn
http://HoW85cBF.jbxmb.cn
http://f9JPOhRo.jbxmb.cn
http://sDqikmSd.jbxmb.cn
http://aXAh6oik.jbxmb.cn
http://6oZ8QJY3.jbxmb.cn
http://GSyeoKzD.jbxmb.cn
http://iC2Ecw4R.jbxmb.cn
http://wp8r8sqw.jbxmb.cn
http://MF5Ij0QT.jbxmb.cn
http://qRGiPvsz.jbxmb.cn
http://cXDxKRU5.jbxmb.cn
http://KFdpZHNa.jbxmb.cn
http://NCD5fXOY.jbxmb.cn
http://o96MQnEV.jbxmb.cn
http://moMKGguw.jbxmb.cn
http://bjylMzXk.jbxmb.cn
http://038yFcFI.jbxmb.cn
http://oWn5DtDw.jbxmb.cn
http://MoXEnJ99.jbxmb.cn
http://UNOjg6BH.jbxmb.cn
http://Uo9QcS4e.jbxmb.cn
http://6FDhmQKQ.jbxmb.cn
http://S6rzMZoC.jbxmb.cn
http://www.dtcms.com/a/366268.html

相关文章:

  • Paraverse平行云实时云渲染助力第82届威尼斯电影节XR沉浸式体验
  • 苹果Vision Air蓝图或定档2027,三星/微美全息加速XR+AI核心生态布局卡位
  • 低代码高效搭建应用,轻松应对多场景需求
  • 鸿蒙分布式数据同步失败全解
  • 执行select * from a where rownum<1;,数据库子进程崩溃,业务中断。
  • 【kernel】binder死亡代理
  • Oracle 数据库使用事务确保数据的安全
  • 数据库系统工程师软考备战:第一篇 - 数据库系统基础与体系结构
  • oracle、mysql等基于结果创建数据
  • 达梦数据库-共享内存池
  • 机电设备运维平台_HawkEye智能运维平台_璞华大数据
  • OpenTenBase vs MySQL vs Oracle,企业级应用数据库实盘对比分析
  • NineData发布 Oracle 到 MySQL 双向实时复制,助力去 O 战略与数据回流
  • 数据库小册(1)
  • 新客户 | TDengine 时序数据库赋能开源鸿蒙物联展区实时监控与展示
  • jenkins使用ansible单节点lnmp
  • Docker(③MobaXterm连接WSL Ubuntu)
  • Day35 TCP实时聊天程序实现(多线程)
  • 兴趣电商内容数据洞察未来市场走向研究——基于开源AI智能名片链动2+1模式S2B2C商城小程序的实践
  • 机器学习:后篇
  • 数据结构从青铜到王者第二十二话---反射
  • 研发文档撰写质量参差不齐该怎么办
  • 找活招工系统源码 雇员雇主小程序 后端JAVA前端uniapp
  • Spring WebFlux 流式数据拉取与推送的实现
  • 【算法--链表】25.K个一组翻转链表--通俗讲解
  • 【网络协议系列】CLOSE_WAIT状态解释
  • 前端路由切换不再白屏:React/Vue 实战优化全攻略(含可运行 Demo)
  • Vue 与 React 全面功能对比
  • RabbitMQ模型详解与常见问题
  • 每天学习一点点之湿敏等级以及肖特基二极管