低功耗蓝牙协议栈
1、简介
BLE,bloothlowpower,即蓝牙低功耗技术。
该技术具有低成本、短距离、可互操作的特性,工作在免许可的2.4GHzISM射频频段。
蓝牙系统核心包括射频收发器,基带和协议栈。核心系统协议包括射频(RF)协议、链路控制(LC)协议、链路管理(LM)协议、逻辑链路的控制和适配(L2CAP)协议。蓝牙核心系统最底三层是射频,链路控制,链路管理协议,通常会把这三者归为一个子系统——蓝牙控制器。把往上的其他层一起称为为蓝牙主机。在蓝牙控制器和蓝牙主机之间实现通信通常需要有主机-控制器接口,HosttoControllerInterface(HCI)。蓝牙系统的具体应用apps,就是建立在蓝牙主机之上。而host部分由蓝牙软件厂商开发和维护,control部分由蓝牙的硬件厂商提供,两部分通过hci(主机控制器接口)进行通信和数据交互。
2、组成
低功耗蓝牙协议栈包含两部分共8层:主机(Host)和控制器(Controller)。
控制器部分包括:
物理层(PhysicalLayer)
链路层(LinkLayer)
主机控制接口层(HostControllerInterface)
从应用层到物理层一共包含8层
主机部分包括:
L2CAP逻辑链路控制及自适应协议层(LogicalLinkControlandAdaptationProtocol)
安全管理层(SecurityManager)
ATT属性协议层(AttributeProtocol)
GAP通用访问配置文件层(GenericAccessProfile)
GATT通用属性配置文件层(GenericAttributeProfile)
从应用层到物理层一共包含8层,如下图所示。对于开发者而言,不需要对每一层的具体实现都有深入的了解。只需要掌握与应用紧密相关的GAP/GATT层即可满足大部分开发的需求,通过SoftDevice(即协议栈,这种方式使得协议栈和用户应用可以单独编译和链接)的API软件接口(以sd_开头)调用来实现。
从应用层到物理层一共包含8层
1、物理层(PhysicalLayer)
对于低功耗蓝牙,其物理层工作于2.4GHz全球通用的免许可证频段(2400MHz~2483.5MHz),共使用40个频道,频道间隔为2MHz,而经典蓝牙使用79个频道,1MHz间隔。低功耗蓝牙有两种频道类型:广播频道3个,数据频道37个,共40个频道。
低功耗蓝牙广播频道为2402MHz(37),2426MHz(38),2480MHz(39),你没看错!就是2402MHz(37),2426MHz(38),2480MHz(39)。3个广播频道刚好与WiFi无线局域网的信道错开,用于设备发现和建立连接。相比之下,经典蓝牙技术需要使用32个广播频道来完成相同的任务。正因如此,低功耗蓝牙可以大幅减少在空中的使用时间,从而降低功耗。
由于使用3个广播频道,低功耗蓝牙只需0.6到1.2ms的“开启”时间来扫描其他设备。而经典蓝牙需要22.5ms扫描其32个频道。低功耗蓝牙的这个机制对降低功耗有显著效果(比经典蓝牙减少10到20倍的功耗)。
由于蓝牙和WiFi都工作在2.4GHz频段,在同一使用环境下可能产生相互的影响,为此低功耗蓝牙做了系统共容性的考虑。低功耗蓝牙频道表设计时尽量避开WiFi的工作频道,低功耗蓝牙的所有3个广播频道均在WiFi频道表之外,除了重叠的数据频道部分,仍有9个数据频道在WiFi频道之外,确保了低功耗蓝牙系统的可靠性及与WiFi系统的共容性,增强了应用时的抗干扰能力。
低功耗蓝牙规范中所定义的最大发射功率为+10dBm(10mW),最小发射功率为-20dBm(0.01mW)。接收机灵敏度要求优于-70dBm(当误码率BER为0.1%时)。
显而易见,蓝牙的通信距离与发射功率和接收灵敏度有关。
当发射功率为0dBm,接收机灵敏度为-70dBm,通信距离约为30米。
当发射功率为+10dBm,接收机灵敏度为-90dBm,通信距离约为100米。
此外,通信距离往往还与天线、方向以及周围环境等诸多因素有关。
2、链路层(LinkLayer)
链路层用于控制射频设备的工作状态,包括5种可能的工作状态:待机、广播、扫描、启动和连接。
当扫描者监听广播者时,广播者发送数据而不需要建立连接。
如果一个设备以一个连接请求来响应一个广播者,该设备称为发起者。
如果广播者接受该请求,则广播者和发起者将进入连接状态。
当一个设备位于连接状态时,它将连接到两个角色之一(主机或者从机)。发起连接的设备成为主机,接受连接请求的设备成为从机。
3、主机控制接口(HostControllerInterface)
HCI层为主机和控制器之间的通信提供了一种标准化的接口,其主要完成两个任务:①发送命令给控制器和接收来自控制器的事件;②发送和接收来自对端设备的数据。
4、L2CAP逻辑链路控制及自适应协议层
L2CAP逻辑链路控制及自适应协议层(LogicalLinkControlandAdaptationProtocol)为更高层提供数据封装服务,允许逻辑的端到端数据通信。
5、安全管理层(SecurityManager)
SM层定义了配对和密钥分发的方法,并为其他堆栈层的安全连接以及与另一个设备交换数据提供功能。
6、ATT属性协议层(AttributeProtocol)
ATT属性协议用于所有低功耗蓝牙的数据传输,具有快速、简单的特点,其采用了客户端(Client)/服务器(Server)架构。
7、GAP通用访问配置文件层(GenericAccessProfile)
低功耗蓝牙协议栈的GAP层与应用/Profile直接连接,负责处理设备的接入方式和过程,包括设备发现、链路建立、链路终止、启动安全功能以及设备配置。
8、GATT通用属性配置文件层(GenericAttributeProfile)
GATT层是一个服务框架,定义使用ATT的子过程。GATT规定了配置文件Profile的结构。在低功耗蓝牙中,所有的数据块由一个Profile或服务所使用的数据库称为特性(characteristic)。