[SDK5]关于EXT_SLEEP的问题

32个帖子/ 0新
最后发表
kurbylee
离线
最后看到:3年10个月前
加入:2014-11-05分
[SDK5]关于EXT_SLEEP的问题

背景
1 >项目名称:项目\ target_apps \ ble_examples \ ble_app_profile
2>#undef CFG_DEVELOPMENT_DEBUG在da1458x_config_basic.h
3>为了简化问题,注释行:
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>编译和烧成外部闪光;

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

背景2:
基于以上背景,打开看门狗,在init中切换一个led,我发现芯片会一次又一次的重置,所以手机总是重置
扫描DA,但连接失败。

如何正确使用ARCH_EXT_SLEEP_ON ??

关键词:
设备:
MT_dialog
离线
最后看到:6个月3周前
工作人员
加入:2015-06-08 34
嗨Kurbylee,

嗨Kurbylee,

我已经测试了你的设置,它似乎工作良好。我假设您正在使用智能代码段来烧录SPI,当您从智能代码段得到提示时,您是否使设备可启动?烧掉闪存后,您是否重置了电路板,以便引导加载程序运行并从SPI引导?通过将app_default_sleep_mode设置为ARCH_EXT_sleep_ON,即可将设备设置为延长睡眠。当你不使用睡眠模式时,你能正确地看到你的设备吗?

由于MT_dialog

kurbylee
离线
最后看到:3年10个月前
加入:2014-11-05分
嗨,MT_dialog

嗨,MT_dialog
1>是的,我使用智能片段(版本3.9)刻录ble_app_profile_580。hex into SPI,SDK ver是DA1458x_SDK_5.0.3
2>我没有使用bootloader(secondary bootloader.hex),只是烧伤ble_app_profile_580。十六进制使用smartsnippert和使可引导;我可以看到添加了可引导标志(以7050开头的8字节)
3>烧伤后,我总是通过重力重新启动董事会;
4>如果我将app_default_sleep_mode改为ARCH_EXT_SLEEP_OFF,它将工作得很好;
5>当我使用SDK3.0.8时,没有问题,无论是定义/ undef cfg_ext_sleep

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

MT_dialog
离线
最后看到:6个月3周前
工作人员
加入:2015-06-08 34
嗨Kurbylee,

嗨Kurbylee,

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

由于MT_dialog

kurbylee
离线
最后看到:3年10个月前
加入:2014-11-05分
谢谢mt_dialog为你的

谢谢mt_dialog以获取您的信息。
但我还没有解决这个问题:
我通过smartSnippets 3.9按照app_default_sleep_mode=ARCH_sleep_OFF烧掉了app hex,我可以得到预期的结果,DA正常运行,android手机可以扫描/连接/访问它;
如果我更改app_default_sleep_mode=ARCH_EXT_SLEEP_ON,并且我只能在DA启动时扫描DA一次。电话永远找不到地检官;

今天,我做一个anthor测试,我添加了一个led开关在main_func:(P07连接一个led)
1 > app_default_sleep_mode = ARCH_SLEEP_OFF user_config.h
#undef cfg_development_debug.
#define cfg_wdog在da1458x_config_basic.h(有关更多测试:))
2 > arch_main.c:
int main_func(空白)

sleep_mode_t sleep_mode;
系统初始化();
gpio_configurepin(gpio_port_0,gpio_pin_7,输出,pid_gpio,false);
而(1)

uint32_t我;
........................
if(((!ble_app_present)&&(check_gtl_state()))||
(ble_app_present))

GPIO_SetActive (GPIO_PORT_0 GPIO_PIN_7);
我= 0xfffff;
虽然(我)我;
//禁用中断
global_int_stop();
......................
......................
......................
GPIO_设置不活动(GPIO_端口0、GPIO_引脚7);
我= 0xfffff;
虽然(我)我;
全局_INT_START();

.....

