如何让设备停留在扩展睡眠模式中较长的时间?

14个帖子/ 0个新
最后一篇
dhirajp15
离线
最后一次露面:2年2个月前
加入:2016-06-08 15:26
如何让设备停留在扩展睡眠模式中较长的时间?

嗨对话框,
通过改变app_default_sleep_mode=ARCH_EXT_SLEEP_ON以扩展睡眠模式工作,我修改了ble_barebone应用程序。
我已经保留了一个导致指示设备是否处于活动模式或睡眠模式,如下所示,编辑ARCH_MAIN.c.

sleep_mode = rwip_power_down ();
gpio_setactive(gpio_cnxn_led_port,gpio_cnxn_led_pin);
If (sleep_mode == mode_ext_sleep) || (sleep_mode == mode_deep_sleep);
//关掉收音机和任何允许的东西
GPIO_SetInactive (GPIO_CNXN_LED_PORT GPIO_CNXN_LED_PIN);
Arch_Goto_Sleep(Sleep_Mode);

//等待中断恢复操作
注射用水();
//恢复操作
arch_resume_from_sleep ();
我始终观察LED停留。如何增加睡眠期?

关键词:
设备:
mt_dialog.
离线
最后一次露面:两个月三个星期前
职员
加入:2015-06-08 34
嗨Dhirajp15,

嗨Dhirajp15,

580年醒来只有一个upcomming祝福活动,如果没有祝福事件它睡觉和在注射用水()等待祝福中断,通过增加广告间隔或间隔的连接(连接)580是睡觉,直到传输/接收的时间。如果你放置额外的代码,你总是看到领导,很可能你不睡眠可能因为大多数app_default_sleep_mode user_config.h文件ARCH_SLEEP_OFF的价值,这就意味着没有睡眠,尽量设置ARCH_EXT_SLEEP_ON,您应该看到LED闪烁。

谢谢mt_dialog.

dhirajp15
离线
最后一次露面:2年2个月前
加入:2016-06-08 15:26
谢谢MT_dialog。我能看到

谢谢MT_dialog。通过增加广告延迟,我可以看到LED轻弹。但万用表所示的平均电流如下:
没有睡眠模式:4.7ma
扩展睡眠模式:4.34ma
扩展睡眠模式(增加广告延迟)= 4.26mA
具有深度睡眠模式=读数与扩展睡眠模式相同
我在哪里出错?

mt_dialog.
离线
最后一次露面:两个月三个星期前
职员
加入:2015-06-08 34
嗨Dhirajp15,

嗨Dhirajp15,

你是否设置了我在我之前的帖子中提到的变量ARCH_EXT_SLEEP_ON ?示例项目在默认情况下关闭了睡眠特性。关于深度睡眠模式,您将看到的电流与长时间睡眠相同,因为深度睡眠需要燃烧OTP,在开发模式中,您将看不到当前的任何变化。也请看看我在这个帖子上的回答http://support.dialog-seminiondionder.com/expected-consumption-connected ...

谢谢mt_dialog.

dhirajp15
离线
最后一次露面:2年2个月前
加入:2016-06-08 15:26
嗨MT_dialog,

嗨MT_dialog,
我在我的应用程序中使用DA14583模块,并希望在页面NO上的DA14583的数据表中设置Deep Sleep Configuration.But。15写的是,这个设备无法深入睡眠。为什么这么做?

mt_dialog.
离线
最后一次露面:两个月三个星期前
职员
加入:2015-06-08 34
嗨Dhirajp15,

嗨Dhirajp15,

请不要在一个不相干的帖子上发布不同的问题,特别是在帖子之间,因为它很难跟踪,请创建一个新的帖子。

Regarding your question the 583 doesn’t support deep sleep because in order to use deep sleep you will have to use the OTP (in deep sleep the 580 will wake up in every connection interval and copy the OTP content to the SYSRAM, since the SYSRAM is switched off), the OTP in the 583 is already burned with the secondary bootloader (or you can burn the advanced bootloader for additional functionality). The secondary bootloader to the OTP will switch on the SPI and the 583 will boot from the SPI.The process is time and energy consuming so the benefit of deep sleep is eliminated by the wakeup, the copying procedure and the booting from the SPI in every connection interval.

谢谢mt_dialog.

dhirajp15
离线
最后一次露面:2年2个月前
加入:2016-06-08 15:26
嗨mt_dialog,我已经设置了

Hi MT_Dialog,我已经设置了变量ARCH_EXT_SLEEP_ON,仍然消耗不减少。

mt_dialog.
离线
最后一次露面:两个月三个星期前
职员
加入:2015-06-08 34
嗨Dhirajp15,

嗨Dhirajp15,

