#author("2023-04-21T17:38:59+08:00","default:Admin","Admin") #author("2023-04-21T17:39:37+08:00","default:Admin","Admin") [[BlueTooth]] &color(red){※前提条件:本情報はBlueTooth 4.0を基づいて説明してる}; #contents * 概要 [#c0ef16e0] ** 蓝牙分类 [#cbf4deb9] 从左至右依次为:经典蓝牙(BR/EDR)、双模蓝牙(同时支持BR/EDR/LE)和低功耗蓝牙(BLE)。 &ref(BLE_net6.jpg); 其中经典蓝牙和低功耗蓝牙互不兼容。 其实看结构也可以看出双模蓝牙是经典蓝牙和低功耗蓝牙的合集。 ** 蓝牙原理及应用 [#k029bc19] &ref(BLE_net5.jpg); 低功耗蓝牙解决方案只能同时处理有限数量的连接(通常为 8 个)。使用单个命令无法控制大于该灯泡数量的照明装置,因而造成延迟。其次,在大间房屋中,远距离位置的灯泡可能超出中央控制器的范围。 在网状网络中,消息是通过在连接多个节点的双向通道中跳跃,从网络中的一个点中转到任何其他点,而没有采用与单独外围设备通信的中央设备。通过这种方式,网状网络带来明显的优势,因为它允许同时控制数十个连接的设备,克服了范围限制,并内置了冗余。 &ref(BLE_net1.jpg); * 蓝牙协议 [#l42a3b57] 蓝牙协议分为四个层次:物理层(Physical Layer)、逻辑层(Logical Layer)、L2CAP Layer和应用层(APP Layer)。 &ref(BLE_net2.jpg); 蓝牙低功耗协议(深蓝色)内的蓝牙网状网络堆栈(浅蓝色)排列 ** 物理层(Physical Layer) [#te18b07a] 负责提供数据传输的物理通道(通常称为信道)。通常情况下,一个通信系统中存在几种不同类型的信道,如控制信道、数据信道、语音信道等等。 ** 逻辑层(Logical Layer) [#o6597fa6] 在物理层的基础上,提供两个或多个设备之间、和物理无关的逻辑传输通道(也称作逻辑链路)。 逻辑层的主要功能,是在已连接(LE Advertisement Broadcast可以看做一类特殊的连接)的蓝牙设备之间,基于物理链路,建立逻辑信道。 ** L2CAP层 [#r791c243] L2CAP是逻辑链路控制和适配协议(Logical link Control and Adaptation Protocol)的缩写,负责管理逻辑层提供的逻辑链路。 基于该协议,不同Application可共享同一个逻辑链路。类似TCP/IP中端口(port)的概念。 ** 应用层(APP Layer) [#xa5c51a0] 理解蓝牙协议中的应用层,基于L2CAP提供的channel,实现各种各样的应用功能。 * 蓝牙芯片架构 [#q0c00875] 蓝牙的核心系统,由一个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) &ref(BLE_net3.jpg); * 蓝牙协议架构 [#d7fdf2da] 将蓝牙协议分为了HW层,Transport层,Host层 &ref(BLE_net4.jpg); ** HW层 [#a6cbf80e] 指的是蓝牙芯片层,也就是我们上面说的Controller,包括以下几个部分: - RF(RADIO):射频层,本地蓝牙数据通过射频发送给远端设备,并且通过射频接收来自远端蓝牙设备的数据。 - BB(BASEBAND):基带层,进行射频信号与数字或语音信号的相互转化,实现基带协议和其它的底层连接规程。 - LMP(LINK MANAGER PROTOCOL):链路管理层,负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作 - HCI(HOST CONTROLLER INTERFACE):主机控制器接口层,HCI层在芯片以及协议栈都有,芯片层面的HCI负责把协议栈的数据做处理,转换为芯片内部动作,并且接收到远端的数据,通过HCI上报给协议栈。 - BLE PHY:BLE的物理层 - BLE LL:BLE的链路层 ** Transport层 [#w21ed27a] 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就可以通信。 ** HOST层 [#y447a490] 此部分就是蓝牙协议栈,该部分包括多个协议: *** L2CAP(Logical Link Control and Adaptation Protocol) [#ta816bb4] 逻辑链路控制与适配协议,将ACL数据分组,对高层应用的数据进行分组,并提供协议复用和服务质量交换等功能。通过协议多路复用、分段重组操作和组概念,向高层提供面向连接的和无连接的数据服务 L2CAP 信道共支持 6 种模式,可通过 L2CAP 信道配置过程进行选择,不同模式的应用场 合不同,主要差别在于可提供的 QoS 不同。这些模式分别是: - 基本 L2CAP 模式 - 流量量控制模式 - 重传模式 - 加强重传模式 - 流模式 - 基于 LE Credit 的流量量控制模式 *** SDP(SERVICE DISCOVERY PROTOCOL) [#z1474e09] 服务发现协议,为应用程序提供发现可用服务,并确定服务特征的方法。 服务发现协议 (SDP) 允许应用程序发现其他对等蓝⽛牙设备提供的服务,并确定可用服务的 特征。SDP 包含 SDP 服务器和 SDP 客户端之间的通信。服务器维护一个描述服务特性的服务记录表。客户端可通过发出 SDP 请求,从服务器维护的服务记录表中进⾏信息检索。 *** RFCOMM(Serial Port Emulation) [#z8532fe8] 串口仿真协议,上层协议蓝牙电话,蓝牙透传SPP等协议都是直接走的RFCOMM *** OBEX [#ce1a37cf] 对象交换协议,蓝牙电话本,蓝牙短信,文件传输等协议都是走的OBEX *** HFP(Hands-Free) [#f07e1c27] 蓝牙免提协议 *** HSP [#bcc1bd26] 蓝牙耳机协议,最开始的蓝牙耳机协议,目前已经没有产品在用这个了吧,至少我没有看到了。算是一个简化版的HFP。 *** SPP(SERIAL PORT PROFILE) [#meb93106] 蓝牙串口协议 *** IAP [#y6b1cdf3] 苹果的特有协议,分为IAP1/IAP2,一般做Carplay或者iPod功能的人肯定接触过这块,有需要这块的私下联系我 *** PBAP(Phone Book Access) [#rc5b34e2] 蓝牙电话本访问协议 *** MAP(MESSAGE ACCESS PROFILE) [#h5c72fe9] 蓝牙短信访问协议 *** HID(HUMAN INTERFACE DEVICE) [#ea30a69a] 人机接口协议,HID还是有很多广泛的用途的,比如蓝牙鼠标,蓝牙键盘,蓝牙自拍杆,蓝牙手柄等。 *** A2DP(Advanced Audio Distribution) [#f1280fd4] 蓝牙音乐协议 *** SM[#fb09d2b6] 蓝牙BLE安全管理协议 *** GAP(GENERIC ACCESS PROFILE) [#jee10000] 它定义了蓝牙设备的基本要求。它联系了所有的不同的层之间的交互,也描述了设备发现、建立连接、安全、认证、关联模型和发现服务的行为和方法。 - 对于BR/EDR,它定义了一个蓝牙设备,包括无线电、基带、链路管理器、L2CAP和服务发现协议功能。 - 对于LE,它定义一个物理层,链路层,L2CAP,安全管理器,属性协议和通用属性配置文件。 *** ATT(Attribute Protocol) [#t6b3db06] 蓝牙属性协议,用于发现、读、写对端设备的协议(针对BLE设备),ATT允许设备作为服务端提供拥有关联值的属性集 ,让作为客户端的设备来发现、读、写这些属性;同时服务端能主动通知客户端。 *** GATT(Generic Attribute Profile) [#y528c951] 蓝牙通用属性协议,描述了一种使用ATT的服务框架 ,该框架定义了数据交换的格式。 #codeprettify{{ XXX }} #hr(); コメント: #comment_kcaptcha