[SDK5]关于EXT_SLEEP的问题

32个帖子/ 0新
最后一篇
kurbylee
离线
最后一次露面:3 years 6 months ago
加入:2014-11-05 09:10
[SDK5]关于EXT_SLEEP的问题

背景
1>project name: projects\target_apps\ble_examples\ble_app_profile
2>#undef CFG_DEVELOPMENT_DEBUG in da1458x_config_basic.h
3>为了简化问题,评论行://#在user_profiles_config.h中包含“custs1.h”;
4>将app_default_sleep_mode的值更改为user_config.h中的Arch_ext_sleep_on
const static sleep_state_t app_default_sleep_mode=ARCH_EXT_SLEEP_ON;
5>compile and burn into external flash;

结果:
1>手机无法扫描除电源DA外的DA;
2> Powered DA后,我一旦扫描使用手机,我会发现DA,但连接失败;除了重置da之外,无法扫描da;

背景2:
Base on Background above,open watchdog, and toggle a led in init, I found that the chip will reset again and again ,so phone will always
扫描DA但连接失败。

how I can use ARCH_EXT_SLEEP_ON correctly??

Keywords:
设备:
mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨Kurbylee,

嗨Kurbylee,

我已经测试了你的设置,它似乎工作好。我的年代uppose that you are using Smart Snippets to burn your SPI, do you make your device bootable when you are promted from Smart Snippets ? After burning the flash do you reset your board in order for the bootloader to run and boot from your SPI ? By setting the app_default_sleep_mode to ARCH_EXT_SLEEP_ON is enough to set your device to extended sleep. Are you able to see your device correctly when you dont use sleep mode?

谢谢mt_dialog.

kurbylee
离线
最后一次露面:3 years 6 months ago
加入:2014-11-05 09:10
HI,MT_dialog

HI,MT_dialog
1> Yes, I use Smart Snippets(ver 3.9) to burn ble_app_profile_580.hex into SPI,SDK ver is DA1458x_SDK_5.0.3
2>I had not use bootloader(secondery bootloader.hex),just burn ble_app_profile_580.hex use smartsnippert and make bootable; I can see the bootable flag added(8bytes begin with 7050)
3>烧伤后,我总是通过重力重新启动董事会;
4>If I change app_default_sleep_mode to ARCH_EXT_SLEEP_OFF,It will works very well;
5>当我使用SDK3.0.8时,没有问题,无论是定义/ undef cfg_ext_sleep

