在唤醒时切换到XTAL16M

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
14个帖子/ 0新
最后发表
Rajucoolsuraj.
离线
最后看到:6个月3周前
加入:2018-12-12 16:09
在唤醒时切换到XTAL16M

你好,对话框,

我已经根据UART2外围设备示例示例在BLE SleepMode示例中配置了用于串行通信的UART2。

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

论坛上的一个类似的讨论建议调用“arch_ble_force_wakeup()”。API使时钟切换到XTAL16M,并有可靠的UART传输。

开关是成功的,但一旦传输完成,将有必要关闭BLE无线电。

我可否知道,

1.如果有一种方法可以在UART转移后关闭BLE收音机。

2.如果有一种方法可以在没有“arch_ble_force_wakeup()”的情况下从睡眠中苏醒到XTAL16MAPI调用。

问候

raju.

设备:
Qinjiny_Dialog
离线
最后看到:3周1天前
工作人员
加入:2016-11-01 05:47
嗨raj,

嗨raj,

1.通过“在UART转移后关闭BLE收音机”我想你的意思是停止BLE广告,

是的,你可以打电话来app_easy_gap_advertise_stop.与UART的回调写操作

2. ARCH_BLE_FORCE_WAKEUP()是唤醒BLE核心并使用XTAL16M运行的最推荐的方法。如果有BLE活动,设备会自动使用XTAL16M。还有一些低的杠杆方式来切换时钟e:

if((getword16(clk_ctrl_reg)&running_at_xtal16m)== 0)
{
while((GetWord16(SYS_STAT_REG) & xtal16_settle) == 0);//等待XTAL16解决
setbits16(clk_ctrl_reg,sys_clk_sel,0);//切换到xtal16
drawtext ((GetWord16(CLK_CTRL_REG) & RUNNING_AT_XTAL16M) == 0);//等待实际开关
}
}

我真的不确定是否有任何理由使用此操作,或者虽然有任何概念。

Rajucoolsuraj.
离线
最后看到:6个月3周前
加入:2018-12-12 16:09
你好,对话框,

你好,对话框,

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

使用arch_ble_force_wakeup()会导致当前消耗的增加,这对于实现的解决方案是不可实现的。

因此,如果这是推荐的方式,那么关闭无线电是由哪个简单的API调用发起的?

问候

raju.

PM_Dialog
离线
最后看到:13小时33分钟前
工作人员
加入:2018-02-08 11:03
嗨rajucoolsuraj,

嗨rajucoolsuraj,

在您提到的初始帖子中,您提到您正在研究SDK的BLE_APP_SLEEPMODE示例,不是吗?此示例将设备放入睡眠模式。为此,包括无线电和UART在内的所有外围块都断电。如果您有休眠模式禁用,请您澄清吗?任何其他澄清都非常有帮助。

谢谢,PM_Dialog

Rajucoolsuraj.
离线
最后看到:6个月3周前
加入:2018-12-12 16:09
你好,对话框,

你好,对话框,

我使用BLE_APP_SLEEPMODE示例示例来在应用程序中设置SleepMode功能。

没有BLE广告。初始化后,永远不会调用user_app_adv_start()。

使用从按钮使用唤醒中断,我执行UART转移。

只有在UART中可靠地发送数据,才通过XTAL16M时钟,调用ARCH_FORCE_BLE_WAKEUP()。

在UART传输终止时,需要关闭通过arch_force_ble_wakeup()打开的BLE无线电。因此,使用arch_ble_ext_wakeup() API来完成它。

是否是正确的实现方式,或者在睡眠恢复时有简单的切换时钟和返回低功耗时钟的简单替代品吗?

问候

raju.

PM_Dialog
离线
最后看到:13小时33分钟前
工作人员
加入:2018-02-08 11:03
嗨raju,

嗨raju,

如果我能够正确地理解,一旦设备靴子,就把它放在睡眠模式,并且您将唤醒控制器配置为检测GPIO中断。按下按钮时,设备将通过UART2打印数据。一旦585醒来,就会执行BLE_WAKEUP_LP_HANDLER。当系统处于活动模式和晶体32kHz时,正在使用晶体16MHz时,当处于睡眠模式时。在睡眠模式下,所有外围块都会断电。在UART转移终止时,我需要一些澄清。与UART2交互时,该无线电亮起?或者正在上,但你不宣传?当芯片唤醒时,无线电将被通电。

谢谢,PM_Dialog

Rajucoolsuraj.
离线
最后看到:6个月3周前
加入:2018-12-12 16:09
启动后,系统

启动后,系统初始化不允许启动广告。允许该系统进入“没有OTP Copy的扩展模式”。

在按钮按下,调用唤醒处理程序以启动UART2传输。(这需要XTAL16M进行可靠的转移)。

