CC2640R2学习笔记1---普通透传(最大20Byte数据传输)及大数据量透传

本次要实现的功能是基于CC2640R2完成串口与手机app的数据透传,即串口发出去的数据在手机app上能收到,手机app发出的数据在串口上打印出来。

一、在实现透传功能之前,需要了解蓝牙数据传输的原理
1.蓝牙数据的传输都是基于Characteristic来操作,在simple_gatt_profile.c文件中定义了5个Characteristic,其中Characteristic3具有写权限,Characteristic4具有notify权限,所以我们在做数据透传时,用Characteristic3来接收来自手机的数据,用Characteristic4来往手机app发数据。
2.这里我们将Characteristic3 和Characteristic4 修改为数组形式,长度定义为20,即数据收发最大长度为20字节。
3.手机往Characteristic3写数据时,蓝牙协议栈先检查该Characteristic3是否具有写权限,如果有写权限,则调用simpleProfile_WriteAttrCB,然后往app发消息,在app的任务中去处理该消息,将收到的数据做处理。
4.2640向手机发数据时,调用SimpleProfile_SetParameter,检查是否具有notify权限,然后调用simpleProfile_ReadAttrCB将数据发出去。

二、测试结果:
CC2640R2学习笔记1---普通透传(最大20Byte数据传输)及大数据量透传_第1张图片由上图可以看到,数据透传功能正常。而且还打印出了GAP_Role的各种状态。

三、大数据量透传
1.在app工程设置中添加一个MAX_PDU_SIZE的定义即可,这里设置成为255,表示最大传输数据量为255字节。如下:
CC2640R2学习笔记1---普通透传(最大20Byte数据传输)及大数据量透传_第2张图片
2.在simple_gatt_profile.c中修改相应Characteristic的长度,如下:
CC2640R2学习笔记1---普通透传(最大20Byte数据传输)及大数据量透传_第3张图片3.在simple_gatt_profile.c中修改read/write的callback函数中的长度,如下:
CC2640R2学习笔记1---普通透传(最大20Byte数据传输)及大数据量透传_第4张图片
CC2640R2学习笔记1---普通透传(最大20Byte数据传输)及大数据量透传_第5张图片
CC2640R2学习笔记1---普通透传(最大20Byte数据传输)及大数据量透传_第6张图片
修改后编译测试,效果正常。可以传输200多个字节的数据。

四、本次代码放在C:\ti\simplelink_cc2640r2_sdk_1_35_00_33\examples\rtos\CC2640R2_LAUNCHXL\blestack路径下编译

你可能感兴趣的:(蓝牙)