嗨对话框,
我通过更改app_default_sleep_mode = arch_ext_sleep_on来修改ble_barebone应用程序,以在扩展睡眠模式下工作。配置LED指示的GPIO。
我已经保留了一个导致指示设备是否处于活动模式或睡眠模式,如下所示,编辑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_lex_port,gpio_cnxn_led_pin);
Arch_Goto_Sleep(Sleep_Mode);
//等待中断恢复操作
WFI();
//恢复操作
ARCH_RESUME_FROM_SLEEP();
我始终观察LED停留。如何增加睡眠期?
关键词:
设备:
嗨Dhirajp15,
只有在有较越来的BLE活动时,580才会醒来,如果没有BLE事件,它睡眠并在WFI()中等待BLE中断,通过增加广告间隔或连接间隔(在连接情况下)580将睡觉直到它传输/接收的时间。此外,如果您在那里放置额外的代码,并且您看到LED始终打开,大多数可能睡觉,因为大多数可能是user_config.h文件中的app_default_sleep_mode有arch_sleep_off的值,这意味着没有睡眠,尝试将它设置为arch_ext_sleep_on,您应该看到LED闪烁。
谢谢mt_dialog.
谢谢mt_dialog。通过增加广告延迟,我可以看到LED轻弹。但万用表所示的平均电流如下:
没有睡眠模式:4.7ma
扩展睡眠模式:4.34ma
扩展睡眠模式(增加广告延迟)= 4.26mA
具有深度睡眠模式=读数与扩展睡眠模式相同
我在哪里出错?
嗨Dhirajp15,
您是否设置了我以前发布到Arch_ext_sleep_on的变量?默认情况下,示例项目将休眠功能关闭。关于深度睡眠模式,您将看到的当前与延长睡眠中的当前相同,因为深入睡眠,所以在开发模式下,您不会看到当前的任何更改。另请看看我对此线程的答案http://support.dialog-seminiondionder.com/expected-consumption-connected ...。
谢谢mt_dialog.
嗨mt_dialog,
我在我的应用程序中使用DA14583模块,并希望在页面NO上的DA14583的数据表中设置Deep Sleep Configuration.But。15写的是,这个设备无法深入睡眠。为什么这么做?
嗨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.
嗨mt_dialog,我设置了变量arch_ext_sleep_on,仍然不会减少消费。
嗨Dhirajp15,
当您将该变量设置为该值时,580应在广告后自动入睡,现在在您的情况下,我猜您尝试使用keil调试,您不会停止
调试模式使设备不能进一步在代码中进一步,它卡住直到调试器被禁用,以为为什么当您在延长睡眠时看到稍微少的电流。以外
那个,如果设备实际睡眠,您是否有专业套件,以便检查智能片段吗?您还可以进入Default_App_On_db_init_complete()函数并注释出来
Execute_default_operation_void()定义,尝试再次测量并检查功耗(实际上这将禁用广告过程,并且设备将在不做任何事情的情况下睡觉 - 不会宣传)。此外,该设备不会直接陷入睡眠模式,对于前几秒钟,它保持完全有效,然后进入睡眠模式。
谢谢mt_dialog.
谢谢mt_dialog,decetice消耗了更少的电流,它是外部proccessor,它消耗了更多的电流。
好的,现在我想在扩展睡眠模式下使用外部唤醒。
我在ble_app_barebone中完成了以下修改:
//在da1458x_config_advance.h.中
#define cfg_external_wakeup.
//在Arch_Main.c.中
// arch_goto_sleep()内
#if((hyperent_wakeup)&&(!ble_app_present))//外部唤醒,只在外部处理器设计中
ext_wakeup_enable(uart2_rts_port,uart2_rts_pin,1);
// arch_resume_from_sleep内
#if((hyperent_wakeup)&&(!ble_app_present))//外部唤醒,只在外部处理器设计中
ext_wakeup_enable(uart2_rts_port,uart2_rts_pin,1);
//禁用外部唤醒中断
// ext_wakeup_disable();
我观察到的是设备已连接到应用程序,但不接受来自UART(CO处理器)的命令。
当睡眠模式= ARCH_SLEEP_OFF时,UART通信正常工作
我还应该在代码内修改什么?
嗨dhirajp。
请看看AN-B-026这将在通过外部处理器运行并正确唤醒580以便接收数据时,为您提供一个想法,在您应该如何通过UART传输数据。
谢谢mt_dialog.
AN-B-026中提到的所有更改都已完成为我
嗨Dhirajp15,
由于当您醒来时,您可以从UART妥善接收数据,并且在您无法睡觉时会接收数据,意味着在切换GPIO后,您可以从外部处理器的UART中发送数据,但580尚未清醒。如果您检查AN-B-026“使用任何GPIO唤醒580”,它提到,为了通过UART传输数据,流量控制的使用是强制性的,并且您将不得不等到580断言或脱节断言流量控制信号,以便从外部MCU开始发送数据。
谢谢mt_dialog.
嗨mt_dialog,
CO Proccessor仅在CTS变为低时发送数据。并且我观察到的是,当我使用ext_wakeup或ext_wakeup触发设备时,只需设置arch_ext_sllep_on时,当前的消耗增加它会增加它从睡眠中唤醒,但它不接受来自coproccessor的数据。我们需要在醒来后再次初始化外围设备从睡觉?
谢谢你。
嗨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.