微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2540主模式如何发送大容量数据?

CC2540主模式如何发送大容量数据?

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

Hi, TI' experts:

最近在学习CC2540主模式的开发,目前master和slaver可以正常连接并且可以发送数据,但是数据包的大小仅仅限制在20bytes,我想知道对于大容量的数据(比如128bytes或者256bytes等)该怎么发送呢?我在论坛里看到有朋友说GATT_WriteLongCharValue()函数可以实现大数据的发送,而且该函数会自动分包,然后多次发送。我在我的代码中也调用了这个函数,但是slaver端并没有收到任何数据,我不知道问题出在哪里了?我调用GATT_WriteCharValue()函数来发送数据时,slaver是可以收到数据的。我的代码是以SimpleBLECentral为模板改的。

以下是我代码中发送的部分:希望各位专家们能帮我解答,谢谢!

if(simpleBLEDoWrite) //Do a write
{

      unsigned int dataLength = (unsigned int)sizeof(senddata);      //取得数据包的长度
      uint8 *ptr = senddata;

      gattPrepareWriteReq_t req;

      req.handle = simpleBLECharHdl;
      req.len = dataLength;
      req.offset = 0;
      req.pValue = (uint8 *)osal_mem_alloc(dataLength);  //locate space
      osal_memset(req.pValue, 0, dataLength);  //mem clear
      osal_memcpy(req.pValue, ptr, dataLength);  //memcpy

      status = GATT_WriteLongCharValue(simpleBLEConnHandle, &req, simpleBLETaskId);

}

打扰了,写成了么。情况如何。

alen,

回得有点晚,不好意思哈。

后来怎么样了?我看代码没什么太大问题。试过用pValue 指针指向一个固定数据,而不用动态分配的方式吗?

另外,空中抓包看过吗?packet sniffer.

请问一下,一次最多发送20个字节,是ble4.0规定的,还是ti的协议规定的啊?

BLE 4.0协议规定了一次发送最大不超20个字节

谢谢susan的回复!

    协议文档实在是太多了,太难找了,不知道你看的是不是Core_V4.0.pdf文档,具体在哪个章节有介绍,能告诉一下吗?

你好 jack wong

网上关于蓝牙4.0各种包结构分析的很多,你可以随便搜一下,比看 Core_V4.0.pdf 来的快~o(∩_∩)o 哈哈

你好,不好意思打扰了啊。请问你这样实施成功了没?我也这样试了,但是一次最多只能传18个字节的数据,而且还容易造成死机问题

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

网站地图

Top