你好,
我仍然在用两个usb开发工具包测试l2cap带宽(见我之前在周三,2020-01-01 16:24)。我看到了一些我无法解释的规律。
第一个,见附图(pic.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检查)。
第二个只是一个观察:无论有效载荷大小,可用信用总是减少1。根据我的理解,每个pdu(251字节)应扣除一个学分。如果我将有效载荷大小设置在mtu大小的2个字节内,我只能得到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
你好,
我尝试了interval 6和interval 7。吞吐量总是在8秒之后下降。从那时起,我也尝试使用间隔10。相同的结果。尝试了不同的有效载荷长度。相同的结果。
是的,我已经对SDK项目做了修改,因为ble central和peripheral项目没有l2cap通信。我修改了必须处理的事件。删除gatt服务并添加l2cap通道创建代码。
问题仍然是,无论我做什么,吞吐量在8秒后下降15-20%。目前我不明白低功率时钟稳定定时器和吞吐量之间的连接。
如果我能提供更多的信息,尽管问。
方面,
嗨VargaAdam,
很抱歉回复晚了。可能我错过了你上次的评论。是否可以分享你所做的修改?是否执行连接参数更新?
谢谢,PM_Dialog
你好,
没关系,这个问题已经解决了。谢谢!
问候,