我遇到了与这个问题一模一样的问题http://support.dialog-semiconductor.com/sdk5problem-about-extsleep
#undef CFG_DEVELOPMENT_DEBUG在da1458x_config_basic.h
const static sleep_state_t app_default_sleep_mode=ARCH_EXT_SLEEP_ON;
将程序写入FLASH (DA14583)
断开JTAG,断电,上电
手机可以发现设备广播一至二秒,之后设备就没有反应了。
设备:
1.如果不开睡眠,是不是都是正常的?
2 .外部32 k是否正常?
3.编译对应的是583的版本吗?凯尔上需要选择ble_app_profile_583,即开启__DA14583__
1.不开睡眠正常
我按照5.0.4的sleepmode的演示改的,开与不开睡眠在执行上有一点区别
(就是增加了在app_easy_wakeup。
这些代码在devkit-pro上是正常的
2.没有外部32 k。这个不是必须的器件吧?是不是应该修改da1458x_advanced里相关的值才可以吗?
3.编译都是按照583进行编译的,没有问题
附件是我修改的5.0.4下的ble_app_peripheral的工程。我也试过完全一样的对5.0.3的修改。结果一样
1。在启用休眠后无法通过wkup中断唤醒,如果开启休眠则是正常的
2。在启用休眠后多次点按键(在DevKit-Pro上),过段时间会进入一个600 ua的电流,我认为这是进入了某个死循环或者HardFault之类,但是无法确定
现在在5.0.3和5.0.4都是同样的问题。用的是DevKit-Pro。因为我自己的板子没有32 k晶振,所以在da1458x_advanced_conf.h中做了修改。
触发的问题应该是
arch_ble_ext_wakeup_on ();
和app_easy_wakeup的问题,没有触发到回调。
如果注释掉arch_ble_ext_wakeup_on ();可以正常触发唤醒功能(我在中断里有判断 )
但是唤醒几次之后程序依然还有挂掉的可能
附件是我认为死掉了的时候的PowerProfiler的读数
对于ble_app_sleepmode的示例工程
修改了两处:
1. user_config.h中常量静态sleep_state_t app_default_sleep_mode = ARCH_DEEP_SLEEP_ON;
2.user_sleepmode.c中189行的arch_set_deep_sleep换成了arch_set_extended_sleep
使用橄榄球员下载程序,用权力分析器测试
女士直接在发送完,在1500位置上,似乎程序就挂了
需要在函数user_app_adv_undirect_complete (uint8_t状态)里面补一句user_app_adv_start . .原来的设计,需要按键才能再广播
不知道您 是否看了我的附件
并不是不广播的问题。而是测试电流从睡眠的水平一下上到了600 ua左右,我判断是进入了(DBG_IS_UP)时的那个循环。
我用你这份工程ble_app_sleepmode.zip,我这里没问题。需要找你确认的是,你有没有改过我标注的这句话。如果电平不锁存,会导致重复进中断。会出现你说的这种情况
静态内联void arch_turn_peripherals_off (sleep_mode_t current_sleep_mode)
{
If (current_sleep_mode == mode_ext_sleep || current_sleep_mode == mode_deep_sleep)
{
渣打银行——>可控硅| = 1 < < 2;//在系统控制寄存器中启用深度睡眠模式位(SCR[2]=SLEEPDEEP)
SetBits16 (SYS_CTRL_REG PAD_LATCH_EN 0);///////////////////////////////////××××××××××××××××××
检查了代码,和你的是一样的