微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2541主从串口透传超过40字节

CC2541主从串口透传超过40字节

时间:10-02 整理:3721RD 点击:

从机向主机发数据:采用GATT_Notification,超过19字节时,自动分段发送,每一段最多19字节。例如,发送27字节拆分成19+8,发送45字节拆分为19+19+7,或者分割成四段19+19+19+9,都可以成功发送,主机完整接收并串口输出。

主机向从机发数据:采用GATT_WriteCharValue,超过19字节也自动分段发送,发送27字节拆分成19+8,可以成功发送,从机完整接收并串口输出;但是测试最多发送37,分成19+18,超过就会发生写特征值错误,WRITE_ERROR 22,例如发送45,分成19+19+7,但是只收到头一个19和末尾7,中间的19字节收不到,如果是19+19+19+8,则只能收到头尾19+8,中间的19+19也是写特征值错误,WRITE_ERROR 22。

我用你们提供的主从一体串口透传也是这种情况,是不是GATT_WriteCharValue函数有限制,还是其它什么原因。我试过使用GATT_WriteLongCharValue,但是测试最多19,超过部分全部错误,WRITE_ERROR 22。我想请问一下有什么方法可以发送超过40字节数据,即分割成类似19+19+8的情况。

一下是主机写特征值主要代码:

uint8 status;
attWriteReq_t AttReq;

AttReq.handle = p->simpleBLECharHdl[BLE_CHAR6];     //0x35;
AttReq.len = sendBytes;
AttReq.sig = 0;
AttReq.cmd = 0;

osal_memcpy(AttReq.value, buffer, sendBytes);
//NPI_WriteTransport(buffer, sendBytes);
status = GATT_WriteCharValue( p->simpleBLEConnHandle, &AttReq, simpleBLETaskId );
if(SUCCESS != status)
{
    NPI_PrintValue("Write Error :", status, 10);
}

一般情况这两个值都是以20Byte为界最好是app层代码自己分包发送,请问是基于什么版本代码做的?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top