改变连接参数后连接事件计数器的奇怪行为

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
10个帖子/ 0个新
最后发表
VargaAdam
离线
最后看到:5天21小时前
加入:2019-12-31 16:19
改变连接参数后连接事件计数器的奇怪行为

你好,

我经历了以下步骤来重现问题

—中央连接时间间隔最小/最大设置为50

-中央连接6、7或8外围设备

-连接到外围设备后,中央设置连接间隔min/max为每个连接25

-连接参数得到更新和完成没有错误的中央和外围

怎么了:

CConnection Event计数器(由AD_BLE_GET_LLD_STATS()和CMAC_INFO_TABLE_PTR-> BLE_CONN_VT_COUNTER)在中央边(在我看来)中表现出色,因为对于某些连接,因此事件计数器的行为正常行为(计数器增加双打的速率)但是连接对应于设置50的速率保持速率。这仅在中心侧发生,所有外围计数器根据新的(25)连接间隔增加。通常在8个连接中始终为1st,第6,第7和第8个连接计数器损坏。直到6个连接,这不会发生。连接参数更新是根据所有边的API成功的。我不确定连接间隔本身是否已更新,但即使它确实如此,conn。事件计数器应保持中央和外围设备的同步。

我使用SDK 10.0.8.105和DA14695作为中心和外围设备。

你能不能检查一下,或者解释一下我哪里做错了?

问候,

设备:
PM_Dialog
离线
最后看到:1天1小时前
工作人员
加入:2018-02-08 11:03
嗨VargaAdam,

嗨VargaAdam,

让我查一下,然后再回复你。

谢谢,PM_Dialog

PM_Dialog
离线
最后看到:1天1小时前
工作人员
加入:2018-02-08 11:03
嗨VargaAdam,

嗨VargaAdam,

是否有可能提供BLE嗅探器捕获,以便我们可以了解什么是发生在空中?请说明多外设功能是否如预期的那样工作?你检查过传送的数据包的顺序了吗?你能看到正确的顺序吗?如果你能提供额外的投入和解释你的问题,这将非常有助于了解问题是什么。

谢谢,PM_Dialog

VargaAdam
离线
最后看到:5天21小时前
加入:2019-12-31 16:19
你好,

你好,

我没有嗅探器,尚未检查消息时间。问题是,事件计数器在相对于外围侧的中心侧变得反应。

一个例子:

我用8个外设连接50最小/最大连接时间间隔。

所以连接间隔计数器在中央和外围同步,这意味着。在1秒内,它们增加了16倍(正确地对应于62.5毫秒时间间隔)。

然后在中央端调用ble_gap_conn_param_update()25所有连接索引的Min / MAX(0个奴隶,300个监控)。我收到相应的连接参数更新和连接参数更新完成的事件,这些事件显示成功。同样在外围方面一切都显示了UDPate发生了。

然后,如果我检查连接间隔计数器,我会在中央侧看到1秒内增加32(对应于31.25MS间隔)对于第2,第3,第4和第5和第5个连接,但仅增加16次数为第1、6、7、8个连接指数。所有外围显示32他们的活动柜台的时间增加。

因此,我看到连接间隔计数器变得不同步。如果我没记错的话,只有5个以上的连接才会发生。

问候,

PM_Dialog
离线
最后看到:1天1小时前
工作人员
加入:2018-02-08 11:03
嗨VargaAdam,

嗨VargaAdam,

捕获一个嗅探器将非常有帮助,这样我们就可以更好地理解这个问题。不过,非常感谢你的解释。

如果我明白地理解这种去同步,一旦中央将连接参数更新发送到所有连接的外围设备,因此连接间隔从50ms更改为25ms。虽然连接间隔为50ms(在更新之前),但连接间隔计数正按预期工作。

是中央向所有连接的外设发送连接参数更新请求而它们无法接收它,还是它们接收到它但失败了?ble_gap_conn_param_update() API返回BLE错误代码(ble_error_t),因此您可以检查中心请求25ms连接间隔时的状态。API返回所有外设的状态是什么?如果它们都接受它并且没有失败,每个外设的状态应该是BLE_STATUS_OK (= 0x00)。除非,请说明什么是BLE错误码。