ps:我打开同一个项目Inda1458x_sdk_5.0.2.1,然后在SDK5.3中获得相同的结果:(
kurbylee.

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨Kurbylee,

嗨Kurbylee,

我再次使用Fresh 5.0.3 SDK测试了您的设置并将图像刻录到闪光灯,它通常在重置时启动,并通过卸下电源。您是否能够使用keil,如果是的,请使用keil,如果是设备广告,那么它应该是什么?

谢谢mt_dialog.

kurbylee
离线
最后一次露面:3 years 6 months ago
加入:2014-11-05 09:10
谢谢mt_dialog为你的

谢谢mt_dialog以获取您的信息。
But I have not resolved the problem:
I burn the app hex with complied with app_default_sleep_mode=ARCH_SLEEP_OFF by smartSnippets 3.9, I can get expected result that the DA is running normal and android phone can scan/connect/access char it ;
如果我更改app_default_sleep_mode = arch_ext_sleep_on,我只能在da powering的时间扫描da.and,然后手机永远不会找到da;

Today , I do anthor test,I add a led toggle in main_func:(P07 is connected a led)
1> app_default_sleep_mode = ash_config.h中的Arch_sleep_off.h
#undef cfg_development_debug.
#define cfg_wdog在da1458x_config_basic.h(有关更多测试:))
2>in arch_main.c:
int main_func(void)
{
sleep_mode_t sleep_mode;
system_init();
gpio_configurepin(gpio_port_0,gpio_pin_7,输出,pid_gpio,false);
while(1)
{
uint32_t i;
........................
if(((!ble_app_present)&&(check_gtl_state()))||
(ble_app_present))
{
gpio_setactive(gpio_port_0,gpio_pin_7);
我= 0xfffff;
(i)我 - ;
//禁用中断
global_int_stop();
......................
......................
......................
GPIO_SetInactive(GPIO_PORT_0, GPIO_PIN_7);
我= 0xfffff;
(i)我 - ;
GLOBAL_INT_START();
}
.....
}
3>now,I can see the led is shinning,and phone will cann't scan it(app_default_sleep_mode=ARCH_SLEEP_OFF)

4>如果我制作app_default_sleep_mode = arch_ext_sleep_on,则手机将扫描并立即连接;

所以我与结果混淆了:
当我添加LED切换时,da与app_default_sleep_mode = ARCH_EXT_SLEEP_ON正常;(由于WDOG,它会在几秒钟后断开连接)
当我删除LED切换时,DA与App_default_sleep_mode = Arch_sleep_off的正常情况;

我认为有一个与计时器/ inteval相关的strick ... for set app_default_sleep_mode,但我找不到它:(

another information : when I undef wdog, the led will shinning 5 times and then keep light with app_default_sleep_mode=ARCH_EXT_SLEEP_ON

另一个信息:通过切换LED,我发现应用程序进入INFINIT循环(!BLE_DEEP_SLEEP_STAT_GETF()); ====>在func sleep_mode_t rwip_sleep(void)中

kurbylee
离线
最后一次露面:3 years 6 months ago
加入:2014-11-05 09:10
比较SDK5.03和SDK3.0.8

比较SDK5.03和SDK3.0.8文件,最后我找到了罪魁祸首。
just chang SetWord16(RF_ENABLE_CONFIG13_REG, PREF_RF_ENABLE_CONFIG13_REG);
到setword16(rf_enable_config13_reg,0);
in func rf_nfm_disable,
一切都回来了。

GGOTTA.
离线
最后一次露面:10个月前1年
加入:2016-02-20 20:10
亲爱的对话团队,

亲爱的对话团队,
你能解释它是如何影响的吗?什么是正确的?

sprhawk
离线
最后一次露面:3年1个月前
加入:2016-03-03 17:25
Are you sure this is the

你确定这是你问题的原因吗?

我遇到了你的确切问题。

我的年代earched though, the rf_nfm_disable is called nowhere, so I think it is not the reason .

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
Hi ggotta,

Hi ggotta,

你能解释你的问题吗?在SDK 5中,如果要在睡眠模式下启用580,您所要做的就是将默认睡眠模式设置为Arch_ext_sleep_on。RF_NFM_DISABLE与近场模式操作有关,而不是睡眠操作。默认情况下,该函数不会在SDK中调用,仅为API禁用近场模式如果启用。

谢谢mt_dialog.

GGOTTA.
离线
最后一次露面:10个月前1年
加入:2016-02-20 20:10
你好,

你好,
谢谢你的细节。
我启用了扩展睡眠模式并闪烁DA。之后我无法通过JTAG连接。但后来我经历了一些答案,我找到了解决方案。它现在正在运作。
- 盖特

SMDZJL007.
离线
最后一次露面:3年10个月前
加入:2015-08-04 15:07
嗨ggotta,

嗨ggotta,

我与您遇到同样的问题,在启用EXT_SLEEP_ON之后,我的手机无法扫描DA,除了LIT时间的电源。

你最终如何解决问题?只有改变是真的:
just chang SetWord16(RF_ENABLE_CONFIG13_REG, PREF_RF_ENABLE_CONFIG13_REG);
到setword16(rf_enable_config13_reg,0);
in func rf_nfm_disable

或其他时间设置也是必要的?

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
Hi smdzjl007,

Hi smdzjl007,

如上所述在上面的注释中,RF_NFM_DISABLE与睡眠不一致,但默认情况下禁用近场模式。为了仅在睡眠模式下放置580,app_default_sleep_mode = arch_ext_sleep_on;足以将设备放在睡眠模式下。您正在使用的SDK是什么,您是否在DEV套件上或在定制董事会上进行实验?如果您能够仅扫描该设备几秒钟,那么低功耗时钟或德国uguger留在您的设备上的禁止留下,如果您在SDK之前使用SDK,则防止其睡眠状态5.0.4。

谢谢mt_dialog.

SMDZJL007.
离线
最后一次露面:3年10个月前
加入:2015-08-04 15:07
Dear MT_dialog team,

Dear MT_dialog team,

谢谢你的帮助。是的,我确实发现rf_nfm_disable函数中的修改根本不起作用。我正在使用SDK 5.0.3。如何定位问题与低功率时钟或其他原因有关?我应该升级到SDK 5.0.4吗?

Another question, after DA14580 enter to sleep mode, what timer setting to control the wake up from sleep? what timer to control wake up duration?

Thanks & Best regards,

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨smdzji007,

嗨smdzji007,

RF_NFM_Disable()函数不必用睡眠做任何事情,如果转移到新的SDK 5.0.4,则在睡眠期间,调试器未禁用,因此即使调试器停留也应继续通告。如果通过进入新的SDK没有帮助,并且您有一个自定义板检查LP时钟的设置应为XTAL或RCX,如果您在降压模式下运行,请切换到RCX,然后您就可以看到广告,那么您的问题是您在自定义板上的外部XTAL32。

The SDK takes care of how long the device will stay in sleep mode and when to wake up, all you have to do is set the advertising and connection intervals and the SDK will take care of the rest and configure the system to wake up on time and sleep as well.

谢谢mt_dialog.

SMDZJL007.
离线
最后一次露面:3年10个月前
加入:2015-08-04 15:07
Thanks, MT_Dialog team, very

谢谢,MT_Dialog团队,非常及时反馈!

我尝试修改user_config.h进行广告和连接间隔,如下所示,实际user_connection_param_conf未更改:

static const struct _configuration user_adv_conf = {
.ddr_src = gapm_public_addr,
.grenew_dur = 0,
.ddr = {0x1,0x2,0x3,0x4,0x5,0x6},
.intv_min = 1000,// 625 ms(1000 * 0.625ms)
.intv_max = 2000,// 1250 ms(2000 * 0.625ms)
.channel_map = 0x7,
.mode = gap_gen_discoverable,
。adv_filt_policy = adv_allow_scan_any_con_any,
.peer_addr = {0x1,0x2,0x3,0x4,0x5,0x6},
.peer_addr_type = 0,
};

static const struct connection_param_configuration user_connection_param_conf = {
.intv_min = ms_to_doubleslots(20),
.intv_max = MS_TO_DOUBLESLOTS(100),
.latency = 0,
.time_out = ms_to_timerUnits(125),
.ce_len_min = ms_to_doubleslots(0),
.ce_len_max = ms_to_doubleslots(0),
};

但测试结果仍然失败,设备可以为非常短的时间播放BLE广告消息,然后睡眠,我的智能手机无法扫描设备。

what else structure should I modify to make it sleep/wakeup as normal wearable device?

Thanks & Best regards

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨smdzj007,

嗨smdzj007,

我建议不要修改任何东西(以验证580不是广告的原因不是FW),只需从5.0.4那样拍摄示例并将其运行到睡眠模式(const static sleep_state_t app_default_sleep_mode = arch_ext_sleep_on;)在user_config.h文件中也使用const static sleep_state_t app_default_sleep_mode = Arch_sleep_off运行相同的示例;并检查您是否这样做是设备广告,如果您必须始终设置睡眠模式(Arch_sleep_off)。这样做,让我知道。另外,如果您使用自定义板或DEV套件,请告诉我,如果您使用的是外部XTAL,或者您使用RCX运行。

谢谢mt_dialog.

SMDZJL007.
离线
最后一次露面:3年10个月前
加入:2015-08-04 15:07
谢谢,MT_Dialog团队!

谢谢,MT_Dialog团队!

我将我的.hex文件上传到其他对话框支持工程师,他看到与我的结果相同。
https://support.dialog-semiconductor.com/smartsnippets-spi-flash-program...

他正在使用580 dev kit pro。我的设计也使用对话框参考设计与外部XTAL时钟。如果关闭睡眠,它可以正常工作。

无论如何,我会再次尝试下载5.0.4 sdk示例以查看任何区别。

与此同时,您可以确认我以前的关于广告和连接间隔调整的问题吗?这两个结构是否正确?我的间隔设置有效吗?

Thanks & Best regards

SMDZJL007.
离线
最后一次露面:3年10个月前
加入:2015-08-04 15:07
嗨mt_dialog团队,

嗨mt_dialog团队,

在与以前的同事进行检查后,他告诉我,我们的设计基于对话框SDK参考设计:
https://support.dialog-semicondiondiondum/connectivity/reference-designs?...

我试图下载微信SDK参考设计并将其运行到睡眠模式(const static sleep_state_t app_default_sleep_mode = Arch_ext_sleep_mode = Arch_ext_sleep_on;)。问题与我的设备睡眠相同,无法通过智能手机应用程序:Airsyncdebugger发现

Two questions here:
- did wechat SDK reference design tested for extended sleep mode?
- 如何将WeChat SDK参考设计使用Dialog SDK替换为5.0.4标准SDK?

Thanks & Best regards,

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
Hi smdzjl007,

Hi smdzjl007,

- Yes, the wechat is tested to operate under extended sleep mode and i am also able to see the advertising string when the device is in sleep mode.

- 我没有得到这个问题,你是什么意思如何更换FW?您可以通过JTAG直接运行其中一个SDK示例,或者您可以通过UART下载示例的.hex文件,或者如果您有闪存,可以刻录闪光灯,电涌580将从闪存下载代码。

谢谢mt_dialog.

SMDZJL007.
离线
最后一次露面:3年10个月前
加入:2015-08-04 15:07
嗨mt_dialog团队,

嗨mt_dialog团队,

问题来自于:近期11.15年11月15日,X XDK版本X释放了,最近,如果我需要将微信的参考设计SDK源升级为5.0.4 SDK我应该做什么程序?

Thanks & Best regards,

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨smdzji007,

嗨smdzji007,

根据FW所在的位置,如果您使用的fW是由对话框提供的WeChat,则应编译代码并将其下载到您的设备。如果设备使用闪存或EEPROM内存以加载FW,可以通过JTAG或VIA UART通过智能片段工具擦除和销售设备(取决于设备可用的接口)。如果在OTP中刻录微信燃烧,您不会能够更新OTP,因为您只能编程一次。您还可以通过直接通过Keil和JTAG接口下载新FW来测试新源代码(再次如果在您的设备上使用此界面,您也可以在该案例中调试代码)也可以下载代码通过智能片段工具通过UART的Sysram。

谢谢mt_dialog.

SMDZJL007.
离线
最后一次露面:3年10个月前
加入:2015-08-04 15:07
亲爱的mt_dialog,

亲爱的mt_dialog,

今天我要求我的同事测量时钟输出信号。您可以找到附加的3 jpg。
如果禁用睡眠,我们可以测量32khz和16mhz时钟:32k_withoutsleep.jpg和16m_withoutsleep.jpg
如果启用睡眠,只能看到32kHz信号:32k_withsleep.jpg

我正在使用sdk5.0.4,从SDK示例文件夹中使用BLE_APP_SLEEPMODE。根据示例代码,唤醒持续时间为0.5s,因此应该非常快。但我的测试结果看起来看起来14580无法摆动,我无法从智能手机扫描14580设备

Can you help to give hints for more trouble shooting?

BTW, should I config CLK_16M_REG as XTAL16_BIAS_SH_ENABLE register before/after sleep?

Thanks & Best regards

附件:
mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨smdzji007,

嗨smdzji007,

BLE_APP_SLEEPMODE在特定时间段内(几秒钟)后(几秒钟)和XTAL16启用时禁用XTAL16后,您可以尝试使用不断睡眠的另一个项目,但在预定义的时间内唤醒以进行广告再次检查。您不必配置CLK_16M_REG默认,SDK将在PERIPH_INIT()函数中处理该功能。

Also the specific project implements a button press that when pressed the device wakes up and continiues to advertise, have to tryied to press that button in order to wake up the device.

另外请勿在无关主题中发布问题,如果有任何后续问题,您可以随时创建一个新的线程。

谢谢mt_dialog.

SMDZJL007.
离线
最后一次露面:3年10个月前
加入:2015-08-04 15:07
嗨mt_dialog,

嗨mt_dialog,

Thanks to confirm ble_app_sleepmode behavior is correct in my board, so what should I do to enable automatic wake up after 14580 enter extended or deep sleep? To add one XTL32 timer call back function or what else? Which sample project should I use for reference?

我在这里发布问题的原因是因为我发现我的问题与当前的线程主题相关,我找不到创建新线程的按钮。如果我的发布给您带来任何方便,我需要向您说道歉。

Thanks & Best regards,

qinjiny_dialog
离线
最后一次露面:2周2天前
职员
加入:2016-11-01 05:47
Hi smdzjl007,

Hi smdzjl007,

你可以尝试职能app_easy_timer.如果您指定的睡眠时间不是太长(如5分钟)

BR,

SMDZJL007.
离线
最后一次露面:3年10个月前
加入:2015-08-04 15:07
Thanks for feedback, Qinjiny

感谢您从对话小组的反馈,Qinjiny,

正如以前的支持工程师所说,启用睡眠时禁用XTAL16时钟,App_easy_timer是否可以正常工作?如果我写一个回拨函数,请通过将呼叫回函数(如下)启用XTAL32时钟?

static const struct arch_main_loop_callbacks user_app_main_loop_callbacks = {
.app_before_sleep = my_app_enable_XTAL32_clock,
.app_resume_from_sleep = my_app_disable_xtal32_clock,
};

SMDZJL007.
离线
最后一次露面:3年10个月前
加入:2015-08-04 15:07
Hi MT_Dialog,

Hi MT_Dialog,

我重新研究BLE_APP_SLEEPMODE示例,并在DA1458x_config_Advance.h中找到以下定义

/ **************************************************************************************************************** /
/ *从外部处理器运行主机应用程序的唤醒。* /
/ **************************************************************************************************************** /
#undef cfg_external_wakeup.

/ **************************************************************************************************************** /
/* Wakeup external processor when a message is sent to GTL */
/ **************************************************************************************************************** /
#undef cfg_wakeup_ext_processor.

不确定是否与先前的答案对齐,即BLE_APP_SLEEPMODE落入永久睡眠状态,直到外部按钮按触发唤醒。那么,这个示例代码如何拒绝外部唤醒,但使用外部唤醒?

对我令人困惑

Best regards,
smdzjl

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
Hi smdzjl007,

Hi smdzjl007,

The definitions that you see there, has nothing to do with the ble_app_sleepmode project but with the external wake up when the 580 runs in fully embedded mode (defined by the SDK). If you are interested to check the code that dictates that particullar project you can check the following:

  • user_app_adv_start() - >将ke_timer与Adv_Data_update_Timer_CB()作为处理程序启动,以便在经过时执行。
  • 当时间经过adv_data_update_timer_cb()执行并停止广告过程。
  • When the advertising procedure is stopped the user_app_adv_undirect_complete() handler is getting invoked.
  • 在user_app_adv_undirect_complete()中,调用函数ARCH_BLE_EXT_WAKEUP_ON()以防止以稳定间隔唤醒580,并且APP_BUTTON_ENABLE()设置唤醒定时器和用于唤醒以及相应的回调的相应GPIO为了醒来的事件。

谢谢mt_dialog.

梁云浩
离线
最后一次露面:3 years 2 months ago
加入:2016-03-05 13:38
Hi MT_Dialog,

Hi MT_Dialog,

现在我使用da14580 pro套件,我将app_default_sleep_mode设置为arch_sleep_off。当我将十六进制文件刻录到SPI FALSH时,它可以很好地工作,按RESET按钮并将子板拉离母板。(它由外部电池供电。)可以从我的手机扫描。但是,当我将App_default_sleep_mode设置为Arch_ext_sleep_on时,无法从手机扫描。我是否必须设置任何其他代码?哪个辅导器在进入睡眠模式时使用芯片使用?谢谢。

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
Hi Liang Yun Hao,

Hi Liang Yun Hao,

请不要在无关主题中发布问题,您可以始终创建一个新的线程。

关于你的问题,尝试运行项目directly from keil with extended sleep on and check if you are able to see your device advertising, also try to do the same with an SDK example and check as well. When the device is in sleep mode the LP clock is used that means that the device operates either with the external XTAL32 or with the RCX, this option can be configured from the CFG_LP_CLK definition in the da1458x_config_advanced.h file.

谢谢mt_dialog.

Zhounaichun
离线
最后一次露面:3 years 4 months ago
加入:2017-07-17 02:54
that's working!!!

that's working!!!
my problem : when i set extended sleep mode,my phone can't connect to my ble device,but if i set sleep_mode=ARCH_SLEEP_OFF, it's normal. then i change the value of CFG_LP_CLK(da458x_config_advanced.h) from LP_CLK_XTAL32 to LP_CLK_RCX20,that‘s is ok.
但我有另一个问题,即当我将睡眠模式设置为深睡眠时,我的手机就找不到BLE设备。
if anyone can tell me why?

SDK:5.0.3 5.0.4
设备:不是非官方设备

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨zhounaichun,

嗨zhounaichun,

嗯,如果您正在开发模式和您的arch_deep_sleep_on,并且您也将内存配置更改为cfg_mem_map_deep_sleep(undefine cfg_mem_map_ext_sleep并设置cfg_mem_map_deep_sleep),那么您应该能够在深度睡眠模式下测试FW。但是要看到设备的适当功耗,您将不得不用FW刻录OTP,因此在每个唤醒中,图像将从OTP复制到Sysram,因为在深度睡眠中,Sysram将关闭。

谢谢mt_dialog.