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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1454775/cc2652r7-setting-up-advertising-intervals

器件型号:CC2652R7

工具与软件:

你好
我正在开发一个基于多角色的应用程序、我有以下任务:
我有多个器件彼此靠近放置。 在某些情况下、它们(全部或部分)可以通过广播消息(广播)广播一段时间(T1)。 同时、他们自己必须在时间(T1)内扫描空气、并找到当前正在广播的相邻器件。

在设置过程中、我有几个问题。
1.最重要的是、配置参数以确保所有设备100%处于无线状态的最佳方法是什么:GAP_ADV_PARAM_PRIMARY_INTERRAM_MIN 和 GAP_ADV_PARAM_PRIMARY_INTERVAL_MAX (注释表明第二个参数实际上未被使用)、SCAN_INTERVAL 和 SCAN_WINDOW?


2.当我学习有关广播的理论时、有一篇文章指出、根据 BLE 标准、设备在三个通道(37、38、39个通道)上广播的时间不超过10毫秒。 我使用一个器件进行了实验、只需通过无线电广播并使用 NRF 监听器和 Wireshark。 我在不同的通道上看到广播数据包、但它们之间的时间大约为850 μs、无论 GAP_ADV_PARAM_PRIMARY_INTERRAM_MIN 和 GAP_ADV_PARAM_PRIMARY_INTERVAL_MAX 值的设置如何。 为什么会这样? 为什么广播持续时间不增加到10ms?


现在我已经实现了最佳配置选项、当 GAP_ADV_PARAM_PRIMARY_INTERVAL_MIN = GAP_ADV_PARAM_PRIMARY_INTERVAL_MAX = 32 (32*0.625 = 20ms)时
SCAN_WINDOW = 32 (20ms)
SCAN_INTERVAL = 64 (40ms)
扫描类型-被动

扫描仪重复过滤器-禁用

我按照以下逻辑进行操作:每个器件在某个时间点可以广播或扫描它。 因此、我将扫描间隔设置为40ms、其中20ms 将用于主动扫描(扫描窗口)、其他20ms 将用于无线广播。 考虑到每次扫描后都会添加高达10ms 的假随机延迟、我预计由于时间较短和额外的延迟、我将实现一些器件正在扫描、而其他器件同时广播、因此能够看到彼此。
通常、这个逻辑在大约80%的情况下都能成功运行、但如果您禁用重复筛选器、它几乎能100%运行。 我不太明白滤波器是如何影响这一点的?

为了确保所有在空中运行的设备都能找到邻居、最好遵循哪种策略?

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

    您好!

    一个广告事件(如果所有三个信道都启用)将包含三个背靠背发送的单独广告。 每个通道上各一个。 广播间隔(通过更新 GAP_ADV_PARAM_PRIMARY_INTERVAL 参数进行控制)决定广播事件之间的时间。 您需要测量广播事件之间的时间、而不是单个 PDU、因为这可能会导致一些混淆。

    此致、

    1月

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

    你好

    我知道 GAP_ADV_PARAM_PRIMARY_INTERVAL 参数定义了公布事件之间的间隔时间。 但为什么我看到不同信道上的广播间隔小于1ms? 它们不应该在一个信道上进行更长的广播吗? 或者、此类短广播间隔是否是 TI BLE 堆栈实施的一项功能?

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

    您好!

    我道歉,我误解了你的问题。 广播事件中每个广播之间的时间非常短、每个广播的传输时间也非常短。 这是低功耗蓝牙规范指定的设计。 在规范的第4.4.4.2.3节"可连接和可扫描的非定向事件类型"中规定、两个广播(ADV_IND PDU)之间的时间不得超过10ms。 因此、只要减少时间、也是可以接受的:

    每个数据包的实际传输时间将为微秒级。

    此致、

    1月

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

    你好
    根据我在上面发布的 TI 图片、我用它作为参考、在一个广告活动中、依次广播三个频道、每个频道不超过10ms。
    根据您的消息、现在听起来有点像这样:
    在一个广播事件期间(我们使用 GAP_ADV_PARAM_PRIMARY_INTERVAL_MIN 配置时间)、器件依次广播多次、依次打开三个通道中的每个通道(在我的案例中、一个通道上的广播时间约为850 µs)、而不是像图中那样仅广播三次。 我是对吗?

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

    您好!

    在广播事件中、器件将广播三次(每个通道上一次)、然后等待广播间隔结束(由 GAP_ADV_PARAM_PRIMARY_INTERVAL_MIN 设置)后、再启动另一个广播事件。 单独广播(在给定通道上)与下一次广播(在另一个通道上)之间的时间不应超过10ms。

    此致、

    1月

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

    您好!

    然后,它让我更加困惑。
    我通过 GapAdv_params_t 结构在代码中配置广播参数。 这个结构有两个参数负责公布间隔:primIntMin 和 primIntMax。
    源代码表明不使用 primIntMax (GAP_ADV_PARAM_PRIMARY_INTERVAL_MAX)、因为始终使用 primIntMin 参数(GAP_ADV_PARAM_PRIMARY_INTERVAL_MIN)。
    我将这两个值都​​​​设置为32、即32 * 0.652ms = 20ms、这是我公布的一个间隔的持续时间。
    在一个间隔(20ms)内、该器件依次在三个通道(37、38、39)上广播。
    根据 Wireshark、我看到通道广播每20ms 重复一次、对应于间隔。 但在一个间隔内、每个通道上的广播时间略小于1ms。 结果证明、在20cm (一个间隔)期间、器件在每个通道上广播850 µs、然后只是等待间隔结束。
    这是堆栈的正确行为吗? 因为我预计广播持续时间会与广播间隔的持续时间成比例增加(不超过10ms 的限制)
    我仍然不了解栈如何在一个广播间隔内计算每个通道的广播时间。

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

    您好!

    我相信您的理解是正确的、但比例行为除外。 我不认为这是低功耗蓝牙规范描述的行为。 您能说明一下在哪里找到此要求吗? 说到广播时间、您是否指的是在个别广播期间 TX 处于活动状态的时间? 如果是、那么我认为这也是由规范指定的。

    此致、

    1月

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

    你(们)好

    这只是我的猜测。 我是根据提供的信息和图像来进行设计的。 我不是完全清楚为什么一个通道上的广播(pduInterval)不超过10ms、但实际有效广播的持续时间小于1ms。 这是什么意思呢? 仅节能?

    我的逻辑是、我们可以配置通告事件的持续时间(在本例中为20ms)、然后在该时间间隔内、每个通道广播等量的时间、但不超过10ms (即20/3 = 6.66ms)。

    事实上、无论我在应用程序中设定的时间间隔、每个频道的直播时长都是850 μs、而其余时间则是沉默的?

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

    您好!

    明白了。 为了提供一些背景信息、低功耗蓝牙规范旨在实现尽可能低的功耗、同时仍保持良好的通信性能。 协议通过尽可能延长关断时间和无线电停止传输的时间来实现这种低功耗。 因此、您会发现设备在广播时大多不进行传输。 您找到的单个广播通道事件的 TX 时间听起来对 BLE 而言是正确的。

    此致、

    1月

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

    你(们)好

    好的、谢谢。 让我们认为事情已经结束。