您好!
在使用 CC2652R7时、我们需要为某些问题提供帮助。
目前的问题 是、将 芯片用作核心用途时:
1.扫描设备时仅检测到8台设备。 此外,许多人在列表中注册了两次。 如何将此列表放大以找到我的节点?
2.如何在特征上启用通知/指示?
此致
D·安德森
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.
尊敬的 David:
感谢您与我们联系。
1 -默认情况下、最大扫描结果数限制为8 (请参阅 simple_central.h 中的定义 DEFAULT_MAX_SCAN_RES)。 此值可以略微增加(最多27个),但对于繁忙的环境可能不够。
相反、我建议使用不受限制的扫描并即时处理扫描结果。
要执行此操作,请确保调用 GapScan_enable ()并将0作为最大结果数:
GapScan_enable(0, DEFAULT_SCAN_DURATION, 0);
然后、在接收到事件"SC_EVT_ADV_REPORT"时、检查允许识别您的器件的任何广播信息。
如果有用、可将 simple_central 中的代码配置为在使用 default_dev_dec_by_SVC_UUID = true 时执行我刚刚描述的操作。 (注意:在这种情况下、广播器的标识是基于广告数据中包含的服务 UUID)。
2-我建议参考 simple_socket_client 示例(https://github.com/TexasInstruments/ble_examples/blob/simplelink_cc13xx_26xx_sdk-6.40/examples/rtos/LP_CC2651R3SIPA/ble5apps/simple_serial_socket_client/Application/simple_serial_socket_client.c)。 SimpleStreamClient_enableNotifications 函数展示了 您想要的 https://github.com/TexasInstruments/ble_examples/blob/simplelink_cc13xx_26xx_sdk-6.40/source/ti/ble5stack/profiles/simple_serial_stream/simple_stream_profile_client.c#L417内容
我希望这将有所帮助、
此致、
高克莱门特
感谢您的回复。 我和 David 在同一个开发团队工作、我想进一步讨论问题1。 我们现在使用的是无限制扫描、但这似乎是一个与高噪声 BLE 环境相关的问题。 当我们使用 SimpleCentral 在 BLE 流量较低的位置查找目标节点时、它通常会返回我们查找的 SC_EVT_ADV_REPORT。 但是、在我们办公室、相当拥挤的 BLE 环境中运行相同的设置时、尽管距离很近、我们很少从目标节点收到 SC_EVT_ADV_REPORT。
我们也尝试了不同的 DEFAULT_SCAN_DURATION 设置、但它似乎对结果没有太大影响。 当使用 Android 扫描仪工具时、如 NRF Connect、我们的目标节点会出现。
是否有任何迹象表明我们可以采取哪些措施来改善这种情况?
此致、
马丁
尊敬的 Martin:
当我们的办公室中运行相同的设置,一个相当拥挤的 BLE 环境时,我们很少从目标节点收到 SC_EVT_ADV_REPORT
如果尚未完成、则应在"SC_EVT_ADV_REPORT"案例中实现用于识别您要查找的器件的逻辑。 要执行此操作、您可以查看器件地址或广播数据。
此外,您还可以考虑启用一些筛选(请参阅 https://software-dl.ti.com/simplelink/esd/simplelink_cc13xx_cc26xx_sdk/7.10.01.24/exports/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/gap-cc13xx_cc26xx.html#gap-scanner ,尤其是#4)。 即使我在所指的文档中没有提到它、您也可以启用基于 RSSI 的滤波。
我希望这将有所帮助、
此致、
高克莱门特
我们在"SC_EVT_ADV_REPORT"情况下添加了逻辑、但该事件绝不会来自较低层(堆栈)。 这就是我们的核心问题:在繁忙的 BLE 环境中、堆栈从不报告事件、因此在我们的案例中、在事件级别进行筛选不是解决方案。
如果我们使用任何其他监听器应用程序(如 NRF Connect)执行扫描、则会在很短的时间内显示30个或更多节点、包括我们的目标节点。 在 TI、我们得到3-4个、扫描期间最多为10-12个"SC_EVT_ADV_REPORT"事件。 这表明存在严重错误的情况。 在 CC2652R7 Launchpad 和我们的定制 PCB 上可以获得相同的结果。
我不确定是由于堆栈配置不当造成的、还是什么原因会导致此问题。
我们使用的是 SDK 6.40和7.10、但它们的行为似乎是相同的。
此致、
马丁