嗨,对话框中,
现在,我试图唤醒扩展睡眠的一个项目基于ble_app_all_in_one。
我认为唤醒是可能的WAKE PIN边缘的变化。
我写了一个唤醒启用函数,唤醒唤醒PIN上升沿像以下,并将其设置为app_resume_from_sleep函数。
Static const struct arch_main_loop_callbacks user_app_main_loop_callbacks = {
.app_on_init = user_app_init,
.app_on_ble_powered = &app_on_ble_powered,
.app_on_system_powered =零,
.app_before_sleep =零,
.app_validate_sleep =零,
.app_going_to_sleep =零,
.app_resume_from_sleep = enable_Wake_from_sleep / /空,
};
空白enable_Wake_from_sleep(空白)
{
app_easy_wakeup_set (app_wakeup_cb);
wkupct_register_callback (enable_Wakeup_cb);
wkupct_enable_irq (WKUPCT_PIN_SELECT (WAKE_PIN_PORT WAKE_PIN_BIT,),
WKUPCT_PIN_POLARITY (WAKE_PIN_PORT WAKE_PIN_BIT WKUPCT_PIN_POLARITY_HIGH),
1);
}
但是WAKE PIN的崛起并不是唤醒的结果。
原因是什么?我该如何解决?
如果有人知道补救办法或者有经验并且解决了,请给我你的建议。
谢谢,
第欧根尼
设备:
嗨,第欧根尼,
你能说明一下你的目标是什么吗?如果我理解正确的话,您希望您希望通过外部中断进行异步唤醒,例如通过一个按钮?如果您想要类似的东西,ble_app_all_in_one示例已经包含了这个实现。此外,SDK中还有另一个示例,ble_app_sleepmode示例。这个例子演示了如何使用休眠模式API并在运行时更改休眠模式。设备发布一个定义的时间(APP_ADV_DATA_UPDATE_TO),默认值是10秒。只要设备处于广告状态,它的睡眠模式就被设置为深度睡眠。超过上述超时时间后,如果设备仍未进入连接状态,则停止发布。现在芯片什么也不做,等待外部事件退出休眠状态。你按一个按钮就可以唤醒它.按下按钮后,设备将开始在预定的时间内再次发布广告。在ble_app_sleep中实现的唤醒过程的功能,也在ble_app_all_in_one示例中实现。为了获得这个SDK示例的进一步信息,请阅读支柱5(睡眠模式)和支柱7(所有在一个)部分UM-B-050: DA1458x软件开发指南(SDK5)用户手册从我们的支持页。
谢谢,PM_Dialog
嗨,对话框中,
谢谢你的回复。
我想理论上我理解,但我也理解唤醒中断只会在几秒钟后发生。
首先,我检查了“ble_app_sleepmode”样本,如果唤醒中断正常发生。
我发现唤醒中断只有在重置后超过10秒后才有效。
我还发现下一个唤醒中断只发生在超过10秒之前的唤醒中断。
我需要在复位后立即使用唤醒中断,并在短时间内连续使用。
那么我怎样才能将最小间隔时间配置得更短呢?
我在示例项目中找不到APP_ADV_DATA_UPDATE_TO。
我发现了另一个问题。
我将WAKE PIN从P1.1改为P0.1,并连接其他MCU的输出引脚。
另一个单片机在DA复位20秒后将信号上升到H。
虽然唤醒中断是通过SW而不是信号发生的。
我认为H持续时间不足以激活唤醒中断。
如果正确,请告诉我如何配置持续时间?
我在寻找你好的答案。
谢谢,
第欧根尼
嗨,第欧根尼,
您可以通过配置放置在user_sleepmode.h头文件中的APP_ADV_DATA_UPDATE_TO定义来更改发布的默认持续时间,因为设备已经唤醒。默认值为1000(10秒)。请确认您在user_peripher_setup .h / .c文件中做了正确的配置?默认情况下,P1.1 GPIO被配置为输入pull,所以如果你在user_sleepmode.c文件中检查app_button_enable()函数中的wkupct_enable_irq(),你会看到极性是低的。你能描述一下你的目标是什么吗?了解您的需求并为您提供适当的支持将非常有帮助。如果你发现上面的任何一个答案有用,请标记其中一个为接受。
谢谢,PM_DIalog
嗨,对话框中,
谢谢你的回复。
APP_ADV_DATA_UPDATE_TO我找到了,问题解决了。
我看到最小间隔是10毫秒。
我最初通过外部信号使用GPIO上升INT,后来我尝试使用相同引脚的WAKEUP INT。
通过执行GPIO INT和WAKEUP INT,我发现有时只有WAKEUP INT发生,而GPIO INT却不起作用。
至少我不能通过调试捕获GPIO INT,这是可能的吗?
如果你能给我一些有用的信息,我会很高兴的。
谢谢,
第欧根尼
嗨,第欧根尼,
对不起,我对你的描述有点不解。你能说明一下你的目标是什么吗?我无法理解你的意思,因为我最初使用外部信号的GPIO上升INT,后来我尝试使用相同引脚的WAKEUP INT。你想用外部信号唤醒你的设备,而不是按下按钮,因为它是在ble_app_sleepmode示例中实现的?当设备处于扩展睡眠模式时,您是否尝试捕获GPIO INT ?请给我提供更多关于你的实施的信息,这将非常有帮助。另外,调试过程的一个非常有用的文档是教程8:调试method_v1.1从我们的支持页面。在DA14580部分的“教程”和“文档”选项卡中,您可以找到所有可用的文档。如果你发现上面的任何一个答案有用,请标记其中一个为接受。
谢谢,PM_Dialog
谢谢您的回复,
>你想用外部信号唤醒你的设备,而不是按下按钮,因为它是在ble_app_sleepmode示例中实现的?
是的,我用P0.1作为外部叫醒针。
>当设备处于扩展睡眠模式时,你是否尝试捕获GPIO INT ?
是的,是的,我需要GPIO INT与相同的P0.1引脚。
首先,我认为WAKEUP INT和GPIO INT发生在同一个引脚,但我发现GPIO INT似乎有时被跳过。
因此,我将必要的处理程序从GPIO INT移动到WAKEUP INT。
我的程序本身的工作,因为我移动了处理程序的内容,但我想问的现象GPIO INT被跳过使用相同的引脚与WAKEUP INT是否正常。
如果你能给我提供相关的信息,我会很高兴的。
谢谢,
第欧根尼
嗨,第欧根尼,
请问您使用的是Pro-DK还是DA14580的定制板?在Pro-DK中,按钮接pin1_1。另外,你能解释一下“GPIO INT”和“WAKEUP INT”是什么意思吗?对不起,我不明白你的意思。你想用一个连接到pin1_1的按钮唤醒,并且在同一个引脚上连接一个外部GPIO中断吗?ble_app_sleepmode示例已经实现了唤醒过程,如果您想将GPIO更改为唤醒,您应该在user_peripher_setuph /c中配置它。为了给你提供正确的指导方针,请尽量清晰地描述你想要完成的目标。
谢谢,PM_Dialog
谢谢您的回复,
>请问您使用的是Pro-DK还是DA14580的定制板?
我用的是村田的P2ML3656,在板子上P1.1也连接到SW。
但是我使用的是P0.1而不是P1.1, WAKEUP INT和GPIO INT是由连接到P0.1的外部MCU信号生成的。
不管怎样,我不用船上的SW。
首先,我只实现了GPIO INT,然后我尝试如果两个唤醒INT和GPIO INT发生或不使用相同的引脚。
正如我之前写的,我为WAKEUP INT和GPIO INT设置了相同的引脚,因此,GPIO INT有时可能会跳过,尽管WAKEUP INT发生了。
我想问的是这种行为是否正常。
谢谢,
第欧根尼
嗨,第欧根尼,
如果将GPIO配置为唤醒中断,DA14580可以实现唤醒。你把GPIO INT注册到唤醒api了吗?如果我能正确理解的话,这是一种正常的行为。我想这份文件可能会对你有所帮助:
https://support.dialog-semiconductor.com/system/files/resources/AN-B-026_DA14580%20External%20wake-up%20mechanisms_v1.0.pdf
谢谢,PM_Dialog