背景
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>将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>手机无法扫描除电源DA外的DA;
2> Powered 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>烧伤后,我总是通过重力重新启动董事会;
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.
嗨Kurbylee,
我再次使用Fresh 5.0.3 SDK测试了您的设置并将图像刻录到闪光灯,它通常在重置时启动,并通过卸下电源。您是否能够使用keil,如果是的,请使用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 powering的时间扫描da.and,然后手机永远不会找到da;
今天,我做了一个Anthor测试,我在main_func中添加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(void)
{
sleep_mode_t sleep_mode;
system_init();
gpio_configurepin(gpio_port_0,gpio_pin_7,输出,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);
我= 0xfffff;
(i)我 - ;
//禁用中断
global_int_stop();
......................
......................
......................
gpio_setinactive(gpio_port_0,gpio_pin_7);
我= 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与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)中
比较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.
你好,
谢谢你的细节。
我启用了扩展睡眠模式并闪烁DA。之后我无法通过JTAG连接。但后来我经历了一些答案,我找到了解决方案。它现在正在运作。
- 盖特
嗨ggotta,
我与您遇到同样的问题,在启用EXT_SLEEP_ON之后,我的手机无法扫描DA,除了LIT时间的电源。
你最终如何解决问题?只有改变是真的:
刚刚chanceword16(rf_enable_config13_reg,pref_rf_enable_config13_reg);
到setword16(rf_enable_config13_reg,0);
在Func rf_nfm_disable.
或其他时间设置也是必要的?
嗨smdzjl007,
如上所述在上面的注释中,RF_NFM_DISABLE与睡眠不一致,但默认情况下禁用近场模式。为了仅在睡眠模式下放置580,app_default_sleep_mode = arch_ext_sleep_on;足以将设备放在睡眠模式下。您正在使用的SDK是什么,您是否在DEV套件上或在定制董事会上进行实验?如果您能够仅扫描该设备几秒钟,那么低功耗时钟或德国uguger留在您的设备上的禁止留下,如果您在SDK之前使用SDK,则防止其睡眠状态5.0.4。
谢谢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时钟的设置应为XTAL或RCX,如果您在降压模式下运行,请切换到RCX,然后您就可以看到广告,那么您的问题是您在自定义板上的外部XTAL32。
SDK照顾设备将留在睡眠模式和何时醒来的时间,您所要做的就是设置广告和连接间隔,SDK将照顾其余的并配置系统按时唤醒和睡觉也是如此。
谢谢mt_dialog.
谢谢,MT_Dialog团队,非常及时反馈!
我尝试修改user_config.h进行广告和连接间隔,如下所示,实际user_connection_param_conf未更改:
static const struct _configuration user_adv_conf = {
.ddr_src = gapm_public_addr,
.grenew_dur = 0,
.ddr = {0x1,0x2,0x3,0x4,0x5,0x6},
.intv_min = 1000,// 625 ms(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_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广告消息,然后睡眠,我的智能手机无法扫描设备。
我应该修改其他内容,以使其睡眠/唤醒作为正常可穿戴设备?
谢谢和最好的问候
嗨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.
谢谢,MT_Dialog团队!
我将我的.hex文件上传到其他对话框支持工程师,他看到与我的结果相同。
https://support.dialog-semicondiondiondum/smartsnippets-spi-flash-program ...
他正在使用580 dev kit pro。我的设计也使用对话框参考设计与外部XTAL时钟。如果关闭睡眠,它可以正常工作。
无论如何,我会再次尝试下载5.0.4 sdk示例以查看任何区别。
与此同时,您可以确认我以前的关于广告和连接间隔调整的问题吗?这两个结构是否正确?我的间隔设置有效吗?
谢谢和最好的问候
嗨mt_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?
谢谢,最好的问候,
嗨smdzjl007,
- 是的,在延长睡眠模式下测试微信经运行,并且当设备处于睡眠模式时,我也能够看到广告字符串。
- 我没有得到这个问题,你是什么意思如何更换FW?您可以通过JTAG直接运行其中一个SDK示例,或者您可以通过UART下载示例的.hex文件,或者如果您有闪存,可以刻录闪光灯,电涌580将从闪存下载代码。
谢谢mt_dialog.
嗨mt_dialog团队,
问题来自于:近期11.15年11月15日,X XDK版本X释放了,最近,如果我需要将微信的参考设计SDK源升级为5.0.4 SDK我应该做什么程序?
谢谢,最好的问候,
嗨smdzji007,
根据FW所在的位置,如果您使用的fW是由对话框提供的WeChat,则应编译代码并将其下载到您的设备。如果设备使用闪存或EEPROM内存以加载FW,可以通过JTAG或VIA UART通过智能片段工具擦除和销售设备(取决于设备可用的接口)。如果在OTP中刻录微信燃烧,您不会能够更新OTP,因为您只能编程一次。您还可以通过直接通过Keil和JTAG接口下载新FW来测试新源代码(再次如果在您的设备上使用此界面,您也可以在该案例中调试代码)也可以下载代码通过智能片段工具通过UART的Sysram。
谢谢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设备
你能帮助暗示更麻烦的射击吗?
BTW,应该在睡眠前/之后配置clk_16m_reg作为xtal16_bias_sh_enable寄存器吗?
谢谢和最好的问候
嗨smdzji007,
BLE_APP_SLEEPMODE在特定时间段内(几秒钟)后(几秒钟)和XTAL16启用时禁用XTAL16后,您可以尝试使用不断睡眠的另一个项目,但在预定义的时间内唤醒以进行广告再次检查。您不必配置CLK_16M_REG默认,SDK将在PERIPH_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_resume_from_sleep = my_app_disable_xtal32_clock,
};
嗨mt_dialog,
我重新研究BLE_APP_SLEEPMODE示例,并在DA1458x_config_Advance.h中找到以下定义
/ **************************************************************************************************************** /
/ *从外部处理器运行主机应用程序的唤醒。* /
/ **************************************************************************************************************** /
#undef cfg_external_wakeup.
/ **************************************************************************************************************** /
/ *当消息发送到GTL * /时,唤醒外部处理器
/ **************************************************************************************************************** /
#undef cfg_wakeup_ext_processor.
不确定是否与先前的答案对齐,即BLE_APP_SLEEPMODE落入永久睡眠状态,直到外部按钮按触发唤醒。那么,这个示例代码如何拒绝外部唤醒,但使用外部唤醒?
对我令人困惑
此致,
SMDZJL.
嗨smdzjl007,
您在那里看到的定义与BLE_APP_SLEEPMODE项目无关,但在580以完全嵌入模式(由SDK定义)时,使用外部唤醒。如果您有兴趣查看指示Pargulullar项目的代码,您可以检查以下内容:
谢谢mt_dialog.
嗨mt_dialog,
现在我使用da14580 pro套件,我将app_default_sleep_mode设置为arch_sleep_off。当我将十六进制文件刻录到SPI FALSH时,它可以很好地工作,按RESET按钮并将子板拉离母板。(它由外部电池供电。)可以从我的手机扫描。但是,当我将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(undefine cfg_mem_map_ext_sleep并设置cfg_mem_map_deep_sleep),那么您应该能够在深度睡眠模式下测试FW。但是要看到设备的适当功耗,您将不得不用FW刻录OTP,因此在每个唤醒中,图像将从OTP复制到Sysram,因为在深度睡眠中,Sysram将关闭。
谢谢mt_dialog.