嗨,对话框中,
通过改变app_default_sleep_mode=ARCH_EXT_SLEEP_ON以扩展睡眠模式工作,我修改了ble_barebone应用程序。
我保持了一个LED指示设备是在活动模式或睡眠模式编辑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总是亮着。如何增加睡眠时间?
关键词:
设备:

嗨dhirajp15,
580年醒来只有一个upcomming祝福活动,如果没有祝福事件它睡觉和在注射用水()等待祝福中断,通过增加广告间隔或间隔的连接(连接)580是睡觉,直到传输/接收的时间。如果你放置额外的代码,你总是看到领导,很可能你不睡眠可能因为大多数app_default_sleep_mode user_config.h文件ARCH_SLEEP_OFF的价值,这就意味着没有睡眠,尽量设置ARCH_EXT_SLEEP_ON,您应该看到LED闪烁。
由于MT_dialog
谢谢MT_dialog。我可以通过增加广告延迟看到led闪烁。但万用表显示的平均电流如下:
无睡眠模式:4.7mA
带延长睡眠模式:4.34mA
延长睡眠模式(增加广告延时)=4.26mA
深度睡眠模式=阅读与延长睡眠模式相同
我哪里做错了?
嗨dhirajp15,
你是否设置了我在我之前的帖子中提到的变量ARCH_EXT_SLEEP_ON ?示例项目在默认情况下关闭了睡眠特性。关于深度睡眠模式,您将看到的电流与长时间睡眠相同,因为深度睡眠需要燃烧OTP,在开发模式中,您将看不到当前的任何变化。也请看看我在这个帖子上的回答http://support.dialog-semiconductor.com/expected-consumption-connected-s..。.
由于MT_dialog
嗨MT_dialog,
我在我的应用程序中使用DA14583模块,想要设置深度睡眠配置。但在DA14583的数据表第1页。15 . it is written that this device can not go to deep sleep.据说这个装置不能进入深度睡眠。为什么会这样?
嗨dhirajp15,
请不要在一个不相干的帖子上发布不同的问题,特别是在帖子之间,因为它很难跟踪,请创建一个新的帖子。
关于你的问题,583不支持深度睡眠,因为为了使用深度睡眠,你将不得不使用OTP(在深度睡眠中580将在每个连接间隔中醒来,并将OTP内容复制到SYSRAM,因为SYSRAM是关闭的),583中的OTP已经被次级引导加载程序烧掉了(或者你可以烧掉高级引导加载程序以获得额外的功能)。OTP的二级引导加载程序将打开SPI, 583将从SPI引导。该过程耗时耗力,因此在每个连接间隔中,唤醒、复制过程和从SPI启动会抵消深度睡眠的好处。
由于MT_dialog
Hi MT_Dialog,我已经设置了变量ARCH_EXT_SLEEP_ON,仍然消耗不减少。
嗨dhirajp15,
当您将该变量设置为该值时,580应该在广告后自动进入睡眠,现在在您的情况下,我猜您尝试使用keil调试,您没有停止
调试模式,所以设备不能在代码中走得更远,它卡住了,直到调试器被禁用,这就是为什么你在长时间睡眠时看到的电流略有减少。除了
那就是,你有一个专业的工具包来检查智能片段,如果设备真的休眠?也可以进入default_app_on_db_init_complete()函数并注释掉
EXECUTE_DEFAULT_OPERATION_VOID()定义,尝试再次测量并检查功耗(实际上这将禁用发布过程,设备将在不做任何事情的情况下进入睡眠状态——将不发布)。此外,该设备不会直接进入睡眠模式,在最初的几秒钟,它保持完全活跃,然后进入睡眠模式。
由于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通信工作正常
我还应该在代码中修改什么?
嗨dhirajp。
请看一下an - b -026,这将给你一个关于如何通过UART传输数据的想法,当通过外部处理器操作时,并正确唤醒580以接收数据。
由于MT_dialog
所有在AN-B-026中提到的改变我已经完成了
嗨dhirajp15,
因为当你醒来时,你可以正确地从UART接收数据,而当你睡觉时,你不能,这意味着在你切换gpio后,你可以立即从你的外部处理器的UART发送数据,但是580还没有醒来。如果你检查一个- b - 026在“580年使用任何gpio醒来”提到,为了在UART传输数据流控制的使用是强制性的,你将不得不等到580年断言或de-asserts流控制信号以开始从外部单片机发送数据。
由于MT_dialog
嗨MT_dialog,
协处理器只有在CTS变低时才发送数据。我所观察到的是,当我触发设备使用EXT_WAKEUP或不使用EXT_WAKEUP只是设置ARCH_EXT_SLLEP_ON当前消耗增加,这意味着它从睡眠中醒来,但它不接受来自协处理器的数据。我们是否需要在从睡眠中醒来后再次初始化外设?
谢谢你!
嗨dhirajp15,
外围设备初始化,当580年醒来的LP处理程序和SLP gtl或人机交互界面初始化设置流量控制,所以没有必要再次初始化设备,你看到一些当前消费如果您定义外部醒来,或者你不,也许这意味着您的引脚配置有问题。如果没有外部唤醒定义,就没有唤醒定时器的设置,因此就没有唤醒,你看到的电流可以是任何东西,可能是泄漏或其他东西,而不是580唤醒。如果您有一个开发专业工具包,您可以使用智能代码片段来检查580是否被唤醒,方法是在外围设备初始化之后,在LP函数之后放置一个arch_set_pxact_gpio()。
我还假设您对完全嵌入式设计感兴趣(意味着在580中没有应用程序代码),对吗?通过GTL和580通信?我只是注意到在上面的修改在文章中,您已经宣布销应UART2_RTS醒来,醒来的处理程序需要放置一个销配置为输入,这样当你切换单片机的RTS CTS的580(即设置为唤醒销)580年将开始醒来的过程,当唤醒程序完成时,单片机的580 / CTS的RTS会变低,也就是说,你可以开始发送数据。我也不明白为什么在你从睡眠中恢复时启用唤醒中断。
由于MT_dialog