12 posts / 0 new
Last post
sprhawk
Offline
Last seen:2 years 11 months ago
加入:2016-03-03 17:25
无法进入 睡眠模式问题

我遇到了与这个问题一模一样的问题http://support.dialog-semiconductor.com/sdk5problem-about-extsleep

#undef CFG_DEVELOPMENT_DEBUG in da1458x_config_basic.h
const static sleep_state_t app_default_sleep_mode=ARCH_EXT_SLEEP_ON;

将程序写入FLASH (DA14583)

断开JTAG, 断电,上电

手机可以发现设备广播一至二秒,之后设备就没有反应了。

Device:
Gongyu_Dialog
Offline
Last seen:2 weeks 1 day ago
加入:2016-04-27 07:07
1.如果不开睡眠,是不是都是正常的?

1.如果不开睡眠,是不是都是正常的?
2.外部32K是否正常?
3.编译对应的是583的版本吗?keil上需要选择ble_app_profile_583,即开启__DA14583__

sprhawk
Offline
Last seen:2 years 11 months ago
加入:2016-03-03 17:25
1. 不开睡眠正常

1. 不开睡眠正常
我按照5.0.4的sleepmode的demo改的,开与不开睡眠在执行上有一点区别
(就是增加了在app_easy_wakeup。

这些代码在devkit-pro上是正常的

2. 没有外部32K。这个不是必须的器件吧?是不是应该修改da1458x_advanced里相关的值才可以?

3.编译都是按照583进行编译的,没有问题

sprhawk
Offline
Last seen:2 years 11 months ago
加入:2016-03-03 17:25
附件是我修改的 5.0.4 下的 ble_app

附件是我修改的 5.0.4 下的 ble_app_peripheral 的工程。我也试过完全一样的对 5.0.3 的修改。结果一样

1。 在启用休眠后无法通过 wkup 中断唤醒,如果开启休眠则是正常的
2。 在启用 休眠后多次点按键(在 DevKit-Pro上),过段时间会进入一个 600uA 的电流,我认为这是进入了某个死循环或者HardFault之类,但是无法确定

现在在5.0.3 和 5.0.4 都是同样的问题。用的是 DevKit-Pro。因为我自己的板子没有 32K 晶振,所以在 da1458x_advanced_conf.h中做了修改。

Attachment:
sprhawk
Offline
Last seen:2 years 11 months ago
加入:2016-03-03 17:25
触发的问题应该是

触发的问题应该是

arch_ble_ext_wakeup_on();

和 app_easy_wakeup的问题,没有触发到 callback.

如果注释掉arch_ble_ext_wakeup_on(); 可以正常触发唤醒功能(我在中断里有判断 )

但是唤醒几次之后程序依然还有挂掉的可能

sprhawk
Offline
Last seen:2 years 11 months ago
加入:2016-03-03 17:25
附件是我认为死掉了的时候的 PowerProfiler

附件是我认为死掉了的时候的 PowerProfiler 的读数

Attachment:
sprhawk
Offline
Last seen:2 years 11 months ago
加入:2016-03-03 17:25
对于 ble_app_sleepmode 的示例工程

对于 ble_app_sleepmode 的示例工程

修改了两处:

1。user_config.h 中 const static sleep_state_t app_default_sleep_mode = ARCH_DEEP_SLEEP_ON;
2. user_sleepmode.c中 189 行 的 arch_set_deep_sleep 换成了 arch_set_extended_sleep

使用 booter 下载程序,用 Power Profiler 测试

Attachment:
sprhawk
Offline
Last seen:2 years 11 months ago
加入:2016-03-03 17:25
直接在发送完,在1500 ms 位置上,似乎程序就挂了

直接在发送完,在1500 ms 位置上,似乎程序就挂了

Attachment:
Gongyu_Dialog
Offline
Last seen:2 weeks 1 day ago
加入:2016-04-27 07:07
需要在函数 user_app_adv_undirect

需要在函数 user_app_adv_undirect_complete(uint8_t status)里面补一句user_app_adv_start.。原来的设计,需要按键才能再广播

sprhawk
Offline
Last seen:2 years 11 months ago
加入:2016-03-03 17:25
不知道您 是否看了我的附件

不知道您 是否看了我的附件

并不是不广播的问题。而是测试电流从睡眠的水平一下上到了 600uA 左右,我判断是进入了 while(DBG_IS_UP) 的那个循环。

Gongyu_Dialog
Offline
Last seen:2 weeks 1 day ago
加入:2016-04-27 07:07
我用你这份工程ble_app_sleepmode.zip

我用你这份工程ble_app_sleepmode.zip,我这里没问题。需要找你确认的是,你有没有改过我标注的这句话。如果电平不锁存,会导致重复进中断。会出现你说的这种情况
static inline void arch_turn_peripherals_off (sleep_mode_t current_sleep_mode)
{
if (current_sleep_mode == mode_ext_sleep || current_sleep_mode == mode_deep_sleep)
{
SCB->SCR |= 1<<2; // enable deep sleep mode bit in System Control Register (SCR[2]=SLEEPDEEP)

SetBits16(SYS_CTRL_REG, PAD_LATCH_EN, 0); ///////////////////////////////////××××××××××××××××××

sprhawk
Offline
Last seen:2 years 11 months ago
加入:2016-03-03 17:25
检查了代码,和你的是一样的

检查了代码,和你的是一样的