本文共 2088 字,大约阅读时间需要 6 分钟。
发送间隔:24ms
发送包长度:20字节问题:
1:主机通过GATT_WriteNoRsp向从机写入数据,当写速率过快时,就会出现blePending原因:这是由于出现前面设置的缓存区小和连接间隔太大等参数导致的
解决: 1:将这两个调至成这个,放在ti_ble_config.h,MAX_NUM_PDU和MAX_PDU_SIZE定义6个Tx缓冲区,每个缓冲区251字节。用户应用程序应该根据自身堆栈情况进行分配。如果没有足够的堆栈,可以通过减少MAX_NUM_PDU,这样可能导致吞吐量的损失。实际使用中的最坏情况是MAX_NUM_PDU和MAX_PDU_SIZE的乘积。设计人员应该根据设备的可用内存来平衡这些参数。
#define MAX_NUM_PDU 6
#define MAX_PDU_SIZE 251我们配置L2CAP MAX_PDU_SIZE 为255, ATT_MTU 最大 为251 读写特征值最大长度应该ATT_MTU-3=248; //source\ti\blestack\profiles\simple_profile\simple_gatt_profile.h SIMPLEPROFILE_CHAR5_LEN Line 85 #define SIMPLEPROFILE_CHAR5_LEN 248
2:简单粗暴将连接间隔调小些
注意,在实际情况下更高的连接间隔有着明显的缺点:由于射频干扰导致的连接事件将大大降低吞吐量。因此用户需要根据所需吞吐量进行权衡。当连接间隔大于100ms后,吞吐量将不会增加。 将原来的8001.25ms,修改成241.24ms 将最小的连接间隔“修改成7.5ms![在这里插入图片描述](https://img-blog.csdnimg.cn/20200714193709775.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poaV9BbGFud3U=,size_16,color_FFFFFF,t_70
bool center_Gatt_Write(uint8 char_type,uint8 *p_data,uint16_t len) { attWriteReq_t req; // uint8_t charVals[4] = { 0x00, 0x55, 0xAA, 0xFF }; // Should be consistent with // those in scMenuGattWrite uint8 conndle_index=mac_find_connHandle(stu_other.COMMDEV_mac); if(conndle_index==10) return false; req.pValue = GATT_bm_alloc(connList[conndle_index].connHandle, ATT_WRITE_REQ,len,NULL);//sizeof(charVals) , NULL); if ( req.pValue != NULL ) { if(char_type==1) req.handle = connList[conndle_index].FFX2_Handle;// req.handle = connList[get_currt_conn_num()-1].FFX2_Handle; else req.handle = connList[conndle_index].FFX4_Handle; req.len = len; memcpy(req.pValue,p_data,len); req.sig = 0; req.cmd = 1;//0;// status = GATT_WriteCharValue(connList[conndle_index].connHandle, &req, get_selfEntity());//0; status_gatt=GATT_WriteNoRsp(connList[conndle_index].connHandle, &req); if(status_gatt != SUCCESS) { GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ); return false; } } return (true); }
可以加入QQ群:687360507 与大伙沟通交流,技术在于分享而进步
转载地址:https://blog.csdn.net/zhi_Alanwu/article/details/107345547 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!