你好Dialog,
我有一个硬件配置,需要在从wither POR或深度睡眠唤醒时设置/高端口引脚。
因为复位总是将GPIO设置为“0”状态,所以有没有办法使用一条汇编指令,它将作为从深度睡眠中唤醒而在引导时执行的第一条指令?
谢谢
raju.
你好rajucoolsuraj,
您能否澄清并为我提供更多的投入,以便您想要完成的内容?如果我理解正确,你想在设备醒来时进入睡眠状态,请将PIN设置为高电平>或者您希望在芯片处于睡眠模式时保持高引脚状态?
谢谢,下午好
睡眠是为了深度睡眠。
休眠时,引脚状态定义为高/低。
从深度睡眠中醒来后,Pin状态应保持不变。
如何达到上述要求?
当做
在进入睡眠状态之前,pin的状态会被保留,但不会保留pin的配置或功能。当设备唤醒时,将调用periph_init()函数,以便在每次唤醒中重新配置管脚,管脚将返回其默认应用程序状态。因此,如果任何GPIO在进入睡眠前处于高位,它将在睡眠期间保持高位,并将在唤醒时由periph_init()函数重新配置。
我特别提到了睡眠模式-深度睡眠。
对于深度睡眠,代码始终在外部中断唤醒时执行HW复位。
我有一个要求 - 继续/恢复从深睡眠时唤醒的代码执行。
我可以知道在深度睡眠模式下这样的要求是否可行吗?
你提到了深度睡眠模式,所以让我问你一些事情,以了解你的要求。你把OTP烧了吗?
我在闪存中有我的fw。(DA14586)。
正常情况下,当设备处于深度睡眠模式时,OTP应该被烧录。但是,通过定义CFG\u DEVELOPMENT\u DEBUG宏da1458x\u config\u basic.h,可以模拟深度睡眠模式和OTP镜像到系统RAM。同样,在进入睡眠状态之前,pin的状态会被保留,但不会保留pin的配置或功能。
我可以知道如何恢复代码执行,同时启用深度睡眠模式以及Flash的代码执行?
如果不可能,那么可行的替代方案是什么?
你能澄清一下你的问题吗?“在启用深度睡眠模式时恢复代码执行”是什么意思?
DA14585/6有3种睡眠模式:
但是,通过定义CFG\u DEVELOPMENT\u DEBUG宏da1458x\u config\u basic.h,可以模拟深度睡眠模式和OTP镜像到系统RAM。
在延长睡眠模式下,DA14585/6可通过两种方式唤醒
选择深度睡眠模式时,可以在1way中唤醒Theda14585 / 6:
谢谢对话,
我想拥有一个Systemram状态保留,以便在需要唤醒时,系统恢复其主循环执行而不是在深睡眠中进行系统复位。
我在闪存中有应用程序代码。因此,基于上述选项,没有OTP副本的扩展睡眠模式是唯一可以在不活动期间节省电量的选项。
是否有任何额外的节能设置可以包括在扩展睡眠模式中而不需要OTP复制配置?
您可以将数据存储到保留RAM中,以便在睡觉时保留它们。请检查一下软件示例:DA14585/586检测复位源示例,演示您如何做到这一点。关于您的最后一个问题,您不需要任何其他额外的配置。
谢谢你的优秀之例,
基于该示例,代码再次启动任何重置条件的原因。(nmi / hardfault / sw);
要求不仅要知道复位的原因,还要保持GPIO的状态与复位前一样。
正如在先前的评论中提到的那样,设备在睡眠前保持引脚的状态,但不是PIN的配置或功能。当设备唤醒时,执行PERIPH_INIT()函数,以便在每个唤醒中重新配置引脚,并且引脚返回其默认应用程序状态。如果要睡觉,如果GPIO很高,它会在睡眠期间保持高,并且将通过PERIPH_INIT()函数唤醒重新配置。您必须在您的应用程序中知道您的PIN的最后状态,以便在唤醒时重新应用该值。
但是,示例代码经历重置,GPIO状态也将被重置为零。
问候
据我所知,你想在睡觉时保持GPIO状态,不是吗?
对,
睡眠模式深入睡眠,外部醒来。
因此,在唤醒时,系统将进行重置,从而将GPIO设置为零(重置状态)。
正如我提到的,睡觉前的pin状态是保留的。所以,如果我理解正确的话,你想在SW重置后保留pin的状态吗?
是的,没错。我想保留一个开关复位后的引脚状态。
你能指出设备是从哪里启动的吗?从系统RAM到SPI Flash?如果它从系统RAM引导,在重置之后,固件将丢失,因此您必须再次下载它,一个可能的解决方案是将管脚的状态存储到保留RAM的未初始化区域,并在配置GPIO时将该值传递到外围。
你好rajucoolsuraj,
您能否澄清并为我提供更多的投入,以便您想要完成的内容?如果我理解正确,你想在设备醒来时进入睡眠状态,请将PIN设置为高电平>或者您希望在芯片处于睡眠模式时保持高引脚状态?
谢谢,下午好
你好Dialog,
睡眠是为了深度睡眠。
休眠时,引脚状态定义为高/低。
从深度睡眠中醒来后,Pin状态应保持不变。
如何达到上述要求?
当做
raju.
你好rajucoolsuraj,
在进入睡眠状态之前,pin的状态会被保留,但不会保留pin的配置或功能。当设备唤醒时,将调用periph_init()函数,以便在每次唤醒中重新配置管脚,管脚将返回其默认应用程序状态。因此,如果任何GPIO在进入睡眠前处于高位,它将在睡眠期间保持高位,并将在唤醒时由periph_init()函数重新配置。
谢谢,下午好
你好Dialog,
我特别提到了睡眠模式-深度睡眠。
对于深度睡眠,代码始终在外部中断唤醒时执行HW复位。
我有一个要求 - 继续/恢复从深睡眠时唤醒的代码执行。
我可以知道在深度睡眠模式下这样的要求是否可行吗?
谢谢
当做
raju.
你好rajucoolsuraj,
你提到了深度睡眠模式,所以让我问你一些事情,以了解你的要求。你把OTP烧了吗?
谢谢,下午好
你好Dialog,
我在闪存中有我的fw。(DA14586)。
谢谢
raju.
你好rajucoolsuraj,
正常情况下,当设备处于深度睡眠模式时,OTP应该被烧录。但是,通过定义CFG\u DEVELOPMENT\u DEBUG宏da1458x\u config\u basic.h,可以模拟深度睡眠模式和OTP镜像到系统RAM。同样,在进入睡眠状态之前,pin的状态会被保留,但不会保留pin的配置或功能。
谢谢,下午好
你好Dialog,
我可以知道如何恢复代码执行,同时启用深度睡眠模式以及Flash的代码执行?
如果不可能,那么可行的替代方案是什么?
谢谢
当做
raju.
你好rajucoolsuraj,
你能澄清一下你的问题吗?“在启用深度睡眠模式时恢复代码执行”是什么意思?
DA14585/6有3种睡眠模式:
但是,通过定义CFG\u DEVELOPMENT\u DEBUG宏da1458x\u config\u basic.h,可以模拟深度睡眠模式和OTP镜像到系统RAM。
在延长睡眠模式下,DA14585/6可通过两种方式唤醒
选择深度睡眠模式时,可以在1way中唤醒Theda14585 / 6:
谢谢,下午好
谢谢对话,
我想拥有一个Systemram状态保留,以便在需要唤醒时,系统恢复其主循环执行而不是在深睡眠中进行系统复位。
我在闪存中有应用程序代码。因此,基于上述选项,没有OTP副本的扩展睡眠模式是唯一可以在不活动期间节省电量的选项。
是否有任何额外的节能设置可以包括在扩展睡眠模式中而不需要OTP复制配置?
谢谢
当做
raju.
你好rajucoolsuraj,
您可以将数据存储到保留RAM中,以便在睡觉时保留它们。请检查一下软件示例:DA14585/586检测复位源示例,演示您如何做到这一点。关于您的最后一个问题,您不需要任何其他额外的配置。
谢谢,下午好
谢谢你的优秀之例,
基于该示例,代码再次启动任何重置条件的原因。(nmi / hardfault / sw);
要求不仅要知道复位的原因,还要保持GPIO的状态与复位前一样。
当做
raju.
你好rajucoolsuraj,
正如在先前的评论中提到的那样,设备在睡眠前保持引脚的状态,但不是PIN的配置或功能。当设备唤醒时,执行PERIPH_INIT()函数,以便在每个唤醒中重新配置引脚,并且引脚返回其默认应用程序状态。如果要睡觉,如果GPIO很高,它会在睡眠期间保持高,并且将通过PERIPH_INIT()函数唤醒重新配置。您必须在您的应用程序中知道您的PIN的最后状态,以便在唤醒时重新应用该值。
谢谢,下午好
但是,示例代码经历重置,GPIO状态也将被重置为零。
谢谢
问候
raju.
你好rajucoolsuraj,
据我所知,你想在睡觉时保持GPIO状态,不是吗?
谢谢,下午好
对,
睡眠模式深入睡眠,外部醒来。
因此,在唤醒时,系统将进行重置,从而将GPIO设置为零(重置状态)。
你好rajucoolsuraj,
正如我提到的,睡觉前的pin状态是保留的。所以,如果我理解正确的话,你想在SW重置后保留pin的状态吗?
谢谢,下午好
是的,没错。我想保留一个开关复位后的引脚状态。
谢谢
raju.
你好rajucoolsuraj,
你能指出设备是从哪里启动的吗?从系统RAM到SPI Flash?如果它从系统RAM引导,在重置之后,固件将丢失,因此您必须再次下载它,一个可能的解决方案是将管脚的状态存储到保留RAM的未初始化区域,并在配置GPIO时将该值传递到外围。
谢谢,下午好