[SDK5]关于EXT_SLEEP的问题

32个职位/ 0个新职位
最后一篇
库比利
离线
最后一次露面:3年10个月前
加入:2014-11-05 09:10
[SDK5]关于EXT_SLEEP的问题

背景
1> 项目名称:项目\target\u apps\ble\u示例\ble\u app\u配置文件
2> #在da1458x_config_basic.h中进行undef CFG_开发_调试
3>为了简化问题,评论行://#在user_profiles_config.h中包含“custs1.h”;
4>修改user_config.h中app_default_sleep_mode的值为ARCH_EXT_SLEEP_ON
const static sleep\u state\u t app\u default\u sleep\u mode=ARCH\u EXT\u sleep\u ON;
5> 编译并刻录到外部闪存中;

结果:
1>手机无法扫描除电源DA外的DA;
2>在DA通电后,我尽快扫描使用手机,我会找到DA,但是连接失败;不能再扫描DA,只能重新设置DA;

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

我如何才能正确使用ARCH_EXT_SLEEP_ON??

关键词:
设备:
mt_dialog.
离线
最后一次露面:6个月3周前
职员
加入:2015-06-08 11:34
嗨Kurbylee,

嗨Kurbylee,

我测试了你的设置,它似乎工作正常。我想你正在使用智能片段燃烧你的spi,你可以让你的设备从智能片段引出时启动吗?刻录闪光后,您可以重置电路板,以便引导加载程序从SPI运行和启动?通过将App_default_sleep_mode设置为Arch_ext_sleep_on足以将您的设备设置为扩展睡眠状态。当您不使用睡眠模式时,您是否能够正确地查看您的设备?

谢谢mt_dialog.

库比利
离线
最后一次露面:3年10个月前
加入:2014-11-05 09:10
嗨,MT_dialog

嗨,MT_dialog
1> 是的,我使用智能代码段(3.9版)将ble_app_profile_580.hex刻录到SPI中,SDK版本是DA1458x_SDK_5.0.3
2> 我没有使用bootloader(secondery bootloader.hex),只是烧了ble_app_profile_580.hex使用smartsnippert并使其可引导;我可以看到添加的可引导标志(8字节以7050开头)
3>烧伤后,我总是通过重力重新启动董事会;
4> 如果我把app_default_sleep_模式改为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 11:34
嗨Kurbylee,

嗨Kurbylee,

我再次测试了你的设置与一个新的5.0.3 SDK和烧录图像的flash,它在复位和删除电源正常启动。你能通过使用keil下载代码吗?如果是,设备广告应该是这样的吗?

谢谢mt_dialog.

库比利
离线
最后一次露面:3年10个月前
加入:2014-11-05 09:10
感谢MT_dialog的帮助

谢谢mt_dialog以获取您的信息。
但我没有解决这个问题:
我刻录了App_default_sleep_mode = Arch_Sleep_off的App Hex 3.9,我可以获得预期的结果,DA运行正常和Android手机可以扫描/连接/访问CHAR IT;
如果我更改app_default_sleep_mode = arch_ext_sleep_on,我只能在da powering的时间扫描da.and,然后手机永远不会找到da;

