This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2652P:如果广播由于任何原因停止、则会通过一种机制触发自动复位

Guru**** 2834805 points

Other Parts Discussed in Thread: CC2652P, SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1623869/cc2652p-if-advertising-stops-for-any-reason-a-mechanism-to-trigger-an-automatic-reset

器件型号: CC2652P
主题中讨论的其他器件: SysConfig

尊敬的专家:

我的客户正在使用 CC2652P1 并且遇到了一些挑战。 目标是确保 BLE 广播连续运行。 如果广播因任何原因停止、则他们希望实现一种触发自动复位的机制。

Q1:对于上述场景、推荐的复位方法是什么? 我们是否应该通过检测 BLE 栈端广播停止来使用基于硬件的复位(如看门狗计时器 (WDT)) 或基于软件的复位?

问题 2:是否有任何示例代码或项目可用于实现此目标? 理想情况下、我们正在根据simple_peripheral项目寻找添加了此功能的内容。

问题 3:如果不存在示例项目、您能否提供概述必要步骤的文档或参考(手册,应用手册或 E2E 主题)?

问题 4:在待机模式期间触发定期唤醒的推荐方法是什么? 您是否同意以下逻辑? 由于 WDT 在待机模式下不会递减、因此我们应该使用 时钟节拍 (基于 RTC)定期将器件从待机状态转换为工作/空闲状态以清除 WDT 计数器。 我们认为、这是防止系统在待机或工作/空闲模式下卡在无限环路中的理想方法。

此致、
正常

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我建议使用  GAP_EVT_ADV_END_AFTER_DISABLE 事件来检测广播何时结束、并使用 GapAdv_enable () 重新开始广播。 您还可以了解程序禁用广播的原因、并检查是否应更改广播。

    Q1:我建议使用 GAP_EVT_ADV_END_AFTER_DISABLE 事件来检测广播何时结束、并使用 GapAdv_enable () 重新开始广播。

    问题 2:是的、例如在 simple_periheral 中查找。  在 simple_peripheral.c 中查找 GAP_EVT_ADV_END_AFTER_DISABLE 事件处理  

    您还必须配置事件屏蔽才能接收这些通知(我认为这是 simple_peripheral 中的默认配置)。

    // Set event mask for set #1
    status = GapAdv_setEventMask(advHandleLegacy,
                             GAP_ADV_EVT_MASK_SCAN_REQ_NOTI |
                             GAP_ADV_EVT_MASK_START_AFTER_ENABLE |
                             GAP_ADV_EVT_MASK_END_AFTER_DISABLE |
                             GAP_ADV_EVT_MASK_SET_TERMINATED);

    问题 3: https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__ADo9Mwg7rjuO2K2CP.4vrQ__com.ti.SIMPLELINK_CC13XX_CC26XX_SDK__BSEc4rl__LATEST 

    Q4:是的。 如果您使用的是 BLE 栈示例、我强烈建议为此实现专用计时器和事件。 (使用 Task_sleep() 或 sleep() 将扰乱应用程序中的事件处理程序逻辑。)

    谢谢、

    Marie H

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好  

    感谢您的答复。 我明白了。  如果我有任何其他问题、我们会重新联系您。

     

    上面的 URL 是一个示例项目、因此请参阅下面的链接。

    BLE5-Stack 用户指南

    此致、
    正常

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我理解、对于计时器、可能会有点令人困惑。 RTC(实时时钟)是指 CC2652P 上的板载时钟。 这是“常开“域的一部分、这意味着 RTC 在器件处于待机状态时仍在运行。

    M4F ARM 内核还有一个称为系统时钟 (SysTick) 的计时器、您可以在 driverlib 文件夹中找到这个计时器的软件接口。 器件上有一个 GPTimer。

    时钟、计时器等是作为 TI RTOS、POSIX、FreeRTOS 等的一部分实现的软件模块 据我所知、他们都使用 RTC、因此无论您使用的是 BIOS 时钟模块还是 其他模块、都没有关系。

    Q4-2 和 Q4-3:是的、这看起来很好。

    Q4-4:RTC 的主要来源应是 TRM 第 16 章 (SWCU185)。

    Q5:是的、时钟将使用 RTC。

    问题 6:如果您正在使用简单外设示例、我建议将事件添加到应用任务 (simple_peripheral.c) 中的现有事件循环中。

    如果您想启动自己的事件队列、我建议您在单独的任务中执行此操作。 您可以在 SysConfig 中添加新事件模块、或在应用程序源代码中实现所有内容。 请按照 BIOS API 文档中的代码片段进行操作。 如果您使用这些 API、则无需直接与寄存器交互。

    https://software-dl.ti.com/simplelink/esd/simplelink_cc13xx_cc26xx_sdk/8.32.00.07/exports/docs/tirtos7/doxygen/m4/html/Event_8h.html 

    谢谢、

    Marie H

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Marie H、

    很抱歉晚才回复、感谢您的回复。 我明白了。
    如果我在实施过程中有其他问题、我将创建一个新主题。

    此致、
    正常