中央应在更新的连接间隔之间提供所有8个外设连接。由于连接间隔(25ms)非常短,8个连接可能不适合,因此,中央不能“讲”所有这些。

此外,建议不要为最小和最大连接间隔使用相同的值。如果两者具有相同的值,这意味着BLE设备应仅在特定时间空中。建议在最小和最大连接间隔之间具有10ms的间隙,以便设备具有重试的可能性。

我强烈建议执行以下测试:

测试1

在更新参数请求后,使用100ms的初始连接间隔(而不是50ms)和50ms的新连接间隔(而不是25ms)。结果如何?你能复制这种行为吗?

如果您在最小值/最大值之间至少有10ms的间隙,那将是很好的。

ble_gap_conn_param_update()重新运行的每个外设的BLE错误代码是什么?

测试2

使用50ms初始连接间隔和新的连接间隔,但仅使用一个连接的一个外设。你能告诉我结果吗?

总之,我们怀疑25ms对于中央服务器来说太短了,无法服务于8个外设连接。

谢谢,PM_Dialog

VargaAdam
离线
最后看到:5天21小时前
加入:2019-12-31 16:19
你好,

你好,

  • 明确一下,连接间隔是5025,对应于62.5毫秒31.25毫秒间隔(当你写的不是50ms和25ms)
  • 我已经说过,所有API函数都返回OK,两侧的连接参数更新事件也可以正常。
  • “中央是否将连接参数更新请求发送到所有连接的外围设备,并且他们无法接收它,或者他们收到它,但它失败了?”不,我说,外围设备更新它们的连接间隔,问题在中央侧,尽管中央启动了参数更新。
  • “中央应该在更新的连接间隔之间服务所有8个外设连接。由于连接间隔非常短(25毫秒),可能不适合8个连接,因此,中央无法与所有连接“交谈”。这不是很具体。目前我没有中央设备和外设之间的任何数据传输。这与带宽无关,正如我所说的,外围设备会更新它们的连接间隔,这样它们就能得到消息。
  • “另外,建议不要为最小和最大连接间隔使用相同的值。如果两者都具有相同的值,这意味着BLE设备只能在特定时间在空中。建议有一个至少在min和max连接间隔之间的10ms间隙,以便设备有可能重试。“我在此声明中看到了冲突发布说明中已知的限制105.08:控制器堆栈不会改变应用程序为LL_CONNECTION_PARAM_REQ提供的最小和最大连接间隔。这可能导致多连接期间的调度冲突。解决方法:将应用程序到触发器控制器的最小和最大连接间隔设置为相同的值,以选择在多连接场景中调度冲突最小的值。
  • “总之,我们怀疑,25姆斯对于中央提供8个外围连接。”正如我所说的,它不是25毫秒但是有32.5毫秒,并且我可以设置值,因为API为更新的参数提供了确定?

问候,

VargaAdam
离线
最后看到:5天21小时前
加入:2019-12-31 16:19
p

p

PM_Dialog
离线
最后看到:1天1小时前
工作人员
加入:2018-02-08 11:03
嗨VargaAdam,

嗨VargaAdam,

很抱歉耽搁了。我正在检查,所以我会尽快给你回复。谢谢你的提醒。

谢谢,PM_Dialog

PM_Dialog
离线
最后看到:1天1小时前
工作人员
加入:2018-02-08 11:03
嗨VargaAdam,

嗨VargaAdam,

我会在内部询问该团队有关附注105.08。感谢您对连接间隔的澄清。是否有可能以更大的连接间隔运行建议的测试1?我们想检查是否可以通过更大的连接间隔复制该行为。

谢谢,PM_Dialog

VargaAdam
离线
最后看到:5天21小时前
加入:2019-12-31 16:19
现在我做不到,

目前我不能这样做,但希望直到下周或下周开始我有机会。