唤醒时切换到XTAL16M

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
14个员额/0个新员额
最后一篇
拉朱考尔苏拉杰
离线
最后一次露面:11个月2周前
加入:2018-12-12 16:09
唤醒时切换到XTAL16M

你好对话框,

我已经在BLE睡眠模式例如作为每UART2周样品例如串行通信配置UART2。

在观察通信数据时,存在错误传输。

在早期的论坛上类似的讨论建议叫“arch_ble_force_wakeup()” API,使时钟切换到XTAL16M,并有可靠的UART传输。

该开关是成功的,但一旦转让完成,就必须关闭BLE收音机。

我可以知道吗,

1.如果有办法在UART传输后关闭BLE收音机。

2.如果有一种方法,以切换到XTAL16M从睡眠唤醒无“arch_ble_force_wakeup()” API调用。

问候

拉朱

设备:
Qinjiny_Dialog
离线
最后一次露面:4个月1周前
职员
加入:2016年11月1日05:47
嗨,拉杰,

嗨,拉杰,

1.“UART传输后关闭BLE收音机”我想你的意思是停止BLE广告,

是的,你可以通过调用做到这一点应用程序\u轻松\u间隙\u广告\u停止与UART写操作的回调

2.arch_ble_force_wakeup()是唤醒ble核心并使用XTAL16M操作的最推荐方法。如果存在可恢复活动,设备将自动与XTAL16M配合使用。还有一些低杠杆方式来切换时钟,例如:

如果((GetWord16(CLK\U CTRL\U REG)&RUNNING\U AT\U XTAL16M)==0)
{
而((GetWord16(SYS_STAT_REG)XTAL16_SETTLED)== 0);//等待XTAL16落户
SetBits16(CLK\u CTRL\u REG,SYS\u CLK\u SEL,0);//切换到XTAL16
而((GetWord16(CLK_CTRL_REG)RUNNING_AT_XTAL16M)== 0);//等待实际开关
}
}

我真的不确定是否有任何理由使用这个,或者是否有任何自负使用这个。

拉朱考尔苏拉杰
离线
最后一次露面:11个月2周前
加入:2018-12-12 16:09
你好对话框,

你好对话框,

我正在UART和BLE之间切换数据传输。两种转移都是相互排斥的。

使用arch_ble_force_wakeup()正在引起电流消耗的增加是不可行的实施方案。

因此,如果它是推荐的方式,然后关闭无线电转向是通过调用其API轻松启动?

问候

拉朱

PM_DIALOG.
离线
最后一次露面:6天3分钟前
职员
加入:2018-02-08 11:03
嗨rajucoolsuraj,

嗨rajucoolsuraj,

在最初的帖子中,您提到您正在开发SDK的ble_app_睡眠模式示例,不是吗?本例将设备置于睡眠模式。为此,所有外围模块(包括收音机和UART)均断电。你能澄清一下你是否禁用了睡眠模式吗?任何其他澄清都会非常有帮助。

谢谢,PM_DIALOG.

拉朱考尔苏拉杰
离线
最后一次露面:11个月2周前
加入:2018-12-12 16:09
你好对话框,

你好对话框,

我已经使用ble_app_睡眠模式示例在应用程序中设置睡眠模式功能。

没有不可抗拒的广告。初始化时,永远不会调用user_app_adv_start()。

使用唤醒中断按钮,我执行UART传输。

只有通过调用arch_force_ble_wakeup()启用XTAL16M时钟,数据才能通过UART可靠地发送。

当UART传送结束,BLE无线电接通经由arch_force_ble_wakeup()将需要被断开。因此,arch_ble_ext_wakeup()API被使用来完成它。

这是一种正确的实现方式,还是有一种简单的替代方法,可以在睡眠恢复时将时钟切换到XTAL16M并返回到低功耗时钟?

问候

拉朱

PM_DIALOG.
离线
最后一次露面:6天3分钟前
职员
加入:2018-02-08 11:03
嗨,拉朱,

嗨,拉朱,

如果我理解正确,一旦设备启动,您就将其置于睡眠模式,并将唤醒控制器配置为检测GPIO中断。按下按钮时,设备将通过UART2打印数据。一旦585唤醒,BLE_唤醒\u LP_处理程序将被执行。系统处于活动模式时使用16MHz晶体,处于睡眠模式时使用32KHz晶体。在睡眠模式下,所有外围模块均断电。UART传输终止后,我需要对此进行一些澄清。当与UART2交互时,该收音机是开着的还是开着的?或者是开着但你不做广告?芯片唤醒时,收音机将通电。

谢谢,PM_DIALOG.

拉朱考尔苏拉杰
离线
最后一次露面:11个月2周前
加入:2018-12-12 16:09
启动后,系统

启动后,系统初始化将不允许开始播发。允许系统进入“无OTP复制的延长睡眠模式”。

按下按钮时,将调用唤醒处理程序来启动UART2传输。(这需要XTAL16M进行可靠传输)。

在唤醒时,只有在执行BLE_wakeup_LP_处理程序时,时钟才会切换回XTAL16M。(如果未启动广告,则不会)。

