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.

[参考译文] CC2640:添加 PWM 驱动器(使用多个不同的主机)时、我无法发现 CC2640的服务/特性。

Guru**** 2531950 points
Other Parts Discussed in Thread: CC2640, CC2640R2F, BLE-STACK

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/741698/cc2640-i-can-not-discover-the-services-characteristics-of-my-cc2640-when-adding-pwm-driver-using-multiple-different-hosts

器件型号:CC2640
Thread 中讨论的其他部件:、 BLE-STACK

大家好、我  在一段时间前问过这个相关的问题。

我遇到的问题是只能连接和发现特定类型的主机(如 iPhone 8、cc2640 host_test 和 might gecko)的特征。 但是、当我尝试连接另一台主机(如 iPhone X 或 BlueGecko)时、我无法通过连接后发现特征的阶段。

相关或非相关、当我添加 PWM 功能(使用 ti/drivers/pwm.h)时会发生这种情况。

我假设这是 TI-BLE 堆栈的问题、因为  我之前 的帖子中已经提到过这一点。  

是否与 ti-blestack 和 ti-drivers 存在关系、或存在任何内存缺陷/泄漏或不一致(例如存储服务更改指示标志所使用的 NVM ID 0x80)、从而阻止外设发现其服务/特征?

我应该如何避免此错误?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我以前在一个项目上遇到过同样的问题。 这似乎是 TI PWM 驱动程序上的错误或类似的错误。 此外,它可能与 PWM_init()相关,因为我的应用程序在启用时未发现特性。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Leoni、

    我不理解您的问题、您能更清楚吗? 当 PWM 功能未添加到您的项目中时、您是否能够从任何主器件中发现特征?

    您能否发布失败的服务/特征发现的监听器日志? 否则、无法知道 CC2640器件或主器件是否存在故障。

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

    你好。

    *监听器日志位于我之前的帖子中: 此处。 但为了清晰起见、我再次使用和不使用 PWM 进行嗅探(可能不相关、但会触发错误)。

    *我不使用配对或绑定。 只需连接即可。

    *问题是我说过的:根据主机的不同、PWM 会阻止建立连接(在发现特征时断开连接)。

    监听器:

    良好的连接:  

    Good connection_log: e2e.ti.com/.../good_5F00_connection.psd

    连接错误:

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

    CC2640R2F 是否挂起?

    通常情况下、您会看到主器件继续发送连接事件数据包、即使从器件停止响应(直到监控超时耗尽)也是如此。

    您的"良好连接"日志也似乎描述了一个不成功的情况、因为从器件不返回任何 ATT 响应。 (或者监听器可能只是缺少这些数据包?)

    您使用的是 BLE-Stack 和 SDK 的哪个版本? 您基于哪个示例项目?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Marie、  

    cc2640r2f 不会挂起。 我仍然可以与其 GPIO 交互。

    我使用的是 simplelink 1.40.00.45。 我的项目结构基于 simple_peripheral (使用适用于 Bluetooth Developer Studio 的 TI 插件生成的定制服务、我将 project_zero.c 用作主要蓝牙应用任务。)

    我的应用程序只使用一个应用程序任务(仅修改了 project_zero.c 中的任务)。

    此致。

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

    此处是否有任何有关 PWM/Buzzer 和 BLE Stack 的示例可供参考? 我也对此感兴趣。

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

    我无法看到 PWM 驱动程序本身会阻止 BLE-Stack 发送数据包、除非您在应用中使用关键部分。

    在不使用 PWM 的情况下、您能否确认在连接到任何主器件时应用程序始终工作?

    发生这种情况时、您能否检查任务堆栈大小?

    我认为您可能遇到了此已知问题(请参阅 blestack 版本说明):
    "在大多数外设应用程序上禁用了链路层连接参数请求程序、以提高连接参数请求与智能手机设备的兼容性。 将改用 L2CAP LE 信令。 在应用项目中定义 USE_LL_CONN_PARAM_UPDATE 以覆盖此行为"

    此问题已在最新版本(CC2640R2 2.30 SDK)中修复。 您能否更新到此 SDK 版本并重试?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Leandro、

    否、我们没有任何具有 BLE 和 PWM 的示例项目。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Marie

    [引述]

    在不使用 PWM 的情况下、您能否确认在连接到任何主器件时应用程序始终工作?

    [/报价]

    是的、它可以正常工作。 一旦我调用 PWM_init(),它就会停止工作。

    [引述]

    发生这种情况时、您能否检查任务堆栈大小?  

    [/报价]

    这是主任务的堆栈大小

    #define PRZ_TASK_STACK_SIZE           800

    我还尝试定义 USE_LL_CONN_PARAM_UPDATE、但没有任何更改。

    此致。

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

    您能否检查您的任务堆栈有多少可用/发生这种情况时是否存在堆栈溢出? 您可以在 ROV 的任务视图中看到这一点。

    根据监听器日志、您已经在主设备侧使用 USE_LL_CONN_PARAM_UPDATE。 最新 SDK (CC2640R2 2.30 SDK)中添加了 LL 连接参数更新的修复程序。 您能否更新到此 SDK 版本并重试?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Marie、  

    以下是我在每个存在的任务中的堆栈峰值:

      

    我目前正在尝试使用新堆栈。 我会随时通知您。

    此致。

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

    堆栈更新是否解决了您的问题? 由于不活动、我将关闭此线程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请不要关闭该主题、因为我没有完成移植。

    与 SDK 1.40.00有很大不同。我必须修改固件的结构。

    但是、您能不能推测出我在上一篇文章中发送的堆栈大小是多少?

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

    您好、Marie、
    一旦我将代码移植到新的 SDK、我就会遇到存储器放置问题:

    [引述]

    程序将不能放入可用的内存中。 对齐方式对".cinit"大小为0xfaf 的段进行放置失败。 可用存储器范围:cc26xx_app.cmd -/ble5_project_zero_cc2640r2lp_app/tools  

    [/报价]

    一旦我禁用日志、我就可以构建并链接程序。

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

    您的堆栈大小看起来都很合适、您在进行屏幕截图之前运行该程序的时间有多长?

    您的存储器放置问题只是您的代码太大。 您可以在 以下网址找到有关纤薄的建议:dev.ti.com/.../creating-a-custom-bluetooth-low-energy-application.html

    当然、第一步是删除您未使用的任何代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Marie。

    我运行了大约5秒钟(尝试连接、失败、拍摄了屏幕截图)。

    我将按明天的问题来了解这些内存放置情况、并随时向您通报情况。

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

    您是否设法符合您的代码? 您仍然有问题吗?

    由于不活动、我将关闭该线程、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我现在不处理这个问题、

    但是、我是否可以在我再次回到这个问题后立即重新打开该主题?

    否则、我希望保持线程打开。

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

    没关系。 如果该线程处于非活动状态的时间过长、它将被锁定。 如果发生这种情况、只需使用"提出相关问题"按钮创建新主题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    同时、我会将更新至较新 SDK 的建议作为建议的解决方案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Leoni、

    有时您需要清除移动电话蓝牙缓存或内存以查找蓝牙服务。 为此、您可以关闭蓝牙应用程序、然后关闭、再打开移动电话蓝牙。

    我在 SKDv1.40下使用过 PWM、不会导致任何问题。 请参阅下面的我的项目。

    markelthinkslearnscreates.wordpress.com/.../

    当您从 Bluetooth Developer Studio 创建定制服务时、需要对其进行修改以使其适用于 CC2640R2F SDK。

    我同意 Marie 将最新的 SDK 更新为分辨率。

    -kel