低功耗蓝牙协议栈基础知识@@

低功耗蓝牙协议栈包含两部分共@@@@8层@@:主机@@(Host)和控制器@@(Controller)。 

控制器部分包括@@@@:

  • 物理层@@@@(Physical Layer)
  • 链路层@@@@(Link Layer)
  • 主机@@控制接口@@层@@@@(Host Controller Interface)

主机@@部分包括@@@@:

  • L2CAP 逻辑链路控制及自适应协议层@@@@(Logical Link Control and Adaptation Protocol)
  • 安全管理层@@@@(Security Manager)
  • ATT 属性协议层@@@@(Attribute Protocol)
  • GAP 通用访问配置文件层@@@@(Generic Access Profile)
  • GATT 通用属性配置文件层@@@@(Generic Attribute Profile)

从应用层@@到@@物理层@@@@一共@@包含@@8层@@,如下图所示@@。对于开发者而言@@,不需要对每一层@@的@@具体实现都有深入的@@了解@@。只需要掌握与应用紧密相关的@@@@ GAP/GATT 层@@即可满足大部分开发的@@需求@@,通过@@ SoftDevice(即协议栈@@,这种方式使得协议栈和用户应用可以@@单独编译和链接@@)的@@ API 软件接口@@(以@@ sd_ 开头@@)调用来实现@@。

从应用层@@到@@物理层@@@@一共@@包含@@8层@@

1、物理层@@@@(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米@@。

此外@@,通信距离往往还与天线@@、方向以@@及周围环境等诸多因素有关@@。

2、链路层@@@@(Link Layer)

链路层@@@@用于控制射频设备@@的@@工作状态@@,包括@@ 5 种可能的@@工作状态@@:待机@@、广播@@、扫描@@、启动和连接@@。 
当扫描@@者监听广播@@者时@@@@,广播@@者发送数据而不需要建立连接@@。 
如果一个@@设备@@以@@一个@@连接请求来响应一个@@广播@@者@@,该设备@@称为@@发起者@@。 
如果广播@@者接受该请求@@,则广播@@者和发起者将进入连接状态@@。 
当一个@@设备@@位于连接状态时@@@@,它将连接到@@两个@@角色之一@@(主机@@或@@者从机@@)。发起连接的@@设备@@成为@@主机@@@@,接受连接请求的@@设备@@成为@@从机@@。

3、主机@@控制接口@@(Host Controller Interface)

HCI 层@@为@@主机@@和控制器@@之间的@@通信提供了一种标准化的@@接口@@,其主要完成两个@@任务@@:① 发送命令给控制器和接收来自控制器的@@事件@@;② 发送和接收来自对端设备@@的@@数据@@。

4、L2CAP 逻辑链路控制及自适应协议层@@@@

L2CAP 逻辑链路控制及自适应协议层@@@@(Logical Link Control and Adaptation Protocol)为@@更高层@@提供数据封装服务@@,允许逻辑的@@端到@@端数据通信@@。

5、安全管理层@@@@(Security Manager)

SM 层@@定义了配对和密钥分发的@@方法@@,并为@@其他堆栈层@@的@@安全连接以@@及与另一个@@设备@@交换数据提供功能@@。

6、ATT 属性协议层@@@@(Attribute Protocol)

ATT 属性协议用于所有低功耗蓝牙的@@数据传输@@,具有快速@@、简单的@@特点@@,其采用了客户端@@(Client)/ 服务器@@(Server)架构@@。

7、GAP 通用访问配置文件层@@@@(Generic Access Profile)

低功耗蓝牙协议栈的@@@@ GAP 层@@与应用@@ / Profile 直接连接@@,负责处理设备@@的@@接入方式和过程@@,包括@@设备@@发现@@、链路建立@@、链路终止@@、启动安全功能以@@及设备@@配置@@。

8、GATT 通用属性配置文件层@@@@(Generic Attribute Profile)

GATT 层@@是一个@@服务框架@@,定义使用@@ ATT 的@@子过程@@。GATT 规定了配置文件@@ Profile 的@@结构@@。在低功耗蓝牙中@@,所有的@@数据块由一个@@@@ Profile 或@@服务所使用的@@数据库称为@@特性@@(characteristic)。 

文章转载自@@:http://blog.csdn.net/lu_embedded/article/details/56494684