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> app_default_sleep_mode的变化值,以在ARCH_EXT_SLEEP_ON user_config.h
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_对话框
离线
最后一次见到:6个月3个星期前
工作人员
加入:2015-06-08 11:34
嗨kurbylee,

嗨kurbylee,

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

谢谢你的对话

库比利
离线
最后一次见到: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>烧坏后,我总是通过repower重启板;
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_对话框
离线
最后一次见到:6个月3个星期前
工作人员
加入:2015-06-08 11:34
嗨kurbylee,

嗨kurbylee,

我有一个新的5.0.3 SDK再次测试您的设置和图像刻录到闪存,它通常在复位并通过拔下电源启动。您可以通过使用KEIL到donwload代码,如果是是因为它应该是设备的广告?

谢谢你的对话

库比利
离线
最后一次见到: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通电时扫描DA一次,那么手机将永远找不到DA;

今天,我做了一个测试,我在主功能中添加了一个led开关:(P07连接了一个led)
1> app\u default\u sleep\u mode=ARCH\u sleep\u OFF在user\u config.h中
和#undef CFG_DEVELOPMENT_DEBUG
#在da1458x_config_basic.h中定义CFG_WDOG(更多测试:)
2> 在arch_main.c中:
int main_func(无效)
{
睡眠模式\u t睡眠模式;
system_init();
GPIO_ConfigurePin(GPIO_PORT_0,GPIO_PIN_7,OUTPUT PID_GPIO,FALSE);
而(1)
{
uint32_t i;
........................
如果(((! BLE_APP_PRESENT) & & (check_gtl_state ())) | |
(BLE_APP_PRESENT))
{
GPIO_设置激活(GPIO_端口0、GPIO_引脚7);
I =的0xFFFFF;
而(我)我--;
/ /禁用中断
GLOBAL_INT_STOP ();
......................
......................
......................
gpio_setinactive(gpio_port_0,gpio_pin_7);
I =的0xFFFFF;
而(我)我--;
global_int_start();
}
.....
}
3> 现在,我可以看到led灯亮起,手机将无法扫描它(应用程序默认睡眠模式=拱睡眠关闭)

4> 若我使app_default_sleep_mode=ARCH_EXT_sleep_ON,手机将立即扫描并连接;

所以我对结果感到困惑:
当我添加led开关时,DA正常,应用程序\默认\睡眠\模式=拱门\外部\睡眠\开启(由于WDOG的原因,它将在几秒钟后断开连接)
当我删除led toggle,DA是正常的app_default_sleep_mode=ARCH_SLEEP_OFF;

我认为有一个与计时器/时间间隔等有关的冲突。。。对于设置应用程序\默认\睡眠\模式,但我没有找到它:(

另一个信息:当我取消wdog时,led将闪烁5次,然后在app_default_sleep_mode=ARCH_EXT_sleep_ON的情况下保持亮起

另一个infor:通过toggle led,我发现应用程序进入无限循环while(!ble_deep_sleep_stat_getf());====>in 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禁用中,
一切都恢复正常了。

戈塔
离线
最后一次见到:1个月3周前
加入:2016年2月20日20:10
亲爱的团队对话框,

亲爱的团队对话框,
你能解释一下如何做的效果如何?什么是正确的吗?

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

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

我遇到了和你一样的问题。

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

MT_对话框
离线
最后一次见到:6个月3个星期前
工作人员
加入:2015-06-08 11:34
嗨ggotta,

嗨ggotta,

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

谢谢你的对话

戈塔
离线
最后一次见到:1个月3周前
加入:2016年2月20日20:10
你好,

你好,
谢谢你的细节。
我启用了延长睡眠模式并刷新了DA。之后,我无法通过JTAG进行连接。但后来我又找到了更多的答案。它现在正在工作。
-gotta

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_对话框
离线
最后一次见到:6个月3个星期前
工作人员
加入:2015-06-08 11:34
嗨smdzjl007,

嗨smdzjl007,

如上所述,在以前的评论中提到,该rf_nfm_disable没有与睡眠,但与默认情况下禁用近场模式做。为了将在睡眠模式下仅app_default_sleep_mode = ARCH_EXT_SLEEP_ON 580;足以使设备处于睡眠模式。什么是SDK您正在使用,并且你在开发工具包或定制电路板experincing呢?如果你能够扫描设备仅几秒钟,然后要么什么是错的与你的低功耗时钟或连接到您的设备,并阻止其进入睡眠状态debuuger停留如果你使用之前SDK的SDK5.0.4。

谢谢你的对话

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_对话框
离线
最后一次见到:6个月3个星期前
工作人员
加入:2015-06-08 11:34
嗨smdzji007,

嗨smdzji007,

rf_nfm_disable()函数与睡眠没有任何关系,如果你移动到新的SDK 5.0.4,调试器在睡眠期间没有被禁用,所以即使调试器保持连接,你的设备也应该继续发布。如果通过移动到新的SDK不帮助和你有一个自定义董事会检查LP时钟的设置应该晶体或RCX,如果你操作下巴克模式和开关RCX,然后你可以看到广告,那么你的问题是你自定义的外部XTAL32董事会。

SDK负责设备在睡眠模式下停留多长时间以及何时唤醒,您所要做的就是设置广告和连接间隔,SDK将负责其余部分,并将系统配置为按时唤醒和睡眠。

谢谢你的对话

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

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

我试图修改user_config.h用于广告和连接区间如下,实际user_connection_param_conf没有改变:

Static const struct advertise_configuration user_adv_conf = {
.addr\u src=GAPM\u PUBLIC\u addr,
.renew_dur = 0,
.addr={0x1,0x2,0x3,0x4,0x5,0x6},
.intv_min = 1000,// 625毫秒(1000个* 0.625ms)
.intv_max = 2000,// 1250毫秒(2000 * 0.625ms)
.channel_map=0x7,
.mode=可发现的间隙,
.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_对话框
离线
最后一次见到:6个月3个星期前
工作人员
加入:2015-06-08 11:34
嗨smdzj007,

嗨smdzj007,

我建议不要做任何修改(为了验证该580不是广告的原因是不是FW),只取BLE例如,从5.0.4的是,它运行至睡眠模式(常量静态sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON)在user_config.h文件还运行用常量静态sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF相同的例子;检查如果你这样做是器械广告如果确实如此,你必须始终设置睡眠模式关闭(ARCH_SLEEP_OFF)。做好上面,让我知道。也请让我知道,如果你使用的是定制电路板或开发工具包,如果你使用的是外部XTAL或与您的RCX操作。

谢谢你的对话

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

谢谢,MT_Dialog团队!

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

他是用580开发工具包亲。我的设计也使用对话的参考设计与外部时钟XTAL。它工作正常,如果关掉睡觉。

无论如何,我会再次尝试下载5.0.4 SDK的例子来看看有什么区别或没有。

同时,可以确认我以前对广告和连接间隔调整的问题吗?那些是2层结构是否正确?是我的时间间隔设置有效?

谢谢并致以最良好的问候

smdzjl007
离线
最后一次见到:4年2个月前
加入:2015-08-04 15:07
嗨,MT_对话小组,

嗨,MT_对话小组,

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

我尝试下载微信sdk参考设计并将其运行到睡眠模式(const static sleep\u state\u t app\u default\u sleep\u mode=ARCH\u EXT\u sleep\u ON;)在user_config.h文件中。这个问题和我的一样,设备睡眠,智能手机应用程序AirSyncDebugger无法发现

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

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

MT_对话框
离线
最后一次见到:6个月3个星期前
工作人员
加入:2015-06-08 11:34
嗨smdzjl007,

嗨smdzjl007,

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

-我不明白你的问题,你说怎么替换fw是什么意思?你可以通过JTAG直接运行一个SDK示例,或者你可以通过UART下载示例的。hex文件,或者如果你有一个flash,你可以刻制flash,在上电580将从flash下载代码。

谢谢你的对话

smdzjl007
离线
最后一次见到:4年2个月前
加入:2015-08-04 15:07
嗨,MT_对话小组,

嗨,MT_对话小组,

问题来自这样一个事实:微信参考设计在11月15日发布了14580 SDK版本x,因为最近有新的14580 SDK版本5.0.4,如果我需要将微信参考设计SDK源升级到5.0.4 SDK,我应该做什么程序?

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

MT_对话框
离线
最后一次见到:6个月3个星期前
工作人员
加入:2015-06-08 11:34
嗨smdzji007,

嗨smdzji007,

根据fw所在的位置以及您使用的fw是dialog提供的微信,您应该编译代码并下载到您的设备上。如果设备使用闪存或EEPROM存储器来加载fw,则可以通过智能代码段工具,通过JTAG或UART(取决于设备可用的接口)擦除和重新启动设备。如果微信在OTP中被烧掉,您将无法更新OTP,因为您只能对其进行一次编程。您还可以通过keil和JTAG接口将新的fw直接下载到系统内存来测试新的源代码(同样,如果此接口在您的设备上可用,您也可以在这种情况下调试代码),您还可以通过UART通过智能代码段工具将代码下载到系统内存中。

谢谢你的对话

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_对话框
离线
最后一次见到:6个月3个星期前
工作人员
加入:2015-06-08 11:34
嗨smdzji007,

嗨smdzji007,

ble_app_sleepmode在一段特定的时间(几秒钟)后会进入永久睡眠,当启用睡眠时XTAL16将被禁用,您可以尝试使用另一个项目,该项目不会持续睡眠,但会在预定义的时间段醒来,以便再次发布和检查。你不需要明确配置CLK_16M_REG, SDK会在外围init()函数中处理它。

此外,特定项目还实现了一个按钮按下,当按下该按钮时,设备将唤醒并继续播发,必须尝试按下该按钮以唤醒设备。

另外,请不要在不相关的话题上发表问题,如果有任何后续问题,你可以随时创建一个新的帖子。

谢谢你的对话

smdzjl007
离线
最后一次见到:4年2个月前
加入:2015-08-04 15:07
嗨MT_dialog,

嗨MT_dialog,

感谢您在我的电路板上确认ble_app_睡眠模式行为正确,那么在14580进入延长睡眠或深度睡眠后,我应该如何启用自动唤醒功能?要添加一个XTL32定时器回调函数或其他什么?我应该使用哪个示例项目作为参考?

我之所以在这里提出问题,是因为我发现我的问题与当前的主题相关,我找不到创建新主题的按钮在哪里。如果我的帖子给您带来了不便,我需要向您道歉。

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

Qinjiny_Dialog
离线
最后一次见到:三个月三个星期前
工作人员
加入:2016-11-01 05:47
嗨smdzjl007,

嗨smdzjl007,

你可以试试功能简易计时器如果你指定的睡眠时间不是太长(比如小于5分钟)

比尔,

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

感谢您的反馈,Qinjiny从对话框的球队,

正如先前的支持工程师所说,当睡眠被启用时,XTAL16时钟被禁用,app_easy_定时器是否能正常工作?我是否应该编写一个回调函数,通过注册如下回调函数来启用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中找到了以下定义

/****************************************************************************************************************/
/*从运行主机应用程序的外部处理器中唤醒。*/
/****************************************************************************************************************/
#未定义CFG_外部_唤醒

/****************************************************************************************************************/
/*向GTL发送消息时唤醒外部处理器*/
/****************************************************************************************************************/
#未定义CFG_唤醒_外部处理器

不知道是否与你以前的答案是,ble_app_sleepmode陷入永久休眠状态,直到外部按下按钮触发唤醒对齐。那么,如何这个示例代码来取消定义外部唤醒,但使用外部唤醒?

我困惑

此致,
SMDZJL.

MT_对话框
离线
最后一次见到: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用于醒来醒来以及对应的回调事件。

谢谢你的对话

梁云豪
离线
最后一次见到:3年7个月前
加入:2016-03-05 13:38
嗨,MT_Dialog,

嗨,MT_Dialog,

现在我使用Da14580 pro工具包,并设置app_default_sleep_mode为ARCH_SLEEP_OFF。它可以很好地工作,当我烧十六进制文件SPI falsh,按复位按钮和拉子板从母板。(它由外部电池供电。)可以从我的手机上扫描。但是当我设置app_default_sleep_mode为ARCH_EXT_SLEEP_ON时,无法从我的手机上扫描。还有其他需要设置的代码吗?当芯片进入休眠模式时使用哪个振荡器?谢谢。

MT_对话框
离线
最后一次见到:6个月3个星期前
工作人员
加入:2015-06-08 11:34
梁云豪你好,,

梁云豪你好,,

请不要张贴问题在无关的话题,你总是可以创建一个新的线程。

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

谢谢你的对话

zhounaichun
离线
最后一次见到:3年9个月前
加入:2017年7月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_对话框
离线
最后一次见到:6个月3个星期前
工作人员
加入:2015-06-08 11:34
嗨zhounaichun,

嗨zhounaichun,

好的,如果你在开发模式下,并且你已经设置了ARCH_DEEP_SLEEP_,并且你还将内存配置更改为CFG_MEM_MAP_DEEP_SLEEP(取消定义CFG_MEM_MAP_EXT_SLEEP并设置CFG_MEM_MAP_DEEP_SLEEP),那么你应该能够在深度睡眠模式下测试fw。但要查看设备的正确功耗,您必须使用fw刻录OTP,因此每次唤醒时,图像都会从OTP复制到系统RAM,因为在深度睡眠中,系统RAM将关闭。

谢谢你的对话