嗨,对话,
我通过更改app_default_sleep_mode = arch_ext_sleep_on来修改ble_barebone应用程序,以在扩展睡眠模式下工作。配置LED指示的GPIO。
我保留了一个LED指示灯,指示设备是处于活动模式还是睡眠模式编辑arch\u main.c,如下所示:
sleep_mode = rwip_power_down();
GPIO\ U设置激活(GPIO\ U CNXN\ U LED\ U端口、GPIO\ U CNXN\ U LED\ U引脚);
if((sleep_mode == mode_ext_sleep)||(sleep_mode == mode_deep_sleep)){
//关闭收音机,无论允许的信息
gpio_setinactive(gpio_cnxn_lex_port,gpio_cnxn_led_pin);
进入睡眠(睡眠模式);
//等待中断恢复操作
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闪烁。
谢谢你的对话
谢谢你的对话。我可以通过增加广告延迟看到led闪烁。但万用表显示的平均电流如下:
无睡眠模式:4.7mA
延长睡眠模式:4.34mA
延长睡眠模式(增加广告延迟)=4.26mA
深度睡眠模式=读数与延长睡眠模式相同
我哪里出错了?
你好,dhirajp15,
您是否设置了我以前发布到Arch_ext_sleep_on的变量?默认情况下,示例项目将休眠功能关闭。关于深度睡眠模式,您将看到的当前与延长睡眠中的当前相同,因为深入睡眠,所以在开发模式下,您不会看到当前的任何更改。另请看看我对此线程的答案http://support.dialog-semiconductor.com/expected-consumption-connected-s....
谢谢你的对话
嗨mt_dialog,
我在应用程序中使用DA14583模块,想设置深度睡眠配置,但在第15页的DA14583数据表中写着该设备不能进入深度睡眠。为什么会这样?
你好,dhirajp15,
请不要在不相关的线程上发布不同的问题,特别是在岗位之间难以跟踪,请创建一个新的线程。
关于您的问题,583不支持深度睡眠,因为为了使用深度睡眠,您必须使用OTP(在深度睡眠中,580将在每个连接间隔中唤醒,并将OTP内容复制到SYSRAM,因为SYSRAM已关闭),583中的OTP已经用辅助引导加载器烧录了(或者您可以烧录高级引导加载器以获得附加功能)。OTP的辅助引导加载程序将打开SPI,583将从SPI引导。该过程耗时耗力,因此通过唤醒、复制过程和在每个连接间隔从SPI引导消除了深度睡眠的好处。
谢谢你的对话
嗨mt_dialog,我设置了变量arch_ext_sleep_on,仍然不会减少消费。
你好,dhirajp15,
当你将这个变量设置为这个值时,580应该在广告发布后自动进入休眠状态,现在在你的例子中,我猜你尝试使用keil进行调试,但是你没有停止这个过程
调试模式使设备无法在代码中进一步运行,它会一直阻塞,直到调试器被禁用,这就是为什么在长时间睡眠时看到的电流会稍微减少。除
那个,如果设备实际睡眠,您是否有专业套件,以便检查智能片段吗?您还可以进入Default_App_On_db_init_complete()函数并注释出来
Execute_default_operation_void()定义,尝试再次测量并检查功耗(实际上这将禁用广告过程,并且设备将在不做任何事情的情况下睡觉 - 不会宣传)。此外,该设备不会直接陷入睡眠模式,对于前几秒钟,它保持完全有效,然后进入睡眠模式。
谢谢你的对话
谢谢mt_dialog,decetice消耗了更少的电流,它是外部proccessor,它消耗了更多的电流。
好的,现在我想在扩展睡眠模式下使用外部唤醒。
我在ble_app_barebone中完成了以下修改:
//在da1458x_config_advance.h.中
#define cfg_external_wakeup.
//在拱门上
//在拱门内进入睡眠()
#if((hyperent_wakeup)&&(!ble_app_present))//外部唤醒,只在外部处理器设计中
ext_wakeup_enable(uart2_rts_port,uart2_rts_pin,1);
//在拱门内从睡眠中恢复
#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传输数据。
谢谢你的对话
AN-B-026中提到的所有更改都已完成为我
你好,dhirajp15,
由于当您醒来时,您可以从UART妥善接收数据,并且在您无法睡觉时会接收数据,意味着在切换GPIO后,您可以从外部处理器的UART中发送数据,但580尚未清醒。如果您检查AN-B-026“使用任何GPIO唤醒580”,它提到,为了通过UART传输数据,流量控制的使用是强制性的,并且您将不得不等到580断言或脱节断言流量控制信号,以便从外部MCU开始发送数据。
谢谢你的对话
嗨,MT\u dialog,
协处理器仅在CTS变低时发送数据。我观察到的是,当我使用EXT\u WAKEUP或不使用EXT\u WAKEUP触发设备时,只需设置ARCH\u EXT\u SLLEP\u,电流消耗增加,这意味着它从睡眠中醒来,但不接受来自协处理器的数据。我们需要在从睡眠中醒来后再次初始化外围设备吗?
非常感谢。
你好,dhirajp15,
当580从LP处理程序唤醒时,外围设备被初始化,在SLP中,gtl或hci接口被初始化以设置流控制,因此不需要再次初始化外围设备,如果定义外部唤醒或不定义外部唤醒,您会看到一些电流消耗,也许这意味着你的引脚配置有问题。如果没有外部唤醒定义,则没有唤醒计时器的设置,因此没有唤醒,您看到的电流可以是任何东西,可能是漏电或580唤醒以外的其他东西。如果您有一个dev pro工具包,您可以使用智能代码段来检查580是否唤醒,方法是在外围设备初始化后的LP函数之后放置一个arch\u set\u pxact\u gpio()。
另外,我假设您对完全嵌入式设计感兴趣(这意味着580中没有应用程序代码),对吗?通过gtl和580通讯?我刚刚注意到在上面的修改中,您已经声明唤醒引脚应该是UART2\u RTS,在唤醒处理程序中,您需要放置一个配置为输入的引脚,这样当您切换MCU的RTS时,580的CTS(即设置为唤醒引脚)580将启动唤醒过程,当唤醒程序完成时,MCU的580/CTS的RTS将变低,即您可以开始发送数据。我也不明白为什么当你从睡眠中恢复的时候会出现唤醒中断。
谢谢你的对话