This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2540 central与peripheral之间的通信

Other Parts Discussed in Thread: CC2540

您好,我们正在开发一款支持BLE4.0的设备,思路是central发送characteristic给peripheral,peripheral根据characteristic的信息决定回什么样的数据给central,

peripheral向central发送数据采用notification。开发过程中有以下几个疑问,麻烦Ti员工帮忙解答以下:

(1)、主机向从机发送数据的疑问:

通信过程是不是首先peripheral会规划好自己的attribute table,central通过write function修改characteristic value,peripheral重新读取characteristic value即可?

central最大可以向peripheral发送多少数据?如果数据比较多是不是需要分批发送?最好选用哪一个函数实现?

(2)、peripheral回复central的疑问:

如果采用notification,数据包的大小最大是多少?是不是23 to 517?如果数组比较多是不是也需要分批发送?还是只需要把数组的指针给GATT_Notification (),CC2540会自动分批发送?

项目比较紧急,希望您能及时回复,谢谢帮忙。

  • hi

    主向从差不多使用服务中的char  n这个自己定),你说的差不多。

    主向从 可以使用GATT_WriteCharValue(虽然他说这个可以自动分包,但是也没见过这种例子,所以。。。)和GATT_writeLongCharvalue这两个函数,长度18 和20,数据太多的话,就得分包,两个都差不多,函数发送是有时间间隔的,要想快速发送,那就得更改从机的连接间隔,功耗增加。

    从机使用那个notification的话,也是20,没有自动分批发送的,分包。

    2540不适合大数据的传输,它最大好像也就几k,而且这时候功耗应该要高几倍到十几倍吧。

  • hi,river:

      连接间隔要怎么改啊?为什么有两个,min和max?

  • hi 

         你调小就好了,这个好像是有个公式的,我记得也不是很清楚了,之后再告诉你吧,我记得好像是调下max,调小就好了

     

    还有,之前问过你那个GATT_writeLongCharValue的问题,我那个offset怎么也实现不了,是怎么回事,数据就是发的不对,一次可以发送50个了,但数据只显示第一次发送的18个,后面的就是那18个重复。

  • 数据只显示第一次发送的18个,后面的就是那18个重复?? 这个是什么意思?

  • hi 

       效果是这样的,如果我如果发生这种数据吧(hex发送):

    01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 

    19 20 21 22 23 24 25 26 27 28  29 30 31 32 33 34  35 36

    37 38 39 40 41 42 43 44 45 46 47 48 49 50

    然后我收到的数据时(hex):

    01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 

    01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 

    01 02 03 04 05 06 07 08 09 10 11 12 13 14 

    我想知道你在从机中是怎么处理这个offset的。

    634754484

  • 贴一下你的代码看看啊

  • 你好,打扰一下,请问该问题解决没?我也碰到了这样的问题,GATT_WriteLongCharValue每次发送数据时,目标机只能收到前面的18个字节的数据