工具与软件:
你好
我正在开发一个基于多角色的应用程序、我有以下任务:
我有多个器件彼此靠近放置。 在某些情况下、它们(全部或部分)可以通过广播消息(广播)广播一段时间(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%运行。 我不太明白滤波器是如何影响这一点的?
为了确保所有在空中运行的设备都能找到邻居、最好遵循哪种策略?