你好,
我们根据“da14580_dialogbeacon_3.40.6”参考设计进行了一些修改,用于检查功耗,首先,我们停止广告,它是工作,但是,我可以在大约10秒内读取定期电流波形,意味着设备有史以来本身。除了60秒之外,我们所有创建的定时器都没有启动任何定时器数10秒钟。但是,我们需要避免这种状态发生,我如何阻止它,或者使它更长?
嗨yuhua64,
你的意思是你停止了广告事件,但设备唤醒了每10秒的东西,你得到的唯一功能是60秒后击中的计时器?如果BLE在很长一段时间内做任何事情,它在10秒内唤醒了10秒,以便修剪时钟并再次睡着了。它的东西是系统所需的,我不认为它可以被禁用。
谢谢mt_dialog.
感谢您的回复。
是的,你明白了我的观点。同时,我在stop_adv_func()之后启动计时器和设置值60秒,它过期并花了333秒。假设设备在睡眠模式下保持较慢的操作频率。没关系。我们可以接受它。关于你的答案“如果BLE在很长一段时间内没有做任何事情,它在10秒内自行唤醒,以修剪时钟并再次睡着了。它的系统需要”,我可以理解,可以如果需要设置更长时间?
您使用XTAL32还是使用内部一个?如果您使用内部的,如果设备睡眠超过4秒,则定时器不会准确,而不醒来。
尝试通过在Arch.c的中更改Max_sleep_duration_external_wakeup来更改唤醒次序。糟糕的时机可能是由于系统正在使用RC振荡器作为JOACIMWE所说的尝试使用XTAL32。
嗨mt_dialog.
#define cfg_ext_sleep.#undef cfg_deep_sleep.这是否发生在上述两种睡眠模式中?
有什么区别:///定期唤醒模式下的睡眠持续时间值#定义最大睡眠时间周期唤醒0x0320//0.5s///睡眠持续时间值在外部唤醒模式下#define max_sleep_duration_external_wakeup 0x3e80 // 10s
什么是我可以定义的最大值?
谢谢,安东尼
嗨安东尼,
您不应该更改这些参数。如果您在停止广告之前调用app_ble_ext_wakeup_on(),则10秒的轮询计时器将消失。
感谢您的回复!
另一个问题基于相同的设计示例代码:I监控初始操作电流,意味着电源,电流需要5秒钟,然后减少到正常操作电流。我可以缩短时间吗?
1.如何通过固件控制过程重新启动DA14580?
从数据表中,Sys_CTRL_REG中的SW_RESET可能是一个解决方案,但是,将其设置为0x1后,处理器“向下”,我认为控制器更容易控制处理器。有关此案例的详细信息如何通过固件控制重启过程。
2.我可以在线修改BD_ADDR吗?这意味着我提供用户界面以通过用户输入接收新的BD_ADDR,最终将新数据复制到dev_bdaddr.addr []。但是,我不知道如何让它对新的广告有效。
您可以使用platform_reset()来尝试。
关于动态改变BD地址,您可以看看这篇文章http://support.dialog-semicondiondiondum/how-change-bd-address-dynamicaly
我已经尝试过platform_reset()使用参数0/1 / -1,da14580不重启,它看起来像sw_reset,只停止进程。很难像硬件重置动作一样难以执行。
您在尝试成功,平台重置芯片重新启动,引导加载程序运行以查找外部设备以启动。
嗨yuhua64,
你的意思是你停止了广告事件,但设备唤醒了每10秒的东西,你得到的唯一功能是60秒后击中的计时器?如果BLE在很长一段时间内做任何事情,它在10秒内唤醒了10秒,以便修剪时钟并再次睡着了。它的东西是系统所需的,我不认为它可以被禁用。
谢谢mt_dialog.
感谢您的回复。
是的,你明白了我的观点。
同时,我在stop_adv_func()之后启动计时器和设置值60秒,它过期并花了333秒。假设设备在睡眠模式下保持较慢的操作频率。没关系。我们可以接受它。
关于你的答案“如果BLE在很长一段时间内没有做任何事情,它在10秒内自行唤醒,以修剪时钟并再次睡着了。它的系统需要”,我可以理解,可以如果需要设置更长时间?
您使用XTAL32还是使用内部一个?如果您使用内部的,如果设备睡眠超过4秒,则定时器不会准确,而不醒来。
嗨yuhua64,
尝试通过在Arch.c的中更改Max_sleep_duration_external_wakeup来更改唤醒次序。糟糕的时机可能是由于系统正在使用RC振荡器作为JOACIMWE所说的尝试使用XTAL32。
谢谢mt_dialog.
嗨mt_dialog.
#define cfg_ext_sleep.
#undef cfg_deep_sleep.
这是否发生在上述两种睡眠模式中?
有什么区别:
///定期唤醒模式下的睡眠持续时间值
#定义最大睡眠时间周期唤醒0x0320//0.5s
///睡眠持续时间值在外部唤醒模式下
#define max_sleep_duration_external_wakeup 0x3e80 // 10s
什么是我可以定义的最大值?
谢谢,
安东尼
嗨安东尼,
您不应该更改这些参数。如果您在停止广告之前调用app_ble_ext_wakeup_on(),则10秒的轮询计时器将消失。
你好,
感谢您的回复!
另一个问题基于相同的设计示例代码:I监控初始操作电流,意味着电源,电流需要5秒钟,然后减少到正常操作电流。我可以缩短时间吗?
你好,
1.如何通过固件控制过程重新启动DA14580?
从数据表中,Sys_CTRL_REG中的SW_RESET可能是一个解决方案,但是,将其设置为0x1后,处理器“向下”,我认为控制器更容易控制处理器。
有关此案例的详细信息如何通过固件控制重启过程。
2.我可以在线修改BD_ADDR吗?这意味着我提供用户界面以通过用户输入接收新的BD_ADDR,最终将新数据复制到dev_bdaddr.addr []。但是,我不知道如何让它对新的广告有效。
嗨yuhua64,
您可以使用platform_reset()来尝试。
关于动态改变BD地址,您可以看看这篇文章http://support.dialog-semicondiondiondum/how-change-bd-address-dynamicaly
谢谢mt_dialog.
你好,
我已经尝试过platform_reset()使用参数0/1 / -1,da14580不重启,它看起来像sw_reset,只停止进程。很难像硬件重置动作一样难以执行。
嗨yuhua64,
您在尝试成功,平台重置芯片重新启动,引导加载程序运行以查找外部设备以启动。
谢谢mt_dialog.