你好,
我还在用两个usb开发包测试l2cap带宽(参见我之前在2020-01-01星期三16:24发表的文章)。我看到某些模式,我无法解释。
第一张,见附图(pic.pdf)。复位后,当中央连接到外围时。前8-10秒左右我总是得到1.1-1.2Mbps(任务每500毫秒打印一次带宽)。之后下降约15-20%。过了一段时间,它就降到了一半。我测试了几种负载大小(245-1751字节),连接间隔是6,phy 2M,DLE 251字节,总是这样。当我将连接间隔设置为7时,第一次15-20%的下降仍然发生在8-10秒之后,但是第二次没有。但是在7间隔时,不管有效负载大小如何,初始带宽也会降低(使用6我最初得到1.2mbps,然后是1mbps,使用7我最初得到1mbps,然后是0.8mbps)。主任务中没有内存泄漏,idlehook获得时间。
间隔为6时,最初每500ms有75-80个数据包,然后下降到每500ms 65-70个数据包(使用adu ble\u get\u lld\u stats检查)。
间隔为7时,最初每500ms有67-70个数据包,然后下降到每500ms 56-58个数据包(使用adu ble\u get\u lld\u stats检查)。
第二个是一个观察:无论有效载荷大小如何,可用的信用总是减少一个。为了我对每个PDU的理解(251bytes),应扣除一项信贷。如果我在MTU大小的2个字节内设置有效负载大小,我只能扣除两项积分。我可能错了。
你可以给我一个暗示我应该检查的东西,为什么15-20%的下降在8-10秒后发生?
谢谢您!
设备:

嗨,瓦尔加丹,
如前所述的论坛线程中提到,总的来说,SIG未添加2MPS以增加吞吐量,而是增加带宽,因此可以共存更多的BT设备。我强烈建议您使用BLE嗅探器检查连接间隔是否完全使用。在UART中打印延迟系统。带宽下降可能的可能原因可能是:
谢谢,下午好
你好,
我设置pm\u sleep\u mode\u set(pm\u mode\u active)并将BLE\u sleep设置为0。吞吐量在8秒后仍然会下降。
连接参数在连接事件的两边都是7,在测试过程中,我在两边都没有看到任何conn.param update事件。我使用了ble\u中心和ble\u外围项目作为起点。
printf的慢系统只有很少,但我不使用太多,只有1每500毫秒。我不打算以这种速度连续使用系统,我需要短而高吞吐量的突发。但是如果带宽由于某种原因减少了15-20%,这对我来说是非常重要的。
我目前没有嗅探器,但我会感谢任何进一步的提示,何心权。
问候,
嗨,瓦尔加丹
您使用的连接间隔是多少?您在最初的评论中提到您正在使用连接间隔6和7。您能澄清一下吗?此外,您是否对正在使用的SDK项目进行了任何修改?一个有能力的嗅探器会很有帮助…
谢谢,下午好
你好,
我尝试了间隔6,然后也尝试了间隔7。吞吐量下降总是在8秒之后。从那时起,我也尝试了间隔10。同样的结果。尝试了不同的有效负载长度。同样的结果。
是的,我对SDK项目做了修改,因为ble中央和外围项目没有l2cap通信。我修改了必须处理的事件。删除gatt服务并添加l2cap通道创建代码。
问题仍然是,不管我做什么,吞吐量在8秒后下降了15-20%。目前我不明白低功耗时钟稳定定时器和吞吐量之间的关系。
如果我能提供更多的信息,请尽管问。
尊敬的,
嗨,瓦尔加丹,
我为迟来的答复道歉。也许我错过了你最后的评论。有没有可能分享你所做的修改?是否执行连接参数更新?
谢谢,下午好
你好,
不管怎样,这个问题在这期间已经解决了。谢谢!
问候,