BlueTooth
※前提条件:本情報はBlueTooth 4.0を基づいて説明してる
从左至右依次为:经典蓝牙(BR/EDR)、双模蓝牙(同时支持BR/EDR/LE)和低功耗蓝牙(BLE)。

其中经典蓝牙和低功耗蓝牙互不兼容。
其实看结构也可以看出双模蓝牙是经典蓝牙和低功耗蓝牙的合集。

低功耗蓝牙解决方案只能同时处理有限数量的连接(通常为 8 个)。使用单个命令无法控制大于该灯泡数量的照明装置,因而造成延迟。其次,在大间房屋中,远距离位置的灯泡可能超出中央控制器的范围。
在网状网络中,消息是通过在连接多个节点的双向通道中跳跃,从网络中的一个点中转到任何其他点,而没有采用与单独外围设备通信的中央设备。通过这种方式,网状网络带来明显的优势,因为它允许同时控制数十个连接的设备,克服了范围限制,并内置了冗余。

蓝牙协议分为四个层次:物理层(Physical Layer)、逻辑层(Logical Layer)、L2CAP Layer和应用层(APP Layer)。

蓝牙低功耗协议(深蓝色)内的蓝牙网状网络堆栈(浅蓝色)排列
物理层(Physical Layer) †[edit]
负责提供数据传输的物理通道(通常称为信道)。通常情况下,一个通信系统中存在几种不同类型的信道,如控制信道、数据信道、语音信道等等。
逻辑层(Logical Layer) †[edit]
在物理层的基础上,提供两个或多个设备之间、和物理无关的逻辑传输通道(也称作逻辑链路)。
逻辑层的主要功能,是在已连接(LE Advertisement Broadcast可以看做一类特殊的连接)的蓝牙设备之间,基于物理链路,建立逻辑信道。
L2CAP是逻辑链路控制和适配协议(Logical link Control and Adaptation Protocol)的缩写,负责管理逻辑层提供的逻辑链路。
基于该协议,不同Application可共享同一个逻辑链路。类似TCP/IP中端口(port)的概念。
应用层(APP Layer) †[edit]
理解蓝牙协议中的应用层,基于L2CAP提供的channel,实现各种各样的应用功能。
蓝牙的核心系统,由一个Host和一个或多个Controller组成。
- BT Host:一个逻辑实体,在HCI(Host Controller Interface)的上层。
- BT Controller:一个逻辑实体,在HCI(Host Controller Interface)的下层。
Bluetooth的主控制器,可能是以下几种:
- BR/EDR Controller:内部包含Radio, Baseband,Link Manager,可选的HCI。
- LE Controller :内部包含LE PHY,Link Layer ,可选的HCI
- BR/EDR & LE Controller:BR/EDR与LE的组合的控制器
- MAC/PHY (AMP) Controller:二级控制器,可替代的,内部包含 802.11 PAL (Protocol Adaptation Layer),802.11 MAC,PHY,可选的HCI。
根据Host与Controller的组成关系,常见的蓝牙芯片也分为以下几种:
- 单模蓝牙芯片:单一传统蓝牙的芯片,单一低功耗蓝牙的芯片。即(1个Host结合1个Controller)
- 双模蓝牙芯片:同时支持传统蓝牙和低功耗蓝牙的芯片。即(1个Host结合多个Controller)

将蓝牙协议分为了HW层,Transport层,Host层

指的是蓝牙芯片层,也就是我们上面说的Controller,包括以下几个部分:
- RF(RADIO):射频层,本地蓝牙数据通过射频发送给远端设备,并且通过射频接收来自远端蓝牙设备的数据。
- BB(BASEBAND):基带层,进行射频信号与数字或语音信号的相互转化,实现基带协议和其它的底层连接规程。
- LMP(LINK MANAGER PROTOCOL):链路管理层,负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作
- HCI(HOST CONTROLLER INTERFACE):主机控制器接口层,HCI层在芯片以及协议栈都有,芯片层面的HCI负责把协议栈的数据做处理,转换为芯片内部动作,并且接收到远端的数据,通过HCI上报给协议栈。
- BLE PHY:BLE的物理层
- BLE LL:BLE的链路层
Transport层 †[edit]
Transport层,主机控制层接口,通过硬件接口UART/USB/SDIO把HOST协议层的数据发送给Controller层,并且接收Controller层的数据。
该部分有几个协议:
- H2:基于USB的传输
- H4:基于UART的传输,最简单的传输方式,只在HCI raw data前面加上一个type
- H5: 基于UART的传输
- BCSP: 基于UART的传输
- SDIO :基于SDIO的传输
H4需要蓝牙芯片的UART_TX/UART_RX/UART_CTS/UART_RTS/VCC/GND接到MCU;而H5只需要蓝牙芯片的UART_TX/UART_RX/VCC/GND接到MCU就可以通信。
此部分就是蓝牙协议栈,该部分包括多个协议:
- L2CAP(Logical Link Control and Adaptation Protocol):逻辑链路控制与适配协议,将ACL数据分组,对高层应用的数据进行分组,并提供协议复用和服务质量交换等功能。通过协议多路复用、分段重组操作和组概念,向高层提供面向连接的和无连接的数据服务
- SDP(SERVICE DISCOVERY PROTOCOL):服务发现协议,为应用程序提供发现可用服务,并确定服务特征的方法。
- RFCOMM(Serial Port Emulation):串口仿真协议,上层协议蓝牙电话,蓝牙透传SPP等协议都是直接走的RFCOMM
- OBEX:对象交换协议,蓝牙电话本,蓝牙短信,文件传输等协议都是走的OBEX
- HFP(Hands-Free):蓝牙免提协议
- HSP:蓝牙耳机协议,最开始的蓝牙耳机协议,目前已经没有产品在用这个了吧,至少我没有看到了。算是一个简化版的HFP。
- SPP(SERIAL PORT PROFILE):蓝牙串口协议
- IAP:苹果的特有协议,分为IAP1/IAP2,一般做Carplay或者iPod功能的人肯定接触过这块,有需要这块的私下联系我
- PBAP(Phone Book Access):蓝牙电话本访问协议
- MAP(MESSAGE ACCESS PROFILE):蓝牙短信访问协议
- HID(HUMAN INTERFACE DEVICE):人机接口协议,HID还是有很多广泛的用途的,比如蓝牙鼠标,蓝牙键盘,蓝牙自拍杆,蓝牙手柄等。
- A2DP(Advanced Audio Distribution): 蓝牙音乐协议
- SM: 蓝牙BLE安全管理协议
- GAP(GENERIC ACCESS PROFILE):它定义了蓝牙设备的基本要求。它联系了所有的不同的层之间的交互,也描述了设备发现、建立连接、安全、认证、关联模型和发现服务的行为和方法。
- 对于BR/EDR,它定义了一个蓝牙设备,包括无线电、基带、链路管理器、L2CAP和服务发现协议功能。
- 对于LE,它定义一个物理层,链路层,L2CAP,安全管理器,属性协议和通用属性配置文件。
- ATT(Attribute Protocol):蓝牙属性协议,用于发现、读、写对端设备的协议(针对BLE设备),ATT允许设备作为服务端提供拥有关联值的属性集 ,让作为客户端的设备来发现、读、写这些属性;同时服务端能主动通知客户端。
- GATT(Generic Attribute Profile):蓝牙通用属性协议,描述了一种使用ATT的服务框架 ,该框架定义了数据交换的格式。
XXX
コメント: