[sdk5]关于外部睡眠的问题

32个员额/0个新员额
最后一篇
kurbylee.
离线
最后一次露面:3年10个月前
加入:2014-11-05 09:10
[sdk5]关于外部睡眠的问题

背景
1>项目名称:项目\ target_apps \ ble_examples \ ble_app_profile
2> #undef cfg_development_debug在da1458x_config_basic.h中
3>为了简化问题,评论行://#在user_profiles_config.h中包含“custs1.h”;
4> 在user_config.h中将app_default_sleep_mode的值更改为ARCH_EXT_sleep_ON
const static sleep_state_t app_default_sleep_mode = arch_ext_sleep_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
嗨,库比莉,

嗨,库比莉,

我已经测试了你的设置,它似乎工作良好。我想您正在使用智能片段烧录您的SPI,当您从智能片段提示时,您是否使您的设备可引导?烧录flash后,你重置你的板,以使引导加载程序运行和引导从你的SPI ?将app_default_sleep_mode设置为ARCH_EXT_SLEEP_ON就足以将设备设置为扩展休眠。当你不使用睡眠模式时,你能正确地看到你的设备吗?

谢谢mt_dialog.

kurbylee.
离线
最后一次露面:3年10个月前
加入:2014-11-05 09:10
嗨,mt_dialog

嗨,mt_dialog
1>是,我使用智能片段(Ver 3.9)将BLE_APP_PROFILE_580.HEX刻录为SPI,SDK Ver是DA1458x_sdk_5.0.3
2>我没有使用bootloader(secondery bootloader.hex),只需刻录ble_app_profile_580.hex使用smartsnippert并使其启动;我可以看到添加的可引导标志(8bytes以7050开头)
3> 烧完后,我总是用电源重启主板;
4>如果我将app_default_sleep_mode更改为arch_ext_sleep_off,它将非常好;
5> 当我使用sdk3.0.8时,无论是define/undef CFG\u EXT\u SLEEP,都没有问题

ps:我在DA1458X_SDK_5.0.2.1中打开相同的项目,然后得到与sdk5.3中相同的结果:(
库比利酒店

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

嗨,库比莉,

我用一个新的5.0.3 SDK再次测试了你的设置,并将映像刻录到闪存中,它在重置和断电时正常启动。您是否能够使用keil加载代码,如果是,设备广告是否应该如此?

谢谢mt_dialog.

kurbylee.
离线
最后一次露面:3年10个月前
加入:2014-11-05 09:10
谢谢你的对话

感谢MT_dialog提供您的信息。
但我没有解决这个问题:
我烧伤的应用十六进路与与app_default_sleep_mode=ARCH_SLEEP_OFF由smartSnippets 3.9,我可以得到预期的结果,DA运行正常,android手机可以扫描/连接/访问char它;
如果我更改app_default_sleep_mode = arch_ext_sleep_on,我只能在da powering的时间扫描da.and,然后手机永远不会找到da;

今天,我做了一个Anthor测试,我在main_func中添加LED切换:(P07连接LED)
1> app_default_sleep_mode = ash_config.h中的Arch_sleep_off.h
#undef CFG_开发_调试
#在da1458x_config_basic.h中定义CFG_WDOG(更多测试:)
2>在Arch_Main.c:
int main_func(void)
{
sleep_mode_t sleep_mode;
system_init ();
GPIO_配置引脚(GPIO_端口0、GPIO_引脚7、输出、PID_GPIO、假);
而(1)
{
uint32_t i;
........................
如果((!BLE_APP_PRESENT)和&(check_gtl_state())||
(现在有)
{
gpio_setactive(gpio_port_0,gpio_pin_7);
i=0xfffff;
(i)我 - ;
//禁用中断
全局_INT_STOP();
......................
......................
......................
GPIO_SetInactive (GPIO_PORT_0 GPIO_PIN_7);
i=0xfffff;
(i)我 - ;
GLOBAL_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正常,应用程序\默认\睡眠\模式=拱门\睡眠\关闭;

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

另一个信息:当我联系WDOG时,LED将闪烁5次,然后用app_default_sleep_mode = arch_ext_sleep_on保持灯

另一个信息:通过切换led,我发现应用程序进入无限循环,而(!ble_deep_sleep_stat_getf());==>处于func sleep_mode_t rwip_sleep(void)

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

逐一比较sdk5.03和sdk3.0.8文件,终于找到了罪犯。
只需更改SetWord16(RF_ENABLE_CONFIG13_REG, pre_rf_enable_config13_reg);
设置字16(RF_ENABLE_CONFIG13_REG,0);
在Func rf_nfm_disable,
一切都恢复正常。

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

亲爱的对话小组:,
你能解释一下它的作用吗?什么是正确的?

Sprhawk.
离线
最后一次露面:3年5个月前
加入:2016-03-03 17:25
你确定这是

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

我遇到了你的问题。

我搜索了,rf_nfm_disable叫做,所以我认为这不是原因。

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
嗨,戈塔,

嗨,戈塔,

我遇到了与您相同的问题,在启用EXT_SLEEP__ON后,我的手机现在无法扫描DA,除非在DA时间通电。

你最终如何解决问题?只有改变是真的:
只需更改SetWord16(RF_ENABLE_CONFIG13_REG, pre_rf_enable_config13_reg);
设置字16(RF_ENABLE_CONFIG13_REG,0);
在Func rf_nfm_disable.

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

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

嗨smdzjl007,

如上所述,rf_nfm_禁用与睡眠无关,而是与默认禁用的近场模式有关。为了将580置于睡眠模式,只有app_default_sleep_mode=ARCH_EXT_sleep_ON;足以将设备置于睡眠模式。您正在使用的SDK是什么,您正在体验吗这在开发工具包或自定义板上?如果您只能扫描设备几秒钟,则可能是低功耗时钟出了问题,或者如果您使用的是SDK 5.0.4之前的SDK,Debuger会一直连接到您的设备并阻止其进入睡眠状态。

谢谢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_禁用()函数不必对睡眠做任何事情,如果您移动到新的SDK 5.0.4,则在睡眠期间不会禁用调试器,因此即使调试器保持连接,您的设备也应继续播发。如果移动到新SDK没有帮助,并且您有一个自定义板,请检查LP时钟的设置是否应为XTAL或RCX(如果需要)在buck模式下运行,然后切换到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没有更改:

静态常量结构播发\u配置用户\u adv\u conf={
.ddr_src = gapm_public_addr,
.renew_dur=0,
.ddr = {0x1,0x2,0x3,0x4,0x5,0x6},
.intv_min=1000,//625毫秒(1000*0.625毫秒)
.intv_max=2000,//1250毫秒(2000*0.625毫秒)
.channel_map = 0x7,
.mode = gap_gen_discoverable,
.adv\u filt\u policy=adv\u ALLOW\u SCAN\u ANY\u CON\u ANY,
.peer_addr={0x1、0x2、0x3、0x4、0x5、0x6},
.peer\u addr\u type=0,
};

静态常量结构连接参数配置用户连接参数配置={
.intv_min=MS_至_双插槽(20),
.intv_max = ms_to_doubleslots(100),
.latency = 0,
.time\u out=毫秒到秒时间(125),
.ce_len_min=MS_至_双插槽(0),
.ce_len_max=MS_至_双插槽(0),
};

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

我应该修改其他内容,以使其睡眠/唤醒作为正常可穿戴设备?

谢谢和最好的问候

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

你好,smdzj007,

我建议不要修改任何东西(为了验证580没有广告的原因不是fw),只需从5.0.4原样中选取ble示例,并将其运行到睡眠模式(const static sleep\u state\u t app\u default\u sleep\u mode=ARCH\u EXT\u sleep\u ON;)在user\u config.h文件中,也运行相同的示例,其中const static sleep\u state\u t app\u default\u sleep\u mode=ARCH\u sleep\u OFF;并检查你是否这样做是设备广告,如果这样做,你将不得不设置睡眠模式总是关闭(拱_睡眠_关闭)。请完成以上操作并让我知道。另外,如果您使用的是定制板或开发工具包,如果您使用的是外部XTAL,或者您使用的是RCX,请告诉我。

谢谢mt_dialog.

smdzjl007
离线
最后一次露面:4年2个月前
加入:2015-08-04 15:07
谢谢,MT_Dialog团队!

谢谢,MT_Dialog团队!

我把我的.hex文件上传给其他对话框支持工程师,他看到的结果和我一样。
https://support.dialog-semicondiondiondum/smartsnippets-spi-flash-program ...

他正在使用580开发工具包专业版。我的设计也是使用对话框参考设计与外部XTAL时钟。如果关闭睡眠,效果很好。

无论如何,我将再次尝试下载5.0.4SDK示例,看看是否有任何区别。

同时,您能否确认我之前关于广告和连接间隔调整的问题?这两种结构是否正确?我的间隔设置是否有效?

谢谢和最好的问候

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参考设计是否测试了扩展睡眠模式?
-如何将使用dialog SDK的微信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_不带leep.jpg和16M_不带leep.jpg
如果启用睡眠,则只能看到32KHz信号:32K_with sleep.jpg

我使用的是SDK5.0.4,SDK示例文件夹中的ble_app_sleepmode。根据示例代码,唤醒持续时间为0.5s,因此应该非常快。但我的测试结果显示14580无法wakup,我无法从智能手机扫描14580设备

你能帮助暗示更麻烦的射击吗?

BTW,应该在睡眠前/之后配置clk_16m_reg作为xtal16_bias_sh_enable寄存器吗?

谢谢和最好的问候

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

你好,smdzji007,

ble_app_睡眠模式在特定时间段(几秒钟)后进入永久睡眠当启用睡眠时,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_对话
离线
最后一次露面:3个月3周前
职员
加入:2016-11-01 05:47
嗨smdzjl007,

嗨smdzjl007,

你可以试试这个功能app_easy_timer.如果指定的睡眠时间不太长(如5分钟以下)

布罗尔,

smdzjl007
离线
最后一次露面:4年2个月前
加入:2015-08-04 15:07
谢谢你的反馈,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\u resume\u from\u sleep=my\u app\u disable\u XTAL32\u时钟,
};

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_睡眠模式进入永久睡眠状态,直到外部按钮按下触发唤醒。那么,这个示例代码如何定义外部唤醒,但使用外部唤醒?

让我困惑

最好的问候,
smdzjl

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

嗨smdzjl007,

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

  • user_app_adv_start()->使用adv_data_update_timer_cb()作为处理程序启动ke_计时器,以在经过时执行。
  • 当时间流逝时,adv_data_update_timer_cb()执行并停止播发过程。
  • 当广告过程停止时,user_app_adv_undirect_complete()处理程序被调用。
  • 在user_app_adv_undirect_complete()中,调用函数arch_ble_ext_wakeup_on(),以防止580以稳定的间隔唤醒,app_按钮_enable()设置唤醒计时器和用于唤醒的相应GPIO,以及唤醒事件的相应回调。

谢谢mt_dialog.

梁云浩
离线
最后一次露面:3年7个月前
加入:2016-03-05 13:38
嗨mt_dialog,

嗨mt_dialog,

现在我使用Da14580 pro工具包,我将应用程序的默认睡眠模式设置为ARCH睡眠模式。当我将十六进制文件刻录到SPI falsh时,它可以正常工作,按下重置按钮,然后将子板从母板上拔下。(它由外部电池供电。)它可以从我的手机上扫描。但是当我将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.

周乃春
离线
最后一次露面:3年9个月前
加入:2017-07-17 02:54
那是工作!

那是工作!
我的问题:当我设置扩展睡眠模式时,我的手机无法连接到我的BLE设备,但如果我设置sleep_mode = arch_sleep_off,则是正常的。然后我将cfg_lp_clk(da458x_config_advance.h)的值从lp_clk_xxtal32更改为lp_clk_rcx20,即确定。
但我有另一个问题,即当我将睡眠模式设置为深睡眠时,我的手机就找不到BLE设备。
如果有人能告诉我为什么?

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

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

周乃春你好,,

嗯,如果您正在开发模式和您的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.