你好对话框,
根据UART2外设示例示例,我已配置UART2以在BLE SleepMode示例中进行串行通信。
在观察通信数据时,存在错误的传输。
在论坛上的类似讨论前面推荐调用“Arch_ble_Force_WakeUp()”API,使时钟切换到XTAL16M并具有可靠的UART转移。
交换机成功,但一旦转移完成,就必须关闭BLE收音机。
我可否知道,
1.如果有一种方法可以在UART转移后关闭BLE收音机。
2.如果有一种方法可以从睡眠中切换到XTAL16M,没有“Arch_ble_force_wakeup()”API调用。
问候
raju.
设备:
嗨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)
{
而((getword16(sys_stat_reg)&xtal16_settled)== 0);//等待XTAL16定居
setbits16(clk_ctrl_reg,sys_clk_sel,0);//切换到xtal16
while((getword16(clk_ctrl_reg)&running_at_xtal16m)== 0);//等待实际开关
}
}
我真的不确定是否有任何理由使用此操作,或者虽然有任何概念。
你好对话框,
我正在在UART和BLE之间切换数据传输。两种转移都是互化的。
使用ARCH_BLE_FORCE_WAKEUP()导致当前消耗量的增加,这对于实现的解决方案不可行。
因此,如果是推荐的方式,那么关闭无线电将由呼叫发起易于API?
问候
raju.
嗨rajucoolsuraj,
在您提到的初始帖子中,您提到您正在研究SDK的BLE_APP_SLEEPMODE示例,不是吗?此示例将设备放入睡眠模式。为此,包括无线电和UART在内的所有外围块都断电。如果您有休眠模式禁用,请您澄清吗?任何其他澄清都非常有帮助。
谢谢,PM_DIALOG.
你好对话框,
我使用BLE_APP_SLEEPMODE示例示例来在应用程序中设置SleepMode功能。
没有BLE广告。初始化后,永远不会调用user_app_adv_start()。
使用从按钮使用唤醒中断,我执行UART转移。
只有在UART中可靠地发送数据,才通过XTAL16M时钟,调用ARCH_FORCE_BLE_WAKEUP()。
在UART转移终止时,需要关闭通过ARCH_FORCE_BLE_WAKEUP()上打开的BLE RADER。因此,ARCH_BLE_EXT_WAKEUP()API正在用于完成它。
是否是正确的实现方式,或者在睡眠恢复时有简单的切换时钟和返回低功耗时钟的简单替代品吗?
问候
raju.
嗨raju,
如果我能够正确地理解,一旦设备靴子,就把它放在睡眠模式,并且您将唤醒控制器配置为检测GPIO中断。按下按钮时,设备将通过UART2打印数据。一旦585醒来,就会执行BLE_WAKEUP_LP_HANDLER。当系统处于活动模式和晶体32kHz时,正在使用晶体16MHz时,当处于睡眠模式时。在睡眠模式下,所有外围块都会断电。在UART转移终止时,我需要一些澄清。与UART2交互时,该无线电亮起?或者正在上,但你不宣传?当芯片唤醒时,无线电将被通电。
谢谢,PM_DIALOG.
启动后,系统初始化不允许启动广告。允许该系统进入“没有OTP Copy的扩展模式”。
在按钮按下,调用唤醒处理程序以启动UART2传输。(这需要XTAL16M进行可靠的转移)。
在唤醒时,才会在执行BLE_WAKEUP_LP_HANDLLer时切换回XTAL16M。(如果未启动广告,则不执行此操作。
要实现到XTAL16M的时钟切换,ARCH_BLE_FORCE_WAKUP()API将根据论坛讨论执行。
1.在不调用Arch_ble_Force_Wakup()API的情况下,是否有更简单的方法来切换时钟?
2.通过ARCH_BLE_FORCE_WAKUP()API切换时钟,主循环中的下一个睡眠阶段是否会关闭与ARCH_BLE_FORCE_WAKUP()API调用打开的BLE无线电?
如果您尚未遵循,我将妥善安排进一步阐明。
问候
raju.
嗨rajucoolsuraj,
每次系统唤醒时都会触发BLE_WAKEUP_LP_HANDLER。在睡眠模式下,该设备运行32K时钟,因此,一旦唤醒,时钟就会切换到16MHz。按下按钮唤醒时,将执行APP_BUTTON_PRESS_CB()CALLABACK功能以启动外围设备块和BLE。我无法明白为什么要打开时钟。如果芯片处于活动模式,则可以使用UART才能打印数据 - 如果芯片是广告,则无关紧要。请注意,外设块使用16MHz时钟,在睡眠模式下,它们被关闭。如果您对UART2有任何问题,请您说明吗?此外,如果您使用的是广告间隔之间的任何睡眠模式,请说明吗?
谢谢,PM_DIALOG.
你好对话框,
我要求按照规定的方式遵循以下陈述。
启动后,系统初始化不会允许广告的开始(User_App_Adv_StartAPI.不被称为)。该系统被允许进入“没有OTP拷贝的扩展睡眠模式”(Arch_set_extended_sleepAPI.)。
唤醒控制器初始化以处理按钮中断,并且允许设备睡眠(这将来自XTAL16M的时钟切换到RC32K)。
在按钮按下,调用唤醒中断处理程序以启动UART2传输。(UART / UART2需要XTAL16M进行可靠的转移)。
在唤醒时,才会在执行BLE_WAKEUP_LP_HANDLLer时切换回XTAL16M。(如果未通过User_App_Adv_Start API启动广告)。
我希望你从上面的摘要中了解了我的环境。
如果只有上述情况清楚,我将继续。
谢谢
问候
raju.
嗨raju,
唤醒程序与广告程序无关。这意味着一旦按下按钮唤醒DA14586,始终执行BLE_WAKEUP_LP_HANDLer。user_app_adv_start()API仅适用于广告!为此,即使设备未广告,也可以使用UART2硬件块。
谢谢,PM_DIALOG.
你好对话框,
解决索赔 - “这意味着一旦按下按钮即可唤醒DA14586,始终执行BLE_WAKEUP_LP_HANDLER。”
如果根据我的设置配置了某些内容,则不会在唤醒中从按钮中断执行BLE_WAKEUP_LP_HANDLER。
简单的实验足以为索赔提供证据。
请求验证设置,同样不是我的结尾。
谢谢
问候
raju.
嗨raju,
BLE_WAKEUP_LP_HANDLL将在每个唤醒中执行,LP时钟将在每次唤醒时换成16MHz时钟。
谢谢,PM_DIALOG.
你好对话框,
发生什么,如果
1.调用ARCH_BLE_EXT_WAKUP_ON()“API。
2.“app_easy_gap_undircted_advertise_start()”API永远不会调用。
在唤醒通过唤醒中断控制器上,(在睡觉前关闭BLE收音机),
BLE_WAKEUP_LP_HANDLLEL永远不会执行,并且不会发生时钟开关。
问候
raju.
嗨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.