当 i.mxrt1170进入 snvs模式,所有的电源域除了 snvs域以外都会关闭,功耗最低达到ua级,这意味着 rom将会在唤醒后运行。rom会使用spi模式读命令,octal flash会在 ocr(octal读)模式。在进入 snvs模式前复位 octal flash芯片,或者将设置 rt1170进入snvs模式的代码放在ram中运行,使用 por引脚作为复位信号复位 octal flash,使用boot rom 去复位 octal flash。
wakeup引脚默认内部是输入上拉的,大约在 35k左右。
唤醒引脚是一个 gpio,由 snvs 电源域供电配置为唤醒源。唤醒引脚会将 pmic_on_req为高电平,请求主soc上电以退出snvs模式。
请求主soc电源状态改变的硬件on/off按钮输入信号。在off模式下与gnd的短暂连接会导致内部电源管理状态机将状态更改为on。在on模式下,与gnd短暂连接会产生中断(与gnd大约5秒或更长时间)会导致强制off。
唤醒引脚会将 pmic_on_req 设置为高,而不是翻转。
此外除了 gpio唤醒外,也可以通过内部 rtc唤醒,相关参考代码如下。
#include fsl_device_registers.h
#include fsl_debug_console.h
#include pin_mux.h
#include clock_config.h
#include board.h
#include fsl_snvs_hp.h
void gpc_enablewakeupsource(uint32_t irq)
{
gpc_cm_enableirqwakeup(gpc_cpu_mode_ctrl_0, irq, true);
}
void gpc_configure_lprtc_wakeup(uint32_t time_length){
snvs->lpcr &= ~snvs_lpcr_srtc_env_mask;
while ((snvs->lpcr & snvs_lpcr_srtc_env_mask))
{ }
/* 禁止 srtc 告警中断 */
snvs->lpcr &= ~snvs_lpcr_lpta_en_mask;
while ((snvs->lpcr & snvs_lpcr_lpta_en_mask))
{ }
snvs->lpsrtcmr = 0x00;
snvs->lpsrtclr = 0x00;
snvs->lptar = time_length;
enableirq(snvs_hp_non_tz_irqn);
snvs->lpcr |= snvs_lpcr_srtc_env_mask | snvs_lpcr_lpta_en_mask;
while (!(snvs->lpcr & snvs_lpcr_lpta_en_mask))
{ } /* 使能 gpc 中断*/
gpc_enablewakeupsource(snvs_hp_non_tz_irqn);
}
void snvs_hp_non_tz_irqhandler(void)
{
// if (snvs_hp_rtc_getstatusflags(snvs) & ksnvs_rtc_alarminterruptflag)
// {
// snvs_hp_rtc_clearstatusflags(snvs, ksnvs_rtc_alarminterruptflag);
// }
//
// snvs_hp_rtc_getenabledinterrupts(snvs);
//snvs->lpsr &= ~(1lpcr |= snvs_lpcr_top_mask;
while(1);
}
snvs唤醒源可以是:gpio唤醒引脚;rtc唤醒;por。通常,使用src->srsr[ipp_reset_b]来检测por复位。但测试后,即使使用wakeup引脚退出snvs模式,src->srsr[ipp_reset_b]仍为1,与退出snvs方式的按键复位相同。那么,在退出snvs模式后,有其他方法可以检测细节唤醒源吗?主要需要知道从snvs低功耗模式唤醒,而不仅仅是从电源por唤醒。
从soc的角度来看,por或snvs唤醒复位相同。因此,无论por或使用wakeup引脚退出snvs模式,src->srsr[ipp_reset_b]始终为1。一种可以知道从snvs或por唤醒的解决方案是使用snvs_lp gpr寄存器作为标志。例如:
1.将1写入lpgpr0;2.soc进入snvs低功耗模式;3.当soc启动时,读取lpgpr0。4.如果lpgpr0=0,则为por。如果lpgpr0=1,则从snvs低功耗模式唤醒。
操作方法如下:通过snvs lp控制寄存器中的gpr_z_dis位禁用gpr归零。使用snvs->lpcr |= 1<1.5v)并立即启动(这可能发生在工业现场)。
解答:上电复位,在任何条件下,都需要确保 dcdc_pswitch 引脚在上电前低于 0.5 v。建议使用rc延迟电路来提供dcdc_in 稳定和dcdc_pswitch之间的延迟,总 rc延迟应为5-40毫秒。
•dcdc_in必须在0.3 x rc时间范围内达到最低3.0 v。
•从dcdc_in稳定在3.0 v (最小电压)到dcdc_pswitch达到0.5 x dcdc_in(1.5 v)的延迟必须至少为1 ms。dcdc_pswitch延迟超过1ms以打开内部dcdc。
•其他电源域的加电转换速率规格为360v/s–36kv/s。
谈未来几年我国在芯片领域的布局
数字资产全球大盘交易外盘开发公司,币基金会员管理系统开发
城市停车不用愁!阿里云智能秒停方案隆重发布!
电机起动电流到底有多大?
威联通推出入门级机架式TS-x32XU NAS 系列 针对中小企业
MIMXRT1172 SNVS模式Wakeup唤醒
连网车辆我们应该怎样来监管
太阳能电池报价持平 市场观望气氛浓
全球工业机器人巨头数据大揭秘
直线电机模组在喷涂设备中的应用
壹沓科技完成B轮融资,近2亿资金将用于数字员工超自动化产品升级
python正则表达式字符集
大联大世平集团联合中山远大推出基于NXP等众多国际大厂技术和产品的电动汽车交流电充电桩解决方案
9亿像素全景,暗光拍摄清晰呈现,vivo X50 Pro+还有新惊喜
高铁烟雾报警器原理
重新振作 这次诺基亚8真的能王者归来吗?真的携骁龙835?
程序员不经意的 9 个不良编程习惯介绍
音圈电机在人脸识别系统又立一功
易控智驾纯电矿卡批量交付邹城宏河百利矿区
iPhone8什么时候上市:iPhone8噱头足!Lightning接口仍会用,十大曝光是真是假?