今天,我做了一个测试,我在主功能中添加了一个led开关:(P07连接了一个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> 在arch_main.c中:
int main_func(无效)
{
sleep_mode_t sleep_mode;
system_init();
GPIO_ConfigurePin(GPIO_PORT_0, GPIO_PIN_7, OUTPUT, PID_GPIO, false);
而(1)
{
uint32_t i;
........................
if(((!ble_app_present)&&(check_gtl_state()))||
(BLE_APP_PRESENT))
{
gpio_setactive(gpio_port_0,gpio_pin_7);
我= 0 xfffff;
(i)我 - ;
//禁用中断
global_int_stop();
......................
......................
......................
gpio_setinactive(gpio_port_0,gpio_pin_7);
我= 0 xfffff;
(i)我 - ;
global_int_start();
}
.....
}
3> 现在,我可以看到led灯亮起,手机将无法扫描它(应用程序默认睡眠模式=拱睡眠关闭)

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,但我找不到它:(

另一个信息:当我取消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)中

库比利
离线
最后一次露面:3年10个月前
加入:2014-11-05 09:10
比较SDK5.03和SDK3.0.8

把sdk5.03和sdk3.0.8文件逐一比较,终于找到了罪魁祸首。
刚刚chanceword16(rf_enable_config13_reg,pref_rf_enable_config13_reg);
到setword16(rf_enable_config13_reg,0);
在func rf\u nfm\u禁用中,
一切都回来了。

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

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

斯普霍克
离线
最后一次露面:3年5个月前
加入:2016-03-03 17:25
你确定这是你要的吗

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

我遇到了你的确切问题。

虽然我搜索过,但rf\u nfm\u禁用被称为无处可用,所以我认为这不是原因。

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

嗨ggotta,

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

谢谢mt_dialog.

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

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

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

嗨ggotta,

我遇到了和你一样的问题,启用EXT_SLEEP_ON后,我的手机现在无法扫描DA,除非DA时间上电。

你最终如何解决问题?只有改变是真的:
刚刚chanceword16(rf_enable_config13_reg,pref_rf_enable_config13_reg);
到setword16(rf_enable_config13_reg,0);
in-func rf\u nfm\u禁用

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

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

嗨smdzjl007,

如前所述,rf_nfm_disable与sleep无关,而是与默认禁用的近域模式有关。为了使580处于休眠模式,只有app_default_sleep_mode = ARCH_EXT_SLEEP_ON;足以让设备进入睡眠模式。你使用的是什么SDK,你是在开发工具包上还是在定制板上?如果你只能扫描设备几秒钟,那么要么是你的低功耗时钟有问题,要么是调试器连接到你的设备上,阻止它进入睡眠,如果你使用的是SDK 5.0.4之前的SDK。

谢谢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 11: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 = {
.ddr_src = gapm_public_addr,
.renew_dur = 0,
.ddr = {0x1,0x2,0x3,0x4,0x5,0x6},
.intv_min = 1000, // 625ms (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_至_双插槽(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 11:34
嗨smdzj007,

嗨smdzj007,

我建议不要修改任何东西(为了确认580没有广告的原因不是fw),在user_config.h文件中,使用const static sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON运行相同的示例。并检查如果你这样做是设备广告,如果它是,你将必须设置睡眠模式总是关闭(ARCH_SLEEP_OFF)。做以上的事情,然后让我知道。另外,请让我知道,如果您正在使用自定义板或开发工具包,如果您正在使用外部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团队,

与之前的同事核对后,他告诉我我们的设计是基于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发现

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

谢谢并致以最良好的问候,

mt_dialog.
离线
最后一次露面:6个月3周前
职员
加入:2015-06-08 11: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年11月15日,X XDK版本X释放了,最近,如果我需要将微信的参考设计SDK源升级为5.0.4 SDK我应该做什么程序?

谢谢并致以最良好的问候,

mt_dialog.
离线
最后一次露面:6个月3周前
职员
加入: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.
离线
最后一次露面: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_注册表配置为XTAL16_BIAS_SH_ENABLE register吗?

谢谢并致以最良好的问候

依恋:
mt_dialog.
离线
最后一次露面:6个月3周前
职员
加入:2015-06-08 11: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_睡眠模式行为正确,那么在14580进入延长睡眠或深度睡眠后,我应该如何启用自动唤醒功能?要添加一个XTL32定时器回调函数或其他什么?我应该使用哪个示例项目作为参考?

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

谢谢并致以最良好的问候,

Qinjiny_Dialog
离线
最后一次露面:3个月3周前
职员
加入:2016-11-01 05:47
嗨smdzjl007,

嗨smdzjl007,

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

比尔,

SMDZJL007.
离线
最后一次露面:4年2个月前
加入:2015-08-04 15:07
谢谢你的反馈,秦洁妮

谢谢你的反馈,来自Dialog团队的Qinjiny,

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

静态常量结构arch\u main\u loop\u回调用户\u app\u main\u loop\u回调={
.app_before_sleep=我的_app_enable_XTAL32_时钟,
.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 11:34
嗨smdzjl007,

嗨smdzjl007,

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

  • User_app_adv_start() ->一个ke_timer以adv_data_update_timer_cb()作为处理程序启动,并在经过时执行。
  • 当时间流逝时,执行adv_data_update_timer_cb()并停止发布过程。
  • 当广告过程停止时,将调用用户\u app\u adv\u undirect\u complete()处理程序。
  • 在user_app_adv_undirect_complete()中,调用函数ARCH_BLE_EXT_WAKEUP_ON()以防止以稳定间隔唤醒580,并且APP_BUTTON_ENABLE()设置唤醒定时器和用于唤醒以及相应的回调的相应GPIO为了醒来的事件。

谢谢mt_dialog.

梁云浩
离线
最后一次露面:3年7个月前
加入:2016-03-05 13: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 11:34
梁云豪你好,,

梁云豪你好,,

请不要在不相关的话题上发表问题,你可以创建一个新的话题。

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

谢谢mt_dialog.

zhounaichun
离线
最后一次露面:3年9个月前
加入:2017-07-17 02:54
这很有效!!!

这很有效!!!
我的问题是:当我设置延长睡眠模式时,我的手机无法连接到我的ble设备,但如果我设置睡眠模式=拱睡眠,这是正常的。然后我将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 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.