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.

[参考译文] CC2652R7:在广播设备模式下未检测到外设。

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1229211/cc2652r7-peripheral-not-getting-detected-in-broadcaster-mode

器件型号:CC2652R7

我使用 Launchpad 中的 simple   peripheral 示例、并在 simple_peripheral.syscfg 文件中将"传统事件属性选项"设置为"可连接和可扫描的不定向"、终端上会显示一个设备地址、如图1所示、该设备可由其他 BLE 器件检测到。

当将其转换为 "不可连接和不可扫描的非定向"模式时、终端上不会显示任何地址、如图2所示、并且其他 BLE 设备也无法检测到它。

我想计算中心设备在特定时间从广播设备接收到的数据包数量、为此我需要标识广播设备。

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

    您好!

    感谢您与我们联系。 如果广播更改为不可扫描的未连接、则以扫描角色运行的低功耗蓝牙器件都不会扫描或报告广播。 这是预期行为、因为广告会指定不应扫描它们或将其用于建立连接。  如果您希望通过广播测量器件的吞吐量、则需要将广播设置为至少可扫描。 然后、您可以修改中心项目、以持续扫描和检查某个广播是否属于您的外设、并测量数据包之间的间隔时间以及数据包有效载荷的大小。

    如果您对连接吞吐量感兴趣、我建议参考我们在 ble_examples gitHub 上提供的蓝牙5吞吐量演示项目。

    此致、

    1月

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

    大家好、Jan、

    感谢您的快速响应。 我不熟悉 BLE、因此如果我弄错了、请放心修改我。

    如果我想使用不可扫描的不可连接模式、那么观察者应该使用什么配置来接收来自广播设备的信息? 如果在这种模式下无法从广播机构接收信息、那么这种模式的用途是什么呢?

    此外、BLE 信标在此模式下不起作用?

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

    您好!

    不用担心! "对不起,我不小心给弄丢了。" 扫描设备可以扫描不可扫描的广播、但它们不会响应扫描请求并发送扫描响应。 不可扫描的不可连接配置只能用于信标用例。 在不可扫描的不可连接配置中,设备将广播任何扫描器都可以读取的数据,但不会响应扫描请求,也无法建立连接。

    此致、

    1月

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

    您好、Jan、

    正如您提到的-"在不可扫描的不可连接配置中、设备将广播任何扫描器都可以读取的数据"、因此这正是我所面临的问题。 当我将器件保持为不可扫描的不可连接配置时、我无法看到分配给外设的任何器件地址、我可以使用这些地址在观测器处跟踪外设。  

    此外、我也无法使用其器件名称进行跟踪。   

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

    您好!

    明白了、我的道歉! 您能分享您的扫描方式吗?

    此致、

    1月

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

    我将在另一个 BLE 设备上使用 simple_central 项目。 此外、我还尝试使用 BLE 扫描仪应用在移动设备和 PC 上使用-   chrome://bluetooth-internals/#适配器找到该设备

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

    Garvit、您好、

    使用不可扫描广播时、器件不会发送扫描响应。 如果中心设备使用扫描响应来识别附近的设备、则无法检测到它。扫描仪应查找广告本身、而不是扫描响应。

    此致、

    1月

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

    大家好、Jan、

    您能否指导我如何修改简单的中央项目?

    谢谢

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

    Garvit、您好、

    没问题! 通过查看这些代码、我们似乎在默认情况下过滤掉了任何不可连接的数据包、如下所示:

    要捕获不可连接的数据包,您需要从 temp16变量中删除 scan_FLT_PDU_connectable_only 定义。 我不确定具体要筛选哪些数据包、因此建议参考 gap_scanner.h 文件。 具体来说、是列出以下滤波器类型的部分:

    您可以添加要应用到扫描仪的任何过滤器(前提是它们不会相互冲突),扫描仪只能处理这些数据包。 让我知道您在对滤波器参数进行修改后是否能够看到所需的数据包。

    此致、

    1月

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

    大家好、Jan、

    非常感谢 Jan 在之前的回复中分享的见解。

    我将 temp16修改为 temp16 = SCAN_FLT_PDU_NONCONNECTABLE_ONLY | SCAN_FLT_PDU_COMPLETE_ONLY;

    我现在面临的问题是-  

    1)如何修改 simple_peripheral 代码以在不可连接和不可扫描模式下为器件分配一个地址? 即使 simple_central 项目正在扫描不可连接的广播、它也需要某种方法来识别器件、但目前 simple_peripheral 未在该模式下为器件分配任何地址。

    2) 2)在修改 simple_central 代码时、它正在将 error.c 文件输入到以下位置并停止执行。

    谢谢。

    加尔维特

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

    Garvit、您好、

    我认为 simple_peripheral 项目仍有一个地址(即使未打印)、 因此、如果我们修改 simple_peripheral 代码以打印地址、或添加一些可在 simple_central 侧查找的唯一广播数据、我们可以确定哪一个是正确的设备。 您是否具有蓝牙监听器的访问权限? 如果是、这将帮助我们确定是否正确发送数据包。

    对于2),当你在错误函数处暂停执行时,你能提供 GapScan_SetParam()的返回代码以及调用堆栈吗? 我希望确切地了解该程序是如何到达该区域的。

    此致、

    1月

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

    大家好、Jan、

    很抱歉响应延迟。 我当时在学习数据包监听器、在我看来、我们需要一些特定的硬件来使用它、而我目前还没有这些硬件。

    当我现在尝试调试代码时、它既没有进入 error.c 文件、也没有检测到外设。 我只能听到电脑定期发出的错误声音。 声音与我们 在 CCS 中使用 Ctrl+F 查找字符串时得到的声音类似、但代码中不存在。 当我退出 term 终端时、声音也会停止。

    我还在努力弄清楚原因。 如果您有任何建议、请告诉我。

    谢谢

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

    Garvit、您好、

    我对你最后的评论有点困惑。 为了说明这一点、您不再看到之前的错误代码、但是现在程序运行时、您的 PC (源自您的 UART 终端)会发出错误声音吗? 您是否可以指定已配置 UART 终端的串行设置您是否可以在屏幕上共享任何输出?

    此致、

    1月

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

    大家好、Jan、

    我已 将串行设置设置设置为如图1所示,并且 UART 终端显示屏在几秒钟后就会冻结,如图2所示。

    谢谢。

    加尔维特

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

    Garvit、您好、

    您似乎正在打印收到的广播包。 是这样吗? 如果是,那么您现在是否可以尝试删除 print 语句以查看是否仍然存在该行为?

    此致、

    1月

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

    大家好、Jan、

    删除 print 语句后已解决此错误问题、但我仍然无法检测到外围设备。 我已经通过以下方式为外围器件添加了计数器-  

    静态 uint32_t counter = 0;

    uint8_t temp[6]={0xCA、0x00、0x00、0x00、0x00、0xCA};//我给外设器件的随机静态地址

    // SimpleCentral_processAppMsg 函数的情况 SC_EVT_ADV_REPORT 下的计数器设置  

    if (memcmp (temp , pAdvRpt->addr , 6 )== 0){
    计数器=计数器+1;
    Display_Print1 (dispHandle、4、0、"counter %d"、
    计数器);

    我已经在计数器上设置了一个断点、但代码永远不会在这里停止。

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

    您好!

    我很高兴听到我们能够解决串行终端问题。 您能否说明您是如何设置随机静态地址的? 我建议将外设设置为公共广播模式、并改用该地址。 您是否能够获得之前讨论过的监听器硬件? 这将极大地帮助我们了解空中发生的情况。

    此致、

    1月

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

    您好、Jan、

    我已在 simple_peripheral.syscfg > General Config >地址模式下设置随机静态地址。  

    公共广播模式的问题在于它一直在变化、每次我断开电路板时、我都必须再次更改中央侧的代码以进行跟踪。  

    关于 Sniffer 电路、目前我无法访问它、因为我要将器件设置为不可连接的和可扫描的模式。

    谢谢。

    加尔维特

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

    Garvit、您好、

    我懂了。 对于此意外行为可能造成的不便、我深表歉意。 一旦您可以访问监听器、请告诉我们、我们将非常乐意帮助调试数据包日志。 您是否仍然能够使用建议的权变措施(非连接和可扫描模式)实现所需的功能?

    此致、

    1月

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

    您好、Jan、

    是的、我目前正在努力获取该功能。 感谢您的答复、现在结束。

    此致、

    加尔维特

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

    Garvit、您好、

    这听起来不错。 我暂时关闭这个主题、如果 有任何更新可分享、请回复此消息、并应重新打开该主题。 30天后、该主题将永久关闭、但如果您有更新、则可以打开相关主题、我们将为您提供新主题的帮助。

    此致、

    1月