你好,
我们有一个带有DA14580的自定义PCB,位于降压模式配置中,只有XTAL16。此处当主微控制器复位发生时,通过SPI加载BLE应用程序
通过BLE传输的一些传感器数据是从主微控制器的UART发送。因为我理解只有延长睡眠
#define cfg_lp_clk lp_clk_rcx20和变量app_default_sleep_mode = arch_ext_sleep_on。从BLE Android应用程序,在扫描期间,设备可见。
但在启动连接时,还丢失了进一步的连接,并且不再列出设备名称。
您能否就这种行为提供一些建议?
谢谢,
Aparna.
设备:
嗨aparna.anand,
如果您能够在启动时看到该设备,并且在连接时无法连接,然后在连接其时不可见的情况下,我可以假设在代码摊位的某个位置时,您应该通过调试在代码后结束后检查连接发生连接,它会导致设备无响应。在正常情况下,如果连接失败,设备应通过调用.app_on_connection回调中的启动广告过程再次启动广告(如果连接失败)或app_on_disconnect回调,如果未调用此设备,则设备是一旦连接尝试失败,不会开始广告。但由于似乎没有成功的连接,大多数可能在连接过程时停止设备。
谢谢mt_dialog.
你好,
谢谢你的建议。我会尝试调试应用程序卡住的点。
同时可以请确认CFG_LP_CLK作为LP_CLK_RCX20,以便在运行时扩展睡眠模式条目是可能的吗?这是因为我们的定制板上没有XTAL32。
当我禁用扩展睡眠模式时,我看到应用程序运行正常,只有在我启用延长睡眠时才会卡。
谢谢,
Aparna.
嗨aparna.anand,
由于您的自定义板以Buck模式配置,因此您可以在RCX上运行,但是,我没有获取运行时任期,但是应该在DA1458x_config_Advanced.h文件中完成LP时钟的选择,并且CFG_LP_CLK应设置为LP_CLK_RCX20,如果您没有外部XTAL32这是您在编译期间应该拥有的配置。由于启动时,您的设备可见,这意味着它可以睡眠和宣传它应该,当您正在运行的FW中发生连接时,必须存在错误,也许读取创建故障的传感器。您可以使用一个简单的SDK示例进行检查并连接到它,以验证问题在于您的FW,而不是您的自定义板。
谢谢mt_dialog.
你好,
通过运行时,我的意思是在连接或广告间隔之间启用睡眠模式。由于DA14580的调试线路尚未在定制董事会中提出,我仍然弄清楚如何进一步调试此问题。
我尝试的另一件事是通过主微控制器(输入到DA驱动高)的GPIO事件来实现DA上DA的睡眠模式(永久)。电源复位将使DA和主微控制器带出复位。你能告诉我是否有可能?
我已经看到了使用wkupct_register_callback()和wkupct_enable_irq()API的示例。但在我的情况下,我不需要启用唤醒定时器。我只需要使用GPIO ISR并启用延长睡眠。
有些建议看的例子会有所帮助。
谢谢,
Aparna.
嗨aparna.anand,
在执行代码期间启用和禁用睡眠可以通过ARCH_DISABLE_SLEEP(),ARCH__SET_EXTEDDE_SLEEP()API来完成。还有一些可能误解的东西,你不必在连接间隔期间启用和禁用睡眠,如果设备默认在扩展睡眠模式下(通过在app_default_sleep_mode结构中使用Arch_ext_sleep_on),SDK将安排睡眠和觉醒在广告间隔和连接间隔期间的设备没有任何需要采取任何动作,即使在不需要BLE活动时,应用程序需要禁用禁用睡眠功能,即使不需要BLE活动,也可以保持醒着(无需越来越多连接事件或广告活动)。
关于从外部微控制器启用睡眠模式,您可以通过外部中断配置580以唤醒,您可以看一下BLE_APP_SLEEPMODE,在广告少量时间之后的设备下降到永久性睡眠(没有BLE事件)并通过外部按钮中断唤醒。此外,如果在PMU_CTRL_REG中配置RESET_ON_WAKEUP,则可以在下次唤醒时配置设备在下次唤醒中,如果这是您的要求。
关于醒来,如果您处于永久性睡眠模式(意味着没有编程的BLE事件,没有建立或广告所安排的连接),则设备可以通过内核计时器(其也被认为是BLE事件)或从唤醒时唤醒定时器(名称有点误导,实际上这是在发生预编程的GPIO事件的预编程数量的GPIO事件之后断电之后唤醒设备的模块),因此使用WKUPCT_Timer的示例是您应该使用的示例。
谢谢mt_dialog.
谢谢一群来清除误解和指向例子!
感谢和问候,
Aparna.