在唤醒时,只有在执行了BLE_WAKEUP_LP_HANDLER时,时钟才会被切换回XTAL16M。(如果未启动广告,则不执行此操作。

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

1.在不调用Arch_ble_Force_Wakup()API的情况下,是否有更简单的方法来切换时钟?

2.一旦时钟通过arch_ble_force_wakeup () API切换,是否在主循环的下一个睡眠阶段关闭BLE无线电,通过调用arch_ble_force_wakeup () API打开?

如果你还听不懂,我将作出适当安排进一步说明。

问候

raju.

PM_Dialog
离线
最后看到:13小时33分钟前
工作人员
加入:2018-02-08 11:03
嗨rajucoolsuraj,

嗨rajucoolsuraj,

每次系统醒来时都会触发BLE_WAKEUP_LP_HANDLER。该设备在睡眠模式下使用32K时钟运行,所以一旦它醒来,时钟就会切换到16MHz。当按下唤醒按钮时,将执行app_button_press_cb() callaback函数,以初始化外围设备块和BLE。我不明白你为什么要换钟。如果芯片处于活动模式,您可以使用UART来打印数据——芯片是否在广告无关紧要。注意,外设块使用16Mhz时钟,在睡眠模式下关闭。请问UART2有什么问题吗?另外,你能否说明你是否在广告间隔之间使用了任何睡眠模式?

谢谢,PM_Dialog

Rajucoolsuraj.
离线
最后看到:6个月3周前
加入:2018-12-12 16:09
你好,对话框,

你好,对话框,

我要求按照规定的方式遵循以下陈述。

启动后,系统初始化将不允许启动发布(user_app_adv_start)API.不是叫)。系统被允许进入“没有OTP拷贝的扩展睡眠模式”(arch_set_extended_sleep)API.).

唤醒控制器初始化以处理按钮中断,并且允许设备睡眠(这将来自XTAL16M的时钟切换到RC32K)。

在按钮按下,调用唤醒中断处理程序以启动UART2传输。(UART / UART2需要XTAL16M进行可靠的转移)。

在唤醒时,只有在执行了BLE_WAKEUP_LP_HANDLER时,时钟才会被切换回XTAL16M。(如果未通过User_App_Adv_Start API启动广告).

我希望你从上面的摘要中了解了我的环境。

只要上述情况清楚,我就会继续下去。

谢谢

问候

raju.

PM_Dialog
离线
最后看到:13小时33分钟前
工作人员
加入:2018-02-08 11:03
嗨raju,

嗨raju,

唤醒程序独立于广告程序。这意味着只要按下唤醒DA14586的按钮,就会始终执行BLE_WAKEUP_LP_HANDLER。user_app_adv_start() API仅用于广告!为此,您可以使用UART2硬件块,即使设备没有发布。

谢谢,PM_Dialog

Rajucoolsuraj.
离线
最后看到:6个月3周前
加入:2018-12-12 16:09
你好,对话框,

你好,对话框,

为了解决这个问题——“这意味着只要按下唤醒DA14586的按钮,就总是执行BLE_WAKEUP_LP_HANDLER。”

如果按照我的设置配置了一些东西,它将永远不会执行BLE_WAKEUP_LP_HANDLER从按钮中断唤醒。

一个简单的实验就足以为这一主张提供证据。

请求验证设置,同样不是我的结尾。

谢谢

问候

raju.

PM_Dialog
离线
最后看到:13小时33分钟前
工作人员
加入:2018-02-08 11:03
嗨raju,

嗨raju,

BLE_WAKEUP_LP_HANDLL将在每个唤醒中执行,LP时钟将在每次唤醒时换成16MHz时钟。

谢谢,PM_Dialog

Rajucoolsuraj.
离线
最后看到:6个月3周前
加入:2018-12-12 16:09
你好,对话框,

你好,对话框,

会发生什么,如果

1.调用ARCH_BLE_EXT_WAKUP_ON()“API。

2.“app_easy_gap_undircted_advertise_start()”API永远不会调用。

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

不会执行BLE_WAKEUP_LP_HANDLER,也不会发生时钟切换。

问候

raju.

PM_Dialog
离线
最后看到:13小时33分钟前
工作人员
加入:2018-02-08 11:03
嗨rajucoolsuraj,

嗨rajucoolsuraj,

请查看SDK6.0.10的BLE_APP_SLEEPMODE示例。当未确定的广告完成后,触发user_app_adv_undirect_complete()回调函数,如果检查源代码,则执行ARCH_BLE_EXT_WAKEUP_ON()才能禁用BLE和TIMER事件的唤醒。只有外部(GPIO)唤醒事件可以通过唤醒控制器唤醒处理器。为此,在此阶段,设备处于永久睡眠模式,但唤醒控制器被配置为AD,它已准备好检测外部唤醒事件(App_button_enable())。当检测到唤醒事件时,触发app_button_press_cb(),它检查BLE核心是否处于永久睡眠模式。如果是,则将BLE核心从永久睡眠模式中取出。

谢谢,PM_Dialog