当您将该变量设置为该值时,580应在广告后自动入睡,现在在您的情况下,我猜您尝试使用keil调试,您不会停止
调试模式使设备不能进一步在代码中进一步,它卡住直到调试器被禁用,以为为什么当您在延长睡眠时看到稍微少的电流。以外
那就是,你有一个专业的工具包来检查智能片段,如果设备真的休眠?也可以进入default_app_on_db_init_complete()函数并注释掉
EXECUTE_DEFAULT_OPERATION_VOID()定义,尝试再次测量并检查功耗(实际上这将禁用发布过程,设备将在不做任何事情的情况下进入睡眠状态——将不发布)。此外,该设备不会直接进入睡眠模式,在最初的几秒钟,它保持完全活跃,然后进入睡眠模式。

谢谢mt_dialog.

dhirajp15
离线
最后一次露面:2年2个月前
加入:2016-06-08 15:26
谢谢MT_Dialog

感谢MT_Dialog,设备消耗更少的电流,它是外部处理器消耗更多的电流。

现在我想在延长睡眠模式下使用外部唤醒。
我在ble_app_barebone中做了以下修改:
/ /在da1458x_config_advance.h
#定义CFG_EXTERNAL_WAKEUP
//在Arch_Main.c.中
// arch_goto_sleep()内
#如果((EXTERNAL_WAKEUP) && (!BLE_APP_PRESENT))是外部唤醒,只在外部处理器设计
ext_wakeup_enable (UART2_RTS_PORT UART2_RTS_PIN 1);
// arch_resume_from_sleep内
#如果((EXTERNAL_WAKEUP) && (!BLE_APP_PRESENT))是外部唤醒,只在外部处理器设计
ext_wakeup_enable (UART2_RTS_PORT UART2_RTS_PIN 1);
//关闭外部唤醒中断
// ext_wakeup_disable();
我观察到的是设备连接到应用程序,但不接受来自UART(协处理器)的命令。
当睡眠模式=ARCH_SLEEP_OFF时,UART通信工作正常
我还应该在代码内修改什么?

mt_dialog.
离线
最后一次露面:两个月三个星期前
职员
加入:2015-06-08 34
嗨dhirajp。

嗨dhirajp。

请看一下an - b -026,这将给你一个关于如何通过UART传输数据的想法,当通过外部处理器操作时,并正确唤醒580以接收数据。

谢谢mt_dialog.

dhirajp15
离线
最后一次露面:2年2个月前
加入:2016-06-08 15:26
中提到的所有变化

所有在AN-B-026中提到的改变我已经完成了

mt_dialog.
离线
最后一次露面:两个月三个星期前
职员
加入:2015-06-08 34
嗨Dhirajp15,

嗨Dhirajp15,

因为当你醒来时,你可以正确地从UART接收数据,而当你睡觉时,你不能,这意味着在你切换gpio后,你可以立即从你的外部处理器的UART发送数据,但是580还没有醒来。如果你检查一个- b - 026在“580年使用任何gpio醒来”提到,为了在UART传输数据流控制的使用是强制性的,你将不得不等到580年断言或de-asserts流控制信号以开始从外部单片机发送数据。

谢谢mt_dialog.

dhirajp15
离线
最后一次露面:2年2个月前
加入:2016-06-08 15:26
嗨mt_dialog,

嗨mt_dialog,
CO Proccessor仅在CTS变为低时发送数据。并且我观察到的是,当我使用ext_wakeup或ext_wakeup触发设备时,只需设置arch_ext_sllep_on时,当前的消耗增加它会增加它从睡眠中唤醒,但它不接受来自coproccessor的数据。我们需要在醒来后再次初始化外围设备从睡觉?
谢谢你。

mt_dialog.
离线
最后一次露面:两个月三个星期前
职员
加入:2015-06-08 34
嗨Dhirajp15,

嗨Dhirajp15,

当580从LP处理程序中唤醒580并在SLP中唤醒GTL或HCI接口时初始化外设才能初始化,以便设置流量控制,因此不需要再次初始化外围设备,因此您看到的事实如果您定义外部唤醒,或者您没有,则可能意味着您的引脚配置有问题。如果没有外部唤醒定义,没有唤醒定时器的设置,因此没有唤醒,你看到的目前可以是任何东西,也许泄漏或其他东西比580醒来。如果您有Dev Pro套件,则可以使用Smart Spippets来检查580是否通过在外围设备初始化之后置于LP函数后的ARCH_SET_PXACT_GPIO()来检查580。

我也假设您对完全嵌入的设计感兴趣(意味着580中没有应用程序代码)是对的吗?并通过580沟通GTL?我刚刚注意到在上面的POST修改中,你声明了唤醒引脚应该是UART2_RTS,在唤醒处理程序中,您需要将配置作为输入的引脚放置,使得当您切换MCU的RTS 580的CTS时(将设置为唤醒引脚)580将启动醒来的过程,当醒来的过程完成时,MCU的580 / CTS的RTS将会较低,您可以启动发送数据。此外,当您从睡眠中恢复时,我也没有看到启用中断的原因。

谢谢mt_dialog.