TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2640R2F: Ble pending

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例程测试看看时间

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F: Ble pending
分享到: 更多 (0)