蓝牙标准有两个方向:BLE(低功耗蓝牙,蓝牙4.2以上版本)和经典蓝牙,通常称为双模。蓝牙技术联盟(SIG)负责制定和发布蓝牙标准。BLE 标准从蓝牙4.2版本开始并更新。BLE目标在降低功耗和设备成本,增加通信距离和覆盖范围,利于物联网应用。BLE又称“智能蓝牙”。目前蓝牙标准已经演进到v5.2。
•BLE与BR / EDR协议不向后兼容。
•BLE在双模或单模使用2.4 GHz ISM频段。双模同时支持经典蓝牙和BLE。
•BLE协议包含 controller 和 Host,以及两者接口HCI。
初步了解一下BLE协议不同层的功能。
物理层(Physical Layer,PHY):物理层规定工作频段,40个RF Channel,其中3个广播信道,37个数据信道,GFSK调制方式,接收机灵敏,****功率等。通信双工模式,TDD模式。物理层性能对硬件设备起决定性作用,特别是功耗,误码率,差分误差向量等。
链路层(Link Layer,LL):链路层是BLE协议栈的核心。工作包括自适应跳频地图,频点的选择。数据发送slot,以及接收数据确认。但并不负责数据的解析工作。解析工作由上层负责。
链路层抽象出5种状态。
接口层(Host Controller Interface, HCI):HCI用于规范Host与Hostcontroller之间的通信协议和通信命令。HCI层屏蔽了控制层,为协议层的上层提供了进入基带的统一方式。HCI通过包的方式来传送数据、命令和事件,所有在主机和主机控制器之间的通信都以包的形式进行。包括每个命令的返回参数都通过特定的事件包来传输。HCI有数据、命令和事件三种包,其中数据包是双向的,命令包只能从Host发往Host controller,而事件包始终是Host controller发向Host。
通用访问协议(Generic access profile,GAP):负责处理设备访问模式,包括:被发现、建立连接、终止连接、初始化安全管理和设备配置。
GAP层可以扮演四种角色之一:
Broadcaster 广播者----不可以连接,一直发送广播
Observer 观察者----可以扫描广播,但是不能发起建立连接的设备
Peripheral 外设----可以被连接,在单个链路层连接中作为Server
Central 中央设备----可以扫描广播并发起连接,在单个或多个链路层中作为Client
逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol, L2CAP): 该层定义两个基本概念L2CAP 信道和L2CAP 信令,L2CAP信道是一个双向数据通道,通向对端设备上的某一特定的协议或规范。支持数据的分割和重组,使得较大的报文可以在底层无线电中进行传输。
安全管理层(Security Manager,SM):定义BLE通信两端设备的配对方法和密钥分发的工作模式,提供了加密、认证等安全保障。对数据进行加密,BLE使用AES加密算法,通过复杂的认证过程,保证该加密算法的密钥能够被安全的传递到通信链路两端的设备中。一旦有了密钥,就可以对通信过程中的数据进行加密和解密,使得第三方无法截获破译空中的数据。经过配对后的两个设备,即可进入认证状态,进而可以对设置了。即使配对在某段时间中断,但是当这两台设备在未来的某个时候重连时,他们可以使用先前分发的共享密钥进行加密,从而迅速认证彼此身份。
属性协议层(Attribute protocol,ATT):在ATT层协议框架内,拥有一组属性的设备称为服务端(Server),读写该属性值的设备称为客户端(Client),Server和Client通过ATT PDU进行交互
通用属性配置文件层(Generic Attribute profile, GATT):GATT用来规范attribute中的数据内容,并运用group(分组)的概念对attribute进行分类管理。BLE 连接都是建立在 GATT (Generic Attribute Profile)协议之上。