为了实现到XTAL16M的时钟切换,将根据论坛讨论执行arch_ble_force_wakup()API。

1.有没有一种更简单的方法可以在不调用arch_ble_force_wakup()API的情况下切换时钟?

2.一旦时钟通过arch_ble_force_wakup()API切换,确实在主循环中关断这是ON时,调用arch_ble_force_wakup()API的BLE无线电下一睡眠阶段?

如果你还没有无法跟随,我应作出适当安排,以进一步阐明。

当做

拉朱

PM_DIALOG.
离线
最后一次露面:6天3分钟前
职员
加入:2018-02-08 11:03
嗨rajucoolsuraj,

嗨rajucoolsuraj,

该BLE_WAKEUP_LP_HANDLER每触发系统唤醒时间。该装置与32K时钟运行时,处于睡眠模式,所以,只要它唤醒时,时钟被切换到16MHz。当按下按钮醒来,app_button_press_cb()callaback功能将在以启动外设块和BLE被执行。我不明白你为什么要切换时钟。如果芯片是在主动模式下,你可以使用UART以打印数据 - 这并不重要,如果芯片是广告与否。请注意,外设模块所使用的16MHz的时钟,它们被关闭时处于睡眠模式。你能请注明如果您有任何UART2问题?此外,可以请你指出,如果你正在使用任何广告间隔之间的睡眠模式的?

谢谢,PM_DIALOG.

拉朱考尔苏拉杰
离线
最后一次露面:11个月2周前
加入:2018-12-12 16:09
你好对话框,

你好对话框,

我要求严格遵守以下声明。

开机后,系统初始化将不允许广告的开始(user_app_adv_start美国石油学会不叫)。该系统允许进入“扩展睡眠模式,而非OTP复制”(arch_set_extended_sleep美国石油学会)。

唤醒控制器初始化为处理按钮中断,设备允许休眠(这将时钟从XTAL16M切换到RC32K)。

按下按钮时,将调用唤醒中断处理程序来启动UART2传输。(UART/UART2需要XTAL16M才能可靠传输)。

在唤醒时,时钟切换回XTAL16M仅在执行BLE_WAKEUP_LP_HANDLER。(如果未通过用户应用程序adv启动API启动播发,则不会出现此问题)。

我希望你已经从上面的摘要中理解了我的设置。

如果只有上面是清晰的,我将继续。

谢谢

问候

拉朱

PM_DIALOG.
离线
最后一次露面:6天3分钟前
职员
加入:2018-02-08 11:03
嗨,拉朱,

嗨,拉朱,

唤醒程序是独立于广告程序。这意味着,只要您按唤醒DA14586按钮,BLE_WAKEUP_LP_HANDLER总是执行。该user_app_adv_start()API仅适用于广告!要做到这一点,你可以使用,即使该设备不是广告UART2硬件模块。

谢谢,PM_DIALOG.

拉朱考尔苏拉杰
离线
最后一次露面:11个月2周前
加入:2018-12-12 16:09
你好对话框,

你好对话框,

为了解决要求 - “这意味着,只要您按唤醒DA14586按钮,就总是执行BLE_WAKEUP_LP_HANDLER。”

如果事情是按我的设置配置,它永远不会从按键中断唤醒执行BLE_WAKEUP_LP_HANDLER。

一个简单的实验就足以提供索赔的证据。

在我这方面,验证设置的请求与此不同。

谢谢

问候

拉朱

PM_DIALOG.
离线
最后一次露面:6天3分钟前
职员
加入:2018-02-08 11:03
嗨,拉朱,

嗨,拉朱,

BLE_WAKEUP_LP_处理程序将在每次唤醒时执行,LP时钟将在每次唤醒时变为16MHz时钟。

谢谢,PM_DIALOG.

拉朱考尔苏拉杰
离线
最后一次露面:11个月2周前
加入:2018-12-12 16:09
你好对话框,

你好对话框,

会发生什么,如果

1.调用“arch_ble_ext_wakup_on()”API。

2.永远不会调用“app\u easy\u gap\u undirected\u advertized\u start()”API。

通过唤醒中断控制器唤醒时,(BLE收音机在睡眠前关闭),

BLE_WAKEUP_LP_HANDLER永远不会执行,并没有时钟开关应发生。

问候

拉朱

PM_DIALOG.
离线
最后一次露面:6天3分钟前
职员
加入:2018-02-08 11:03
嗨rajucoolsuraj,

嗨rajucoolsuraj,

请看一下SDK6.0.10的ble_app_睡眠模式示例。当无向播发完成时,将触发user_app_adv_unddirect_complete()回调函数,如果您检查源代码,将执行arch_ble_ext_wakeup_on(),以禁用对无向播发和计时器事件的唤醒。只有外部(GPIO)唤醒事件才能通过唤醒控制器唤醒处理器。为此,在此阶段,设备处于永久睡眠模式,但已配置唤醒控制器,并准备好检测外部唤醒事件(app_button_enable())。当检测到唤醒事件时,会触发app_按钮_press_cb(),它会检查BLE核心是否处于永久睡眠模式。如果是,则将BLE核心从永久睡眠模式中移除。

谢谢,PM_DIALOG.