Part Number:CC2640R2F
Hi:
我使用CC2640R2F 开发,用的例程是协议栈自带的multi_role,
测试发现一个问题,描述如下:
在CC2640R2连接某个periheral 设备后,需要经过约6500ms后才能成功发给peripheral数据,
因已知peripheral的写特征值句柄,在一旦连接peripheral后在6500ms之内发数据会出现发送失败,ble pending,
只有经过约6500s后再发送数据给periperal才发送 成功。
请问,如何降低这中间的时间间隔,最好是一旦连接某个peripheral后,若已知写特征值句柄,在500ms内就能发给peripheral?
是否需要设置什么参数?
谢谢!
Kevin Qiu1:
你的发送间隔设置的是多少?可能是发送的太快了,缓存区满了
在ble_user_config.h中修改MAX_NUM_PDU和 MAX_PDU_SIZE的值,分别改为6和251
// Maximum number of BLE HCI PDUs. If the maximum number connections (above)// is set to 0 then this number should also be set to 0.#ifndef MAX_NUM_PDU #define MAX_NUM_PDU 5#endif
// Maximum size in bytes of the BLE HCI PDU. Valid range: 27 to 255// The maximum ATT_MTU is MAX_PDU_SIZE – 4.#ifndef MAX_PDU_SIZE#if defined(BLE_V42_FEATURES) && (BLE_V42_FEATURES & SECURE_CONNS_CFG) #define MAX_PDU_SIZE 69
或者将连接间隔改小一些
,
user6224880:
谢谢!
我的项目中MAX_PDU_SIZE已经是251,再将ble_user_config.h的MAX_NUM_PDU改成了6,
#ifndef MAX_NUM_PDU #define MAX_NUM_PDU 6//org 5#endif
经测试依然是约过6500ms才能发送成功,再将连接时间间隔由初始的200 ,配置成 10,测试结果为
当连接peripheral后,约过2000ms就可以发送成功,说明是连接间隔影响的。
我的连接间隔值接近设置极限了。
请问,还能有什么方法缩短连接后就能发数据给peripheral的时间间隔?比如连接后500ms后就能发送数据给peripheral。
谢谢!
,
Kevin Qiu1:
6500ms太长了,发送的数据包大小和发送间隔分别是多少?
你是如何测量的,将测试结果等更详细的数据传上来
直接使用例程测试发送时间肯定是在500ms以内的
,
user6224880:
Hi:
Kevin,我的发送数据包只有11个bytes,连接时间间隔最大最小都是200,发送间隔很慢接近2000ms一次,
我通过终端打印可见数据没有发送成功,在pending状态,只有约过6500ms后才能成功发出给peripheral。
如图可见,在30:08:665已经连接了peripheral,在30:12:152发送一条数据给peripheral,结果发送失败,原因是blepending.
只有到30:17.000后才能成功发给peripheral。从连上peripheral到成功发出这相差约6500ms了。
,
Kevin Qiu1:
你测一下peripheral发送相同数据到central设备需要的时间,或者直接用central例程测试看看时间