(一)BLE与蓝牙4.0的区别
蓝牙4.0实际是个三位一体的蓝牙技术,它将三种规格合而为一,分别是传统蓝牙、低功耗蓝牙和高速蓝牙技术,这三个规格可以组合或者单独使用。
(二)BLE的体系结构
(三)BLE设备链路层状态
(四)信道
频率/MHz | 信道编号 | 信道类型 |
2402 | 37 | 广播信道 |
2404~2424 | 0~10 | 数据信道 |
2426 | 38 | 广播信道 |
2428~2478 | 11~36 | 数据信道 |
2480 | 39 | 广播信道 |
(五)广播
设备每次广播时,会在3个广播信道上发送相同的报文,称为一个广播事件
广播间隔是指2个广播事件之间间隔的时间,取值范围20ms~10.28s
链路层会在每两次广播事件期间产生一个随机广播延时时间(0~10ms),避免数据碰撞
广播数据包最大长度31个字节
(六)扫描
每次扫描设备打开接收器去监听广播设备,称为一个扫描事件。
扫描事件交替地发生在三个特定的广播信道:37,38,39
扫描的两个参数
扫描间隔:扫描设备的扫描频率
扫描窗口:每次扫描事件的持续时间
(七)连接
(1)连接间隔:
一个连接事件是指主设备和从设备之间相互发送数据包的过程。
每个数据包会在上个数据包之后等待150us再发送。
连接间隔指的是两个连续的连接事件开始处的时间距离,可以是7.5ms~4s内的任意值,但必须为1.25ms的整数倍。
在连接事件之外,主从设备之间不发送任何数据。
(2)传输窗口偏移,传输窗口大小:
传输窗口偏移可以是0到连接间隔之间的任意值。
从传输窗口开始,从设备打开其接收器,并等待来自主设备的数据包。如果到发送窗口结束时仍未收到数据包,从设备终止侦听,并会在下一个连接间隔后再次尝试。
(3)从设备延迟、监控超时:
监控超时,判断连接断开的无数据通信的最大时间间隔,10ms的倍数,100ms~32s之间。
从设备延迟,从设备如果没有数据发送,允许跳过的最大连接事件次数,0~499之间。
有效连接间隔,两个有效的连接事件之间的最大时间跨度,不得大于监控超时。
(4)信道图、调频算法增量:
信道图用于标记信道的好坏,37个数据信道,所以信道图的长度设为37位,1表示良好,0表示糟糕。
调频算法增量的数值是在5~16之间的一个随机数。
过高或过低的跳数都不利于迅速排除干扰。
(5)休眠时钟精度:
时钟精度可以帮助从设备消除连接事件的不确定性。
时钟的漂移使得从设备必须提早醒来,保持侦听,以防止主从设备的通信丢失。
(6)影响功耗的参数:
连接间隔
从机延迟
传输窗口
(八)连接终止
主动终止
被动终止
监控超时
(九)属性数据库
属性句柄,是属性在数据库中的唯一标识,可用于索引存储地址。
属性类型(UUID),说明代表什么数据,可以是Bluetooth SIG分配或用户自定义的UUID。长度128位,传输常用的UUID时,只发送较短的16位版本。
UUID基数:00000000-0000-1000-8000-00805F9B34FB
属性值,表示设备公开的状态信息。
低功耗蓝牙使用的那部分UUID分类:
0x1800 ~ 0x26ff 用作服务类通用唯一识别码
0x2700 ~ 0x27ff 用作标识计量单位
0x2800 ~ 0x28ff 用作区分属性类型
0x2900 ~ 0x29ff 用作特性描述
0x2a00 ~ 0x7fff 用作区分特性类型
总结:
所有位于该服务声明之后,下一个声明之前的属性都隶属于当前的服务。
特性由特性声明、特性数值和零个或多个描述符组成。
特性声明,首先要用到特性属性,它包含三个字段:特性性质、数值属性句柄和特性类型。如下所示
特性性质是一个八位字段,确定了特性数值属性对一系列操作的支持情况,包括:广播、读、写、通知、指示、命令、签名认证、拓展性质。
(1)通知和指示的区别
它们都是有服务器自发地向客户端发送属性值。通知可以在任意时刻发送;指示需要客户端回复确认信息,服务器收到确认后才发下一条指示。
(2)属性协议的常见基本操作:
查找信息请求
请求:起始句柄和结束句柄
响应:属性的句柄和类型
按类型值查找请求
请求:起始句柄和结束句柄,属性类型
响应:句柄
按类型读取请求
请求:起始句柄和结束句柄,属性类型
响应:句柄和数值
读取请求
请求:一个句柄
响应:对应的属性值
写入请求
请求:一个句柄、属性值
响应:确认
句柄值通知
请求:一个句柄、属性值
句柄值指示
请求:一个句柄、属性值
响应:确认
(3)通用属性规范的常见基本操作:
发现所有首要服务
发现服务的所有特性
发现所有特性描述符
读取特征值、特征描述符
写入特征值、特征描述符
通知
指示