数据包长度
对于BLE4.0/4.1来说,一个数据包的有效载荷最大为20字节
对于BLE4.2以上,数据包的有效载荷扩大为251字节
传输速率
在不考虑跳频间隔的情况下,最大传输速率为:
1)BLE4.0/4.1的理论吞吐率为39kb/s;
2)BLE4.2的理论吞吐率为100kb/s;
3)BLE5.0的理论吞吐率为180kb/s(前提:使用2Mbps调制速率;如果使用1Mbps调制速率,那么吞吐率就和蓝牙4.2一样);
具体计算方式看:https://www.ngui.cc/article/show-498835.html?action=onClick
考虑跳频间隔的时候就要看间隔时间多少了,跳频间隔的基数为1.25ms,如果是跟安卓手机通信的话,那么安卓规定间隔至少为8个基数,即10ms,按照BLE4.0/4.1协议的话,一个数据包最多传输20字节数据,那么最大传输速率就是2KB/S;那么按照BLE4.2的话理论应该是能到25KB/S,但是按照1Mbps的调制速率来算的话,传输251Byte的数据的传输时间已经超过1250us了,达到2120us,所以这种情况下能够达到多少的速率还不知道怎么算,有知道的老铁还望告知。
关于GATT、service、Characteristic、Descriptor
下图表明得很清楚:(参考:https://www.jianshu.com/p/f6b2ab2b6c64)
每个BLE设备由多个Profile(GATT)组成
每个Profile由多个的Service服务组成
每个Service由多个Characteristic特征组成
每个Characteristic由一个Value值和多个Descriptor描述组成
提高传输速率
目前已知两种方式:
缩短跳频间隔,蓝牙BLE协议规定连接参数最小是5,即7.25毫秒;而Android手机规定连接参数最小是8,即10毫秒。iOS规定是16,即20毫秒。
采用writeWithoutResponse方式,如下图
关于UUID
Service、Characteristic和Descriptor均有一个唯一的UUID标识,UUID既有16位的也有128位的。16位的UUID是经过蓝牙组织认证的,是需要购买的,而128位的UUID则可以自定义,当然也有许多通用的UUID。
BLE协议是给了128位的位宽来表示万事万物,但是蓝牙技术联盟定义了一个基本的UUID:0000xxxx-0000-1000-8000-00805F9B34FB,16位的UUID就是用一个16位(bit)的数来代替其中的x处,如心率测量的UUID为:0x00002A37-0000-1000-8000-00805F9B34FB
主要参考链接:
https://www.jianshu.com/p/f6b2ab2b6c64
https://www.ngui.cc/article/show-498835.html?action=onClick