背景
1>项目名称:项目\ target_apps \ ble_examples \ ble_app_profile
2> #undef cfg_development_debug在da1458x_config_basic.h中
3>为了简化问题,注释行:
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>手机将无法扫描数据采集,除非在电源采集;
2> 接通DA电源后,我会尽快扫描使用手机,我会找到DA,但连接失败;除重置DA外,无法再扫描DA;
背景2:
基于上面的背景,打开看门狗,并在init中切换一个LED,我发现芯片将再次重置,所以手机将永远
扫描DA,但连接失败。
我如何正确使用Arch_ext_sleep_on ??
关键词:
设备:
嗨kurbylee,
我测试了你的设置,它似乎工作正常。我想你正在使用智能片段燃烧你的spi,你可以让你的设备从智能片段引出时启动吗?刻录闪光后,您可以重置电路板,以便引导加载程序从SPI运行和启动?通过将App_default_sleep_mode设置为Arch_ext_sleep_on足以将您的设备设置为扩展睡眠状态。当您不使用睡眠模式时,您是否能够正确地查看您的设备?
由于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>烧坏后,我总是通过repower重启板;
4>如果我将app_default_sleep_mode更改为arch_ext_sleep_off,它将非常好;
5>当我使用sdk3.0.8时,没有出现问题,是否定义/undef CFG_EXT_SLEEP
ps:我在DA1458X_SDK_5.0.2.1中打开相同的项目,然后得到与sdk5.3中相同的结果:(
库比利酒店
嗨kurbylee,
我用一个新的5.0.3 SDK再次测试了你的设置,并将映像刻录到闪存中,它在重置和断电时正常启动。您是否能够使用keil加载代码,如果是,设备广告是否应该如此?
由于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一次。电话永远找不到地检官;
今天,我做了一个Anthor测试,我在main_func中添加LED切换:(P07连接LED)
1 > app_default_sleep_mode = ARCH_SLEEP_OFF user_config.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;
虽然(我)我;
/ /禁用中断
GLOBAL_INT_STOP ();
......................
......................
......................
gpio_setinactive(gpio_port_0,gpio_pin_7);
i=0xfffff;
虽然(我)我;
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 toggle,DA是正常的app_default_sleep_mode=ARCH_SLEEP_OFF;
我认为这与计时器/间隔等有关。设置app_default_sleep_mode,但我没有找到它:(
另一个信息:当我联系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)
逐一比较sdk5.03和sdk3.0.8文件,终于找到了罪犯。
刚刚chanceword16(rf_enable_config13_reg,pref_rf_enable_config13_reg);
SetWord16 (RF_ENABLE_CONFIG13_REG, 0);
在Func rf_nfm_disable,
一切都恢复正常了。
亲爱的团队对话框,
你能解释一下它的作用吗?什么是正确的?
你确定这是你问这个问题的原因吗?
我遇到了和你一样的问题。
我搜索了,rf_nfm_disable叫做,所以我认为这不是原因。
嗨ggotta,
你能解释一下你的问题吗?在SDK 5中,如果你想在睡眠模式下启用580,你需要做的就是设置默认睡眠模式为ARCH_EXT_SLEEP_ON。rf_nfm_disable与近域模式操作而不是睡眠操作有关。默认情况下,SDK中不会调用该函数,它只是用于禁用近域模式的API(如果启用的话)。
由于MT_dialog
你好
谢谢你的细节。
我启用了延长睡眠模式,并闪烁了地检。在那之后我无法通过JTAG连接。但后来我又看了一些答案,找到了解决办法。它现在正在工作。
-必须
嗨Ggotta,
我遇到了与您相同的问题,在启用EXT_SLEEP__ON后,我的手机现在无法扫描DA,除非在DA时间通电。
你最后是如何解决这个问题的?只有改变是正确的吗?
刚刚chanceword16(rf_enable_config13_reg,pref_rf_enable_config13_reg);
SetWord16 (RF_ENABLE_CONFIG13_REG, 0);
在Func rf_nfm_disable.
或者其他时间设置也是必要的?
嗨smdzjl007,
如上一评论中所述,rf_nfm_禁用与睡眠无关,而是与默认禁用的近场模式有关。为了使580进入睡眠模式,只有应用程序默认睡眠模式=ARCH\U EXT\U sleep\U ON;足够将设备置于睡眠模式。您正在使用的SDK是什么,您是在开发工具包上还是在定制板上体验这一点?如果您只能扫描设备几秒钟,则可能是您的低功耗时钟出现问题,或者如果您使用的是SDK 5.0.4之前的SDK,则Debugger会一直连接到您的设备并阻止其进入睡眠状态。
由于MT_dialog
亲爱的mt_dialog团队,
谢谢你的帮助。是的,我发现rf_nfm_disable函数中的修改根本不起作用。我使用的是SDK 5.0.3。如何定位与时钟低功率或其他原因有关的问题?我应该升级到SDK 5.0.4吗?
另一个问题,da14580输入到睡眠模式后,控制醒来的定时器设置从睡眠中?控制持续时间的计时器是什么?
谢谢,最好的问候,
嗨smdzji007,
rf_nfm_disable()函数与睡眠没有任何关系,如果你移动到新的SDK 5.0.4,调试器在睡眠期间没有被禁用,所以即使调试器保持连接,你的设备也应该继续发布。如果通过移动到新的SDK不帮助和你有一个自定义董事会检查LP时钟的设置应该晶体或RCX,如果你操作下巴克模式和开关RCX,然后你可以看到广告,那么你的问题是你自定义的外部XTAL32董事会。
SDK照顾设备将留在睡眠模式和何时醒来的时间,您所要做的就是设置广告和连接间隔,SDK将照顾其余的并配置系统按时唤醒和睡觉也是如此。
由于MT_dialog
感谢MT_Dialog团队,非常及时的反馈!
我试图修改user_config.h作为广告和连接间隔,如下所示,实际的user_connection_param_conf没有更改:
Static const struct advertise_configuration user_adv_conf = {
.addr_src = GAPM_PUBLIC_ADDR,
.renew_dur=0,
.addr = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6},
.intv_min=1000,//625毫秒(1000*0.625毫秒)
.intv_max=2000,//1250毫秒(2000*0.625毫秒)
.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\u addr\u 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\u out=毫秒到秒时间(125),
.ce_len_min=MS_至_双插槽(0),
.ce_len_max=MS_至_双插槽(0),
};
但测试结果仍然失败,设备可以在很短的时间内播放BLE广告信息,然后睡眠,我的智能手机无法再扫描设备。
我应该修改其他内容,以使其睡眠/唤醒作为正常可穿戴设备?
谢谢和最好的问候
你好,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
谢谢,MT_Dialog团队!
我把我的.hex文件上传给其他对话框支持工程师,他看到的结果和我一样。
https://support.dialog-semicondiondiondum/smartsnippets-spi-flash-program ...
他正在使用580开发工具包专业版。我的设计也是使用对话框参考设计与外部XTAL时钟。如果关闭睡眠,效果很好。
无论如何,我将再次尝试下载5.0.4SDK示例,看看是否有任何区别。
同时,你能证实我之前关于广告和连接间隔调整的问题吗?这两种结构正确吗?我的间隔设置有效吗?
谢谢和最好的问候
嗨MT_Dialog团队,
在与以前的同事核实后,他告诉我我们的设计基于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参考设计?
如何将微信SDK参考设计中使用的对话SDK替换为5.0.4标准SDK?
谢谢,最好的问候,
嗨smdzjl007,
- 是的,在延长睡眠模式下测试微信经运行,并且当设备处于睡眠模式时,我也能够看到广告字符串。
-我不明白你的问题,你说怎么替换fw是什么意思?你可以通过JTAG直接运行一个SDK示例,或者你可以通过UART下载示例的。hex文件,或者如果你有一个flash,你可以刻制flash,在上电580将从flash下载代码。
由于MT_dialog
嗨MT_Dialog团队,
问题来自于以下事实:微信参考设计是在11月15日随14580 SDK版本x发布的,因为最近有新的14580 SDK版本5.0.4,如果我需要升级微信参考设计SDK源代码到5.0.4 SDK,我应该做什么步骤?
谢谢,最好的问候,
嗨smdzji007,
取决于fw的位置,如果你使用的fw是dialog提供的微信,你应该编译代码并下载到你的设备上。如果设备使用闪存或EEPROM内存来加载fw,您可以通过智能片段工具擦除和重新刻录设备,可以通过JTAG或UART(取决于您的设备可用的接口)。如果微信在OTP烧伤,你不能更新OTP,因为你只能编写它一次。你也可以测试新的源代码通过直接下载新的固件sysram凯尔和JTAG接口(如果这个接口可以在你的设备,你也可以调试代码在这种情况下)也可以下载代码到sysram通过UART智能片段的工具。
由于MT_dialog
亲爱的MT_dialog,
今天我请我的同事测量时钟输出信号。你可以找到附件3 jpg。
如果禁用睡眠,我们可以测量32KHz和16MHz时钟:32K_withoutsleep.jpg和16M_withoutsleep.jpg
如果启用睡眠,则只能看到32KHz信号:32K_with sleep.jpg
我使用的是SDK5.0.4,来自SDK示例文件夹的ble_app_sleepmode。根据示例代码,唤醒时间是0.5s,所以它应该是非常快的。但我的测试结果显示,14580没有唤醒,我无法从智能手机扫描14580设备
你能帮助暗示更麻烦的射击吗?
BTW,应该在睡眠前/之后配置clk_16m_reg作为xtal16_bias_sh_enable寄存器吗?
谢谢和最好的问候
嗨smdzji007,
ble_app_sleepmode在一段特定的时间(几秒钟)后会进入永久睡眠,当启用睡眠时XTAL16将被禁用,您可以尝试使用另一个项目,该项目不会持续睡眠,但会在预定义的时间段醒来,以便再次发布和检查。你不需要明确配置CLK_16M_REG, SDK会在外围init()函数中处理它。
此外,特定项目也实现了按钮按下,当按下设备唤醒并继续宣传,必须尝试按下该按钮以唤醒设备。
另外,请不要在不相关的话题上发表问题,如果有任何后续问题,你可以随时创建一个新的帖子。
由于MT_dialog
嗨MT_dialog,
如果确认BLE_APP_SLEEPMODE行为在我的电路板上是正确的,那么我应该在14580进入延伸或深睡眠后启用自动唤醒添加一个XTL32定时器回拨功能或还有什么?我应该使用哪个示例项目参考?
我之所以在这里提出问题,是因为我发现我的问题与当前的主题相关,我找不到创建新主题的按钮在哪里。如果我的帖子给您带来了不便,我需要向您道歉。
谢谢,最好的问候,
嗨smdzjl007,
你可以试试这个功能app_easy_timer如果你指定的睡眠时间不是太长(比如小于5分钟)
布罗尔,
感谢对话团队的反馈,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时钟,
};
嗨mt_dialog,
我重新研究了ble_app_sleepmode示例,并在da1458x_config_advance.h中找到了下面的定义
/****************************************************************************************************************/
/*从运行主机应用程序的外部处理器中唤醒。*/
/****************************************************************************************************************/
# undef CFG_EXTERNAL_WAKEUP
/****************************************************************************************************************/
/ *当消息发送到GTL * /时,唤醒外部处理器
/****************************************************************************************************************/
# undef CFG_WAKEUP_EXT_PROCESSOR
不确定是否与您之前的答案一致,即ble_app_睡眠模式进入永久睡眠状态,直到外部按钮按下触发唤醒。那么,这个示例代码如何定义外部唤醒,但使用外部唤醒?
我困惑
此致,
SMDZJL.
嗨smdzjl007,
您在那里看到的定义与BLE_APP_SLEEPMODE项目无关,但在580以完全嵌入模式(由SDK定义)时,使用外部唤醒。如果您有兴趣查看指示Pargulullar项目的代码,您可以检查以下内容:
由于MT_dialog
嗨mt_dialog,
现在我使用Da14580 pro工具包,并设置app_default_sleep_mode为ARCH_SLEEP_OFF。它可以很好地工作,当我烧十六进制文件SPI falsh,按复位按钮和拉子板从母板。(它由外部电池供电。)可以从我的手机上扫描。但是当我设置app_default_sleep_mode为ARCH_EXT_SLEEP_ON时,无法从我的手机上扫描。还有其他需要设置的代码吗?当芯片进入休眠模式时使用哪个振荡器?谢谢。
嗨梁云浩,
请不要在不相关的主题中发布问题,你总是可以创建一个新的线程。
关于您的问题,尝试直接从Keil运行项目,并在延长睡眠状态并检查您是否能够查看您的设备广告,也尝试使用SDK示例进行操作并检查。当设备处于睡眠模式时,使用LP时钟,这意味着设备与外部XTal32或使用RCX操作,可以从DA1458x_config_Advanced.h文件中的CFG_LP_CLK定义配置此选项。
由于MT_dialog
那是工作!
我的问题:当我设置扩展睡眠模式时,我的手机无法连接到我的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
设备:不是非官方的设备
嗨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