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

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://www.xdnf.cn/news/20207.html

相关文章:

  • 深度学习篇---MNIST:手写数字数据集
  • 基础排序--冒泡--选择--插入
  • 【算法--链表】25.K个一组翻转链表--通俗讲解
  • Linux初始化配置——RHEL7.9、9.3环境部署
  • 【C语言】 第三课 函数与栈帧机制详解
  • RTP打包与解包全解析:从RFC规范到跨平台轻量级RTSP服务和低延迟RTSP播放器实现
  • Deeplizard深度学习课程(七)—— 神经网络实验
  • 飞算JavaAI全面解析:重塑Java开发流程的智能引擎
  • 商城源码后端性能优化:JVM 参数调优与内存泄漏排查实战
  • List<?>和List<Object>区别
  • 第二阶段WinForm-12:UI控件库
  • 力扣516 代码随想录Day16 第一题
  • 【涂鸦T5】6. lvgl显示光感数值
  • 鸿蒙:AppStorageV2状态管理和数据共享
  • Gmail 数据泄露安全警报以及启示
  • 【Linux】线程概念与控制
  • 代码随想录刷题Day49
  • house (ai)
  • 对话Michael Truell:23岁创立Cursor,与Github Copilot竞争
  • 【C++上岸】C++常见面试题目--算法篇(第十九期)
  • 2025年8月文章一览
  • 深度学习:自定义数据集处理、数据增强与最优模型管理
  • 数据旁路(Data Bypassing)是什么?
  • 安装3DS MAX 2026后,无法运行,提示缺少.net core的解决方案
  • 2025年数学建模国赛C题第二版本超详细解题思路
  • Qwen-agent 核心功能分析学习
  • 从零开始学无监督学习:图像混合与标签平滑技术详解,收藏不走丢
  • C++开发中的常用设计模式:深入解析与应用场景
  • javaweb基础第一天总结(HTML-CSS)
  • SpringBoot中 Gzip 压缩的两种开启方式:GeoJSON 瘦身实战