3>现在,我可以看到led正在闪烁,手机将无法扫描它(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的正常情况;

我认为这与计时器/间隔等有关。设置app_default_sleep_mode,但我没有找到它:(

另一个信息:当我undef wdog, led将闪烁5次,然后保持光与app_default_sleep_mode=ARCH_EXT_SLEEP_ON

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

kurbylee
离线
最后看到:3年10个月前
加入:2014-11-05分
比较SDK5.03和SDK3.0.8

比较SDK5.03和SDK3.0.8文件,最后我找到了罪魁祸首。
只需更改SetWord16(RF\u启用\u配置13\u注册表、PREF\u RF\u启用\u配置13\u注册表);
到setword16(rf_enable_config13_reg,0);
在func rf_nfm_disable,
一切都回来了。

ggotta
离线
最后看到:1个月3个星期前
加入:2016-02-20 20:10
亲爱的对话团队,

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

sprhawk
离线
最后看到:3年5个月前
加入:2016-03-03十七25
你确定这是

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

我遇到了你的确切问题。

但是我搜索了一下,rf_nfm_disable没有被调用,所以我认为这不是原因。

MT_dialog
离线
最后看到:6个月3周前
工作人员
加入:2015-06-08 34
嗨,戈塔,

嗨,戈塔,

你能解释一下你的问题吗?在SDK 5中,如果你想在睡眠模式下启用580,你需要做的就是设置默认睡眠模式为ARCH_EXT_SLEEP_ON。rf_nfm_disable与近域模式操作而不是睡眠操作有关。默认情况下,SDK中不会调用该函数,它只是用于禁用近域模式的API(如果启用的话)。

由于MT_dialog

ggotta
离线
最后看到:1个月3个星期前
加入:2016-02-20 20:10
你好,

你好,
谢谢你的细节。
我启用了延长睡眠模式,并闪烁了地检。在那之后我无法通过JTAG连接。但后来我又看了一些答案,找到了解决办法。它现在正在工作。
- 盖特

SMDZJL007.
离线
最后看到:4年2个月前
加入:2015-08-04 15:07
嗨ggotta,

嗨ggotta,

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

你最后是如何解决这个问题的?只有改变是正确的吗?
只需更改SetWord16(RF\u启用\u配置13\u注册表、PREF\u RF\u启用\u配置13\u注册表);
到setword16(rf_enable_config13_reg,0);
在func rf_nfm_disable

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

MT_dialog
离线
最后看到:6个月3周前
工作人员
加入:2015-06-08 34
你好,smdzjl007,

你好,smdzjl007,

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

由于MT_dialog

SMDZJL007.
离线
最后看到:4年2个月前
加入:2015-08-04 15:07
亲爱的MT_dialog团队,

亲爱的MT_dialog团队,

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

另一个问题,DA14580进入睡眠模式后,设置什么定时器来控制从睡眠中唤醒?用什么定时器控制唤醒时间?

谢谢!

MT_dialog
离线
最后看到:6个月3周前
工作人员
加入:2015-06-08 34
嗨smdzji007,

嗨smdzji007,

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

SDK负责设备会呆多久在睡眠模式下,何时醒来,所有你要做的就是设置广告和连接的间隔和SDK将其余的照顾和配置系统按时起床和睡觉。

由于MT_dialog

SMDZJL007.
离线
最后看到:4年2个月前
加入:2015-08-04 15:07
谢谢MT_Dialog团队,非常感谢

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

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

static const struct _configuration user_adv_conf = {
.addr_src = GAPM_PUBLIC_ADDR,
.grenew_dur = 0,
.addr = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6},
.intv_min = 1000,// 625 ms(1000 * 0.625ms)
.intv_max = 2000,// 1250 ms(2000 * 0.625ms)
.channel_map = 0 x7,
.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广告消息,然后睡眠,我的智能手机无法扫描设备。

我还需要修改什么结构才能让它像普通的可穿戴设备一样睡眠/唤醒?

谢谢!致以最诚挚的问候

MT_dialog
离线
最后看到:6个月3周前
工作人员
加入:2015-06-08 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.
离线
最后看到:4年2个月前
加入: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示例以查看任何区别。

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

谢谢!致以最诚挚的问候

SMDZJL007.
离线
最后看到:4年2个月前
加入:2015-08-04 15:07
嗨MT_Dialog团队,

嗨MT_Dialog团队,

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

我尝试下载微信sdk参考设计,并在user_config.h文件中运行到睡眠模式(const static sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON;)。问题和我的一样,设备休眠,不能被智能手机应用程序发现:AirSyncDebugger

两个问题:
-微信SDK参考设计是否针对延长睡眠模式进行了测试?
- 如何将WeChat SDK参考设计使用Dialog SDK替换为5.0.4标准SDK?

谢谢!

MT_dialog
离线
最后看到:6个月3周前
工作人员
加入:2015-06-08 34
你好,smdzjl007,

你好,smdzjl007,

-是的,微信经过测试可以在延长睡眠模式下运行,当设备处于睡眠模式时,我也可以看到广告字符串。

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

由于MT_dialog

SMDZJL007.
离线
最后看到:4年2个月前
加入:2015-08-04 15:07
嗨MT_Dialog团队,

嗨MT_Dialog团队,

问题来自于以下事实:微信参考设计是在11月15日随14580 SDK版本x发布的,因为最近有新的14580 SDK版本5.0.4,如果我需要升级微信参考设计SDK源代码到5.0.4 SDK,我应该做什么步骤?

谢谢!

MT_dialog
离线
最后看到:6个月3周前
工作人员
加入:2015-06-08 34
嗨smdzji007,

嗨smdzji007,

取决于fw的位置,如果你使用的fw是dialog提供的微信,你应该编译代码并下载到你的设备上。如果设备使用闪存或EEPROM内存来加载fw,您可以通过智能片段工具擦除和重新刻录设备,可以通过JTAG或UART(取决于您的设备可用的接口)。如果微信在OTP烧伤,你不能更新OTP,因为你只能编写它一次。你也可以测试新的源代码通过直接下载新的固件sysram凯尔和JTAG接口(如果这个接口可以在你的设备,你也可以调试代码在这种情况下)也可以下载代码到sysram通过UART智能片段的工具。

由于MT_dialog

SMDZJL007.
离线
最后看到:4年2个月前
加入: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设备

你能给我一些提示来解决更多的问题吗?

顺便说一下,我应该配置CLK_16M_REG为XTAL16_BIAS_SH_ENABLE寄存器之前/之后的睡眠?

谢谢!致以最诚挚的问候

附件:
MT_dialog
离线
最后看到:6个月3周前
工作人员
加入:2015-06-08 34
嗨smdzji007,

嗨smdzji007,

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

此外,该项目还实现了一个按钮按压,当按压设备时,设备会醒来并继续做广告,必须尝试按下这个按钮来唤醒设备。

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

由于MT_dialog

SMDZJL007.
离线
最后看到:4年2个月前
加入:2015-08-04 15:07
嗨mt_dialog,

嗨mt_dialog,

感谢确认ble_app_sleepmode行为是正确的在我的板,所以我应该做什么使自动唤醒14580进入扩展或深度睡眠?添加一个XTL32计时器回调函数或其他什么?我应该参考哪个样例项目?

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

谢谢!

qinjiny_dialog
离线
最后看到:3个月3周前
工作人员
加入:2016-11-01 05:47
你好,smdzjl007,

你好,smdzjl007,

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

BR,

SMDZJL007.
离线
最后看到:4年2个月前
加入:2015-08-04 15:07
谢谢你的反馈,秦津尼

感谢您从对话小组的反馈,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.
离线
最后看到:4年2个月前
加入:2015-08-04 15:07
嗨MT_Dialog,

嗨MT_Dialog,

我重新研究了ble_app_sleepmode示例,并在da1458x_config_advance.h中找到了下面的定义

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

/****************************************************************************************************************/
/*当消息被发送到GTL时唤醒外部处理器*/
/****************************************************************************************************************/
# undef CFG_WAKEUP_EXT_PROCESSOR

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

对我令人困惑

顺致敬意,
smdzjl

MT_dialog
离线
最后看到:6个月3周前
工作人员
加入:2015-06-08 34
你好,smdzjl007,

你好,smdzjl007,

您在这里看到的定义与ble_app_sleepmode项目无关,但与580以完全嵌入式模式(由SDK定义)运行时的外部唤醒有关。如果你有兴趣检查指定特定项目的代码,你可以检查以下内容:

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

由于MT_dialog

梁Yun郝
离线
最后看到:3年7个月前
加入:2016-03-05 38
嗨MT_Dialog,

嗨MT_Dialog,

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

MT_dialog
离线
最后看到:6个月3周前
工作人员
加入:2015-06-08 34
嗨,梁云浩,

嗨,梁云浩,

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

关于你的问题,试着从keil直接运行项目,延长睡眠,并检查你是否能够看到你的设备广告,也试着做同样的SDK例子,并检查。当设备处于睡眠模式时,使用LP时钟,这意味着设备使用外部XTAL32或RCX操作,这个选项可以从da1458x_config_advanced.h文件中的CFG_LP_CLK定义进行配置。

由于MT_dialog

Zhounaichun
离线
最后看到:3年9个月前
加入:2017-07-17 02:54
这是工作! !

这是工作! !
我的问题:当我设置扩展睡眠模式,我的手机不能连接到我的ble设备,但如果我设置sleep_mode=ARCH_SLEEP_OFF,这是正常的。然后我将CFG_LP_CLK(da458x_config_advanced.h)的值从LP_CLK_XTAL32更改为LP_CLK_RCX20,这就可以了。
但我还有另一个问题,那就是当我把睡眠模式设置为深度睡眠时,我的手机找不到ble设备。
有人能告诉我为什么吗?

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

MT_dialog
离线
最后看到:6个月3周前
工作人员
加入:2015-06-08 34
嗨zhounaichun,

嗨zhounaichun,

好吧,如果你是正在开发的模式和你已经设置ARCH_DEEP_SLEEP_ON也已经改变了内存配置CFG_MEM_MAP_DEEP_SLEEP(取消CFG_MEM_MAP_EXT_SLEEP并设置CFG_MEM_MAP_DEEP_SLEEP),那么你应该能够测试弗兰克-威廉姆斯在深度睡眠模式。但是要查看设备的适当功耗,你必须用fw烧录OTP,所以在每次唤醒时,图像将从OTP复制到系统ram,因为在深度睡眠时,系统ram将关闭。

由于MT_dialog