嗨对话框,
现在我正在尝试根据基于BLE_APP_ALL_IN_ONE的项目延长睡眠。
我认为唤醒是可以从唤醒别针的变化变化。
我写了一个唤醒启用函数,唤醒wake 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 = null,
.app_before_sleep = null,
.app_validate_sleep = null,
.app_ging_to_sleep = null,
.app_resume_from_sleep = enable_wake_from_sleep,// null,
};
void enable_wake_from_sleep(void)
{
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,wak_pin_bit,wkupct_pin_polarity_high),
1,1);
}
但是唤醒未通过唤醒销的边缘来完成。
原因是什么?我如何解决它?
如果有人知道补救或经验丰富并解决它,请给我你的建议。
谢谢,
Diogenes.
嗨,第欧根尼,
你能解释一下你想完成什么吗?如果我理解正确的话,你想要你想要通过外部中断异步唤醒,比如通过一个按钮?如果您希望这样做,ble_app_all_in_one示例已经包含了这个实现。同样,SDK中还有另外一个示例,ble_app_sleepmode示例。这个例子演示了如何使用睡眠模式API,并在运行时更改睡眠模式。设备通告指定的时间(APP_ADV_DATA_UPDATE_TO),缺省值为10秒。只要设备处于广告状态,它的睡眠模式就被设置为深度睡眠。超过上述超时时间后,如果设备仍未进入连接状态,则停止发布。现在芯片什么也不做,等待外部事件退出休眠状态。你按一个按钮就可以唤醒它。按钮按下设备后,将开始再次通告预定义的时间。在BLE_APP_ALLEEP中实现的唤醒过程的功能也在BLE_APP_ALL_IN_ONE示例中实现。有关此SDK示例的更多信息,请阅读Parkar 5(睡眠模式)和支柱7(一体化)部分UM-B-050:DA1458X软件开发人员指南(SDK5)用户手册从我们的支持页面。
谢谢,PM_DIALOG.
嗨对话框,
感谢您的回复。
我想理论上我理解它是,但我也明白唤醒中断只在几秒钟后发生。
首先,如果唤醒中断通常会发生唤醒中断,请选中“BLE_APP_SLEEPMODE”示例。
我发现唤醒中断只有在重启10秒后才有效。
我还发现下一个唤醒中断只发生在前一个唤醒中断超过10秒之后。
我需要立即使用唤醒中断,甚至重置后,连续在短时间间隔。
如何将最小间隔时间配置得更短?
我无法在示例项目中找到APP_ADV_DATA_UPDATE_TO。
我发现了另一个问题。
我将唤醒引脚从P1.1更改为P0.1并连接其他MCU的输出引脚。
DA复位20秒后,另一单片机升信号到H。
虽然唤醒中断由SW发生,但由信号发生。
我认为H持续时间不足以激活唤醒中断。
如果正确,请告诉我如何配置持续时间?
我正在寻找你的好答案。
谢谢,
Diogenes.
嗨Diogenes,
您可以通过配置放置在user_sleepmode.h头文件中的APP_ADV_DATA_UPDATE_TO定义来更改设备唤醒后的缺省发布时间。缺省值是1000(10秒)。请确保您对user_peri_setup .h / .c文件进行了正确的配置?P1.1 GPIO默认配置为输入拉,因此如果您检查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,是吗?
如果你给我有关它的有用信息,我会如此。
谢谢,
Diogenes.
嗨Diogenes,
对不起,但我有点混淆了你的描述。你能解释一下你想完成什么吗?我无法捕捉你的意思是我最初使用外部信号的GPIO上升int,我试图使用同一引脚的WakeUp int“”。您是否希望使用外部信号唤醒您的设备,而不是使用按钮,因为它在BLE_APP_SLEEPMODE示例中实现了?当设备处于扩展睡眠模式时,您是否尝试捕获GPIO INT?请为我提供有关您实现的更多信息,这将是非常有帮助的。此外,调试程序的非常有用的文档是教程8:调试方法_v1.1从我们的支持页面。在DA14580部分的“教程”和“文档”选项卡中,您可以找到所有可用的文档。如果您认为以上答案有用,请将其中一个标记为已接受。
谢谢,PM_DIALOG.
感谢您的回复,
你想唤醒你的设备与外部信号,而不是一个按钮,因为它是实现在ble_app_sleepmode的例子?
是的,我使用p0.1作为外部唤醒引脚。
>您是否尝试在设备处于扩展睡眠模式时捕获GPIO INT?
是的,右,我需要带有相同P0.1引脚的GPIO INT。
首先,我认为WAKEUP INT和GPIO INT都发生在相同的引脚上,但我发现GPIO INT有时似乎被跳过了。
所以我从GPIO INT移动了必要的处理程序来唤醒int。
我的程序本身工作,因为我移动处理程序内容,但我想问的现象GPIO INT是跳过使用相同的引脚与WAKEUP INT是正常的或不是。
如果你给我有关它的信息,我会很高兴。
谢谢,
Diogenes.
嗨,第欧根尼,
请问您使用的是Pro-DK还是DA14580的定制板?在Pro-DK中,按钮连接到pin1_1。另外,你能解释一下“GPIO INT”和“WAKEUP INT”是什么意思吗?对不起,我不明白你的意思。你想用一个连接到pin1_1的按钮唤醒,并且在同一引脚上你想连接一个外部GPIO中断吗?ble_app_sleepmode示例已经实现了唤醒过程,如果你想将GPIO更改为唤醒,你应该在user_peri_setuph /c中配置它。请尽量清楚地描述你想要完成的目标,以便为你提供正确的指导。
谢谢,PM_DIALOG.
感谢您的回复,
>如果您使用DA14580使用PRO-DK或自定义板,请澄清您是否可以澄清?
我使用的是murata的P2ML3656,在板子上P1.1也连接到SW。
但是我正在使用P0.1而不是P1.1而不是P1.1,并且从连接到P0.1的外部MCU信号产生唤醒int和GPIO int。
总之,我不用船上的SW。
首先,我只实施了GPIO int,然后我试过唤醒int和gpio int是否发生或不使用相同的引脚。
正如我在为Wakeup int和GPIO int设置的同一PIN且结果中写道,并且由于发生了Wakeup Int,可能会跳过GPIO Int。
我想问的是这种行为是否正常。
谢谢,
Diogenes.
嗨Diogenes,
如果您将GPIO配置为唤醒中断,DA14580可以唤醒。您是否在唤醒API中注册了GPIO INT?如果我能够正确理解,这是一种正常行为。我认为这份文件可能会帮助您:
https://support.dialog-seminile.com/system/files/resources/an-b-026_da14580%20external%20wake-up%20mechanisms_v1.0.pdf.
谢谢,PM_DIALOG.