你好,
我仍然在用两个usb开发套件测试l2cap带宽。我看到了一些规律,但我无法解释。
第一个,见附图(picture .pdf)。复位后,当中央连接到周边。前8-10秒左右,我总是得到1.1-1.2Mbps(任务打印带宽每500ms)。之后它大概下降。15 - 20%。过了一段时间后,下降到一半。我测试了几种负载大小(245 - 1751字节),连接间隔为6,phy 2M, DLE 251字节,总是这样发生。当我将连接间隔设置为7时,第一个15-20%的下降仍会在8-10秒后发生,但第二个不会。但在7个间隔时,我也得到更低的初始带宽,与有效载荷大小无关。(6个我最初得到1.2mbps,然后是1mbps, 7个我最初得到1mbps,然后是0.8mbps)。 There is no memory leak in the main task, idlehook gets time.
对于间隔6,最初每500ms有75-80个包,然后降到每500ms 65-70个包(通过ad_ble_get_lld_stats进行检查)。
对于间隔7,最初是每500ms 67-70个包,然后降到每500ms 56-58个包(通过ad_ble_get_lld_stats进行检查)。
第二个是一个观察:无论有效载荷大小如何,可用的信用总是减少一个。为了我对每个PDU的理解(251bytes),应扣除一项信贷。如果我在MTU大小的2个字节内设置有效负载大小,我只能扣除两项积分。我可能错了。
你可以给我一个暗示我应该检查的东西,为什么15-20%的下降在8-10秒后发生?
谢谢你!
设备:
嗨VargaAdam,
如前所述的论坛线程中提到,总的来说,SIG未添加2MPS以增加吞吐量,而是增加带宽,因此可以共存更多的BT设备。我强烈建议您使用BLE嗅探器检查连接间隔是否完全使用。在UART中打印延迟系统。带宽下降可能的可能原因可能是:
谢谢,PM_Dialog
你好,
我将pm_sleep_mode_set(pm_mode_active)和USE_BLE_SLEEP设置为0。吞吐量在8秒后仍然回落。
连接参数是7在连接事件的双方,我没有看到任何conn. param更新事件在任何一方在测试期间。我使用ble_central和ble_peripheral项目作为起点。
printf只让系统慢了一点点,但我用的不多,每500ms只有1个。我不打算以这个速度连续使用系统,我需要短但高吞吐量的突发事件。但如果带宽因为某种原因减少了15-20%,这对我来说很有意义。
我目前没有嗅探器,但我会感谢任何进一步的提示,何心权。
问候,
嗨VargaAdam
您正在使用的连接间隔是多少?在最初的评论中,您提到您正在使用连接间隔6和7。你能解释一下吗?另外,您对正在使用的SDK项目做过任何修改吗?一个BLE嗅探器会很有帮助……
谢谢,PM_Dialog
你好,
我尝试用间隔6,然后也用间隔7。吞吐量总是在8秒后下降。从那以后,我也尝试使用间隔10。相同的结果。尝试不同的有效载荷长度。相同的结果。
是的,我对SDK项目做了修改,因为ble中央和外围项目没有l2cap通信。我修改了必须处理的事件。删除了gatt服务并添加了l2cap通道创建代码。
问题仍然是,不管我怎么做,吞吐量在8秒后会下降15-20%。目前我不明白低功率时钟稳定定时器和吞吐量之间的联系。
如果我能提供更多的信息,尽管问。
方面,
嗨VargaAdam,
很抱歉回复晚了。我可能没注意到你最后的评论。可以分享一下你所做的修改吗?是否执行连接参数更新?
谢谢,PM_Dialog
你好,
没关系,这个问题已经解决了。谢谢!
问候,