– layout: post # 使用的布局(不需要改) title: 低功耗蓝牙协议栈基础知识 # 标题 subtitle: 物理层、链路层、主机控制接口、L2CAP、安全管理层、ATT 属性协议层、GAP、GATT #副标题 date: 2017-10-27 # 时间 author: PanMin # 作者 header-img: img/post-bg-2015.jpg #这篇文章标题背景图片 catalog: true # 是否归档 tags: #标签 - Android ble —
低功耗蓝牙协议栈基础知识
低功耗蓝牙协议栈包含两部分共8层:主机(Host)和控制器(Controller)。 控制器部分包括:
-
物理层(Physical Layer)
对于低功耗蓝牙,其物理层工作于 2.4GHz 全球通用的免许可证频段(2400MHz~2483.5MHz),共使用 40 个频道,频道间隔为 2MHz,而经典蓝牙使用 79 个频道,1MHz 间隔。低功耗蓝牙有两种频道类型:广播频道 3 个,数据频道 37 个,共 40 个频道。
低功耗蓝牙广播频道为 2402 MHz(37),2426 MHz(38),2480 MHz(39),你没看错!就是2402 MHz(37),2426 MHz(38),2480 MHz(39)。3 个广播频道刚好与 WiFi 无线局域网的信道错开,用于设备发现和建立连接。相比之下,经典蓝牙技术需要使用 32 个广播频道来完成相同的任务。正因如此,低功耗蓝牙可以大幅减少在空中的使用时间,从而降低功耗。
由于使用 3 个广播频道,低功耗蓝牙只需 0.6 到 1.2ms 的“开启”时间来扫描其他设备。而经典蓝牙需要 22.5ms 扫描其 32 个频道。低功耗蓝牙的这个机制对降低功耗有显著效果(比经典蓝牙减少 10 到 20 倍的功耗)。
由于蓝牙和 WiFi 都工作在 2.4GHz 频段,在同一使用环境下可能产生相互的影响,为此低功耗蓝牙做了系统共容性的考虑。低功耗蓝牙频道表设计时尽量避开 WiFi 的工作频道,低功耗蓝牙的所有 3 个广播频道均在 WiFi 频道表之外,除了重叠的数据频道部分,仍有 9 个数据频道在 WiFi 频道之外,确保了低功耗蓝牙系统的可靠性及与 WiFi 系统的共容性,增强了应用时的抗干扰能力。
低功耗蓝牙规范中所定义的最大发射功率为 +10 dBm(10mW),最小发射功率为 -20 dBm(0.01mW)。接收机灵敏度要求优于 -70 dBm(当误码率 BER 为 0.1% 时)。
显而易见,蓝牙的通信距离与发射功率和接收灵敏度有关。
- 当发射功率为 0 dBm,接收机灵敏度为 -70 dBm,通信距离约为 30米。
- 当发射功率为 +10 dBm,接收机灵敏度为 -90 dBm,通信距离约为 100米。
此外,通信距离往往还与天线、方向以及周围环境等诸多因素有关。
-
链路层(Link Layer)
链路层用于控制射频设备的工作状态,包括 5 种可能的工作状态:待机、广播、扫描、启动和连接。 当扫描者监听广播者时,广播者发送数据而不需要建立连接。 如果一个设备以一个连接请求来响应一个广播者,该设备称为发起者。 如果广播者接受该请求,则广播者和发起者将进入连接状态。 当一个设备位于连接状态时,它将连接到两个角色之一(主机或者从机)。发起连接的设备成为主机,接受连接请求的设备成为从机。
-
主机控制接口(Host Controller Interface)
HCI 层为主机和控制器之间的通信提供了一种标准化的接口,其主要完成两个任务:① 发送命令给控制器和接收来自控制器的事件;② 发送和接收来自对端设备的数据。
主机部分包括:
-
L2CAP 逻辑链路控制及自适应协议层
L2CAP 逻辑链路控制及自适应协议层(Logical Link Control and Adaptation Protocol)为更高层提供数据封装服务,允许逻辑的端到端数据通信。
-
安全管理层(Security Manager)
SM 层定义了配对和密钥分发的方法,并为其他堆栈层的安全连接以及与另一个设备交换数据提供功能。
-
ATT 属性协议层(Attribute Protocol)
ATT 属性协议用于所有低功耗蓝牙的数据传输,具有快速、简单的特点,其采用了客户端(Client)/ 服务器(Server)架构。
-
GAP 通用访问配置文件层(Generic Access Profile)
低功耗蓝牙协议栈的 GAP 层与应用 / Profile 直接连接,负责处理设备的接入方式和过程,包括设备发现、链路建立、链路终止、启动安全功能以及设备配置。
-
GATT 通用属性配置文件层(Generic Attribute Profile)
GATT 层是一个服务框架,定义使用 ATT 的子过程。GATT 规定了配置文件 Profile 的结构。在低功耗蓝牙中,所有的数据块由一个 Profile 或服务所使用的数据库称为特性(characteristic)。