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.

[参考译文] CCS/CC2640R2F:CC2640R2F - BLE 通知不再起作用

Guru**** 2553440 points
Other Parts Discussed in Thread: CC2640

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/571822/ccs-cc2640r2f-cc2640r2f---ble-notification-does-not-work-anymore

器件型号:CC2640R2F
主题中讨论的其他器件:CC2640

工具/软件:Code Composer Studio

我们有一个基于 Sensortag 的定制板。 在我们迁移到 cc2640R2之前、我们的软件在该电路板上与 cc2640128配合工作正常。

我们现在遇到的问题是 BLE 数据通知不再起作用。 我们有一个用户定义的配置文件(服务- AAA0)、它具有4个特性(从 AAA1到 AAA4)。 我在下面附上了两张图片来展示它们。

在启用特性 AAA1通知后(我们验证 CCCD 为0001)、我们向 AAA2写入1以开始数据传输。 它应该调用 xxx_set_parameter 函数、然后调用 GATTServApp_ProcessCharCfg 函数。 我们已验证数据读回调用函数是否被触发。 如果我们读取 AAA1值、我们可以看到它已更新。 但问题是数据不会发送到客户端。

在迁移到 R2之前、相同的代码适用于 cc2640128。 设置为具有 BLE3.0 (R2)堆栈的 CCS7.0。  

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

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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Christine:
    以下是 Wireshark 日志。 你能看到吗?

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

    当我单击时、文件不再存在。 您能否再次发帖?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Christin:

    我已经解决了这个问题。 但我有一个一般性问题要问。 首先、让我告诉您我是如何解决这个问题的。 我们基于 Sensortag 的旧软件和较早的 BLE 版本具有3个不同的任务。 Sensortag 任务、BLE 任务和加速器任务。 我找不到 BLE 3.0的任何 Sensortag 示例。 如果您知道任何多任务 BLE3.0 (R2)示例、请告诉我。 因为我认为到目前为止遇到的所有问题都与 RTOS 和 ICALL 任务配置有关。

    我将分享我的经验、这也可能会使他人受益。 首先、我找到了一个很好的示例

    在我使用此示例使通知处理单个任务后。 我尝试将 BLE 处理移至第二个任务--我们的 BLE 任务。 然后、我遇到了 BLE 停止工作的问题。 然后我谷歌搜索了答案并找到了这篇文章  

    在本文中、它提到  需要增加允许通过 iCall 与 BLE 协议栈通信的任务数量。 由于我们有两个任务要处理 BLE、因此我在 预定义符号中添加了 OSAL_MAX_NUM_PROXY 任务=3、BLE 读/写/通知工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这些是我到目前为止所得到的。 BLE 可用于两个任务。 但是、一旦我添加了第三个任务。 工作代码停止工作。 BLE Scanner 应用无法发现这些服务、最终会超时。 但我认为主要原因是增加了第三项任务、因为一旦我将其删除、一切都恢复正常。 第三项任务与蓝牙无关。 它仅使用 SPI 来收集数据。

    您能否找到我需要用于多任务 BLE 3.0堆栈的预定义符号、这些符号与 Sensortag 类似? 我将 BLE 2.0 Sensortag 示例的设置与 BLE 3.0堆栈的 Project Zero 示例进行了比较、它们非常不同。 此外、Sensortag BLE 2.0不是 OSAL_MAX_NUM_PROXY 任务=3预定义符号。 因此、我想知道它如何工作、因为它有5个不同的任务。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TI 不会为 CC2640R2器件生成 SensorTag、因此您在 BLE 3.0堆栈中找不到 SensorTag 代码。 不过、可以移植它、但必须记住、同步机制已被更改、以使用 TI-RTOS 事件而不是信标。 否则、只应进行最小的更改。 供您参考:simple_peripheral 项目实现了新的机制、可用作任何 SensorTag 项目的模板。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jomar、您好!

    非常感谢您的回复。 我们遵循了 CC2640R2移植指南。 或者我们根本无法使项目正常工作。 我们的问题是两个任务可以正常工作、但一旦添加了第三个任务、它就会停止工作。 如果 Sensortag 不受支持、TI 能否为 CC2640 R2提供一个多任务示例。

    cc2640R2 BLE 堆栈附带的简单外设项目无法为我们提供帮助、因为所有项目都适用于单个任务、但不适用于多个任务。

    R2 (BLE3.0)更改为 TI-RTOS 事件而不是信标 (BLE 2.0)的原因是什么? 我认为我们不应该将这称为一个最小的变化。 尽管代码更改看起来只有几行、但更改可能会对多任务项目产生很大影响、这正是我们的情况。

    谢谢、