TI提供的官方例程中(ble5_simple_peripheral_cc2640r2lp_app)蓝牙发送数据的长度默认是一帧20个字节, 如果每帧大于20字节,手机端蓝牙测试APP就接收不到数据了,如何设置才能实现成功发送大于20个字节的数据呢?
从两方面设置,
第一步:先从simple_peripheral例程着手,把MTU(Maximum Transmission Unit 最大传输单元)设置大,须通过调整PDU(Potocal Data Unit协议数据单元)的方式来调整MTU,两者有一定关联。
在simple_peripheral.c中, 把APP_SUGGESTED_PDU_SIZE 的值设置成251。
接下来调整MAX_PDU_SIZE的值,它的值要等于或大于APP_SUGGESTED_PDU_SIZE的值,
在ble_user_config.h中,用搜索的方式找到 MAX_PDU_SIZE,把它的值改成251。
注意这时在simple_peripheral.c中关于APP_SUGGESTED_PDU_SIZE的初始化参数设置函数保持注释状态,不要打开。
接下来设置GUAPROFILE_CHAR1_LEN参数,想发送多少字节就写多少,比如要发送25个字节,如下图:
接下里设置GUA_Profile_Notify函数中的参数,跟这个25相关的参数都要设置成25。
第二部:设置手机端APP,以下面这款蓝牙调试APP为例,
因为要发送大于20字节的数据,作为主机端的手机APP得需要发送指令给从机,还好现在的蓝牙调试APP都有调整MTU的功能,如下图,
至此手机APP端就能接收到25字节的数据了。