嗨Dialog,
现在我正试图通过一个基于ble_app_all_in_one的项目从长时间睡眠中醒来。
我认为唤醒是可能的,因为唤醒销边缘的变化。
我写了一个唤醒启用功能,通过以下方式唤醒唤醒引脚上升沿,并将其设置为app_resume_from_sleep函数。
静态const struct arch_main_loop_callbacks user_app_main_loop_callbacks={
.app_on_init=用户_app_init,
.app_on_ble_powered=&app_on_ble_powered,
.app_on_system_powered=NULL,
.app_before_sleep=NULL,
.app_validate_sleep=NULL,
.app_going_to_sleep=NULL,
.app_resume_from_sleep=enable_Wake_from_sleep,//NULL,
};
void从睡眠中唤醒(void)
{
app_easy_wakeup_set(app_wakeup_cb);
wkupct_register_callback(enable_wakeup_cb);
wkupct_启用_irq(wkupct_引脚_选择(唤醒引脚_端口、唤醒引脚_位),
WKUPCT引脚极性(唤醒引脚端口、唤醒引脚位、WKUPCT引脚极性高),
1, 1);
}
但唤醒并不是通过唤醒针的上升边缘完成的。
原因是什么,我怎么能解决它?
如果有人知道治疗方法或有经验并解决了它,请给我你的建议。
谢谢,
提奥奇尼斯
设备:
嗨Diogenes,
你能澄清你想要完成的事情吗?如果我理解正确,你希望你想通过外部中断异步唤醒,例如通过按钮?如果您想要这样的东西,则BLE_APP_ALL_IN_ONE示例已经包含此实现。此外,SDK中还有另一个示例,BLE_APP_SLEEPMODE示例。此示例演示了如何使用睡眠模式API并在运行时更改睡眠模式。该设备广告已定义的时间量(app_adv_data_update_to),默认值为10 s。只要设备处于广告状态,睡眠模式就会设置为深睡眠。在上述超时到期后,如果设备未进入连接状态,则会停止广告。现在芯片没有任何作用,并等待外部事件退出睡眠状态。你可以按一个按钮唤醒它.按下按钮后,设备将在预定义的时间内再次开始播发。在ble_app_sleep中实现的唤醒程序的功能在ble_app_all_中也实现了一个示例。有关此SDK示例的更多信息,请阅读UM-B-050:DA1458x软件开发人员指南(SDK5)来自我们的支持页面的用户手册。
谢谢,下午好
嗨Dialog,
感谢你的回复。
我想我从理论上理解这一点,但我也理解唤醒中断只在几秒钟后发生。
首先,我通过“ble_app_sleepmode”样本检查了唤醒中断是否正常发生。
我发现唤醒中断距离重置超过10秒后才有效。
我还发现下一个唤醒中断才会在以前唤醒中断超过10秒后发生。
即使在短时间内重置后立即使用唤醒中断,并且在短时间内连续使用唤醒中断。
那么我如何更短的时间间隔时间配置最小间隔时间?
我无法在示例项目中找到app_add_data_update_to。
我发现了另一个问题。
我换了P1的尾针。1~P0.05。1并连接其他MCU的输出引脚。
在DA重置后20秒后,其他MCU上升到H的信号。
虽然SW但通过信号发生唤醒中断。
我认为H持续时间不足以激活唤醒中断。
如果是对的,请告诉我如何配置持续时间?
我在寻找你的好答案。
谢谢,
提奥奇尼斯
嗨,提奥奇尼斯,
您可以更改广告的默认持续时间,因为设备唤醒,通过配置App_add_data_update_to定义,该定义放入User_sleepmode.h标题文件。默认值为1000(10秒)。您能否请确保您对user_periph_setup.h / .c文件执行了正确的配置?P1.1 GPIO是默认配置为输入拉动,因此如果在user_sleepmode.c文件中从app_button_enable()函数中检查wkupct_enable_irq(),则会看到极性低电平。您能否描述你想要完成的事情?了解您的要求并为您提供适当的支持,这将是非常有帮助的。如果您发现任何上述答案有用,请将其中一个标记为已接受。
谢谢,下午好
嗨Dialog,
感谢你的回复。
至于APP_ADV_DATA_UPDATE_TO,我找到了,问题就解决了。
我看到最小间隔是10秒。
我最初使用GPIO通过外部信号提升INT,后来我尝试使用相同引脚的WAKEUP INT。
通过执行GPIO int和Wakeup int,我发现有时只有唤醒int发生,而GPIO INT虽然不起作用。
至少我无法通过调试捕获GPIO INT,这可能吗?
如果你能给我一些有用的信息,我将不胜感激。
谢谢,
提奥奇尼斯
嗨,提奥奇尼斯,
对不起,我对你的描述有点困惑。你能澄清一下你想要完成什么吗?我无法理解你的意思,我最初使用GPIO通过外部信号提升INT,后来我尝试使用相同管脚“”的唤醒INT。你想用外部信号唤醒你的设备,而不是像ble_app_sleepmode示例中那样用按钮唤醒设备吗?当设备处于延长睡眠模式时,您是否尝试捕捉GPIO INT?请提供更多关于你的实施的信息,这将非常有帮助。此外,调试过程的一个非常有用的文档是教程8:调试方法。1.从我们的支持页面。在DA14580部分的“教程”和“文档”选项卡中,您可以找到所有可用文档。如果您发现任何上述答案有用,请将其中一个标记为已接受。
谢谢,下午好
谢谢你的回复,
>您是否希望使用外部信号唤醒您的设备,而不是按按钮,因为它在BLE_APP_SLEEPMODE示例中实现了?
是的,我用P0。1作为外部唤醒销。
>当设备处于延长睡眠模式时,您是否尝试捕捉GPIO INT?
是的,对,我需要相同P0的GPIO INT。1针。
首先,我认为唤醒int和gpio int发生在相同的引脚,但我发现GPIO int似乎有时跳过。
所以我把必要的处理器从GPIO INT转移到WAKEUP INT。
我的程序本身就像我想要处理程序内容一样,但是我想询问使用同一引脚是否使用Wakeup Int跳过现象GPIO Int是正常的。
如果你能告诉我这方面的情况,我会很高兴的。
谢谢,
提奥奇尼斯
嗨Diogenes,
如果您使用DA14580使用PRO-DK或自定义板,请澄清您是否可以澄清?在Pro-DK中,按钮连接到PIN1_1。此外,您能解释一下你的意思是“GPIO int”和“唤醒int”。对不起,但我无法理解你的意思。您想用连接到PIN1_1的按钮醒来,并在同一引脚中,您想要连接外部GPIO中断?BLE_APP_SLEEPMODE示例已经实现了唤醒过程,如果要更改GPIO唤醒,则应在USER_PERIPH_SETUPH / C中配置它。请尝试清楚地描述您试图完成的内容,以便为您提供正确的指导方针。
谢谢,下午好
感谢你的回复,
>请您澄清一下,您使用的是Pro DK还是DA14580的定制板?
我正在使用Murata的P2ML3656,电路板P1.1也连接到SW。
但我用的是P0。1而不是P1。1和WAKEUP INT和GPIO INT由连接到P0的外部MCU信号生成。1.
无论如何,我不使用船上的sw。
首先,我只实现了GPIO INT,然后我尝试了WAKEUP INT和GPIO INT是否同时出现,或者是否使用了相同的pin。
正如我之前写的那样,我为WAKEUP INT和GPIO INT设置了相同的pin,因此,虽然发生了WAKEUP INT,但有时可能会跳过GPIO INT。
我想问一下行为是否正常。
谢谢,
提奥奇尼斯
嗨,提奥奇尼斯,
如果将GPIO配置为唤醒中断,DA14580可以唤醒。你把GPIO INT注册到唤醒API了吗?如果我能正确理解,这是正常的行为。我认为这份文件可能会帮助你:
https://support.dialog-semiconductor.com/system/files/resources/AN-B-026_DA14580%20External%20wake-上升了%20个机械装置。0.pdf
谢谢,下午好