• 【蓝牙协议】简介:蓝牙芯片、蓝牙协议架构


    参考:https://zhuanlan.zhihu.com/p/585248998
    参考:吐血推荐历史最全的蓝牙协议栈介绍

    在这里插入图片描述

    蓝牙芯片架构

    蓝牙的核心系统,由一个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)

    因此,蓝牙芯片就会有以下几种架构:

    在这里插入图片描述

    另一个视角

    由下到上看:Controller–>Host

    Controller:

    • BR/EDR Controller:由Link Manager、Link Controller、BR/EDR Radio组成
    • LE Controller:由Link Manager、Link Controller、 LE Radio 组成
    • AMP Controller:由 AMP PAL, AMP MAC, AMP PHY组成

    Host:

    • BR/EDR Host:由 L2CAP、SDP 、GAP 组成
    • LE Host:由 L2CAP、SMP 、GAP 、Attribute protocol、GATT组成

    由上到下看:Host–>Controller

    Host层

    • Channel Manager:通道管理,主要用于创建、管理、关闭L2CAP通道,用于服务协议和应用数据的传输。
    • L2CAP Resource Manage:L2CAP资源管理,主要负责管理分片的PDU的正确提交。
    • Security Manager Protocol:SMP安全管理协议,主要负责生成加密密钥和身份密钥。
    • Attribute Protocol:ATT,属性协议,主要负责服务端与客户端点到点的数据传输。
    • AMP Manager Protocol:直接使用L2CAP与远程设备通信。
    • Generic Attribute Profile:GATT,提供更多的功能,概要文件描述了属性服务器中使用的服务层次结构、特征和属性,用于LE设备
    • Generic Access Profile:GAP,标识了基础的蓝牙设备的通用功能

    Controller层

    • Device Manager:控制蓝牙设备的通用行为,负责与蓝牙通信过程中,所有的与数据无关的操作,如查询设备,连接设备
    • Link Manager:链路管理,主要负责创建,修改,释放逻辑链路。
    • Baseband Resource Manager:基带资源管理,主要负责所有的访问无线电媒体
    • Link Controller:链路控制,主要负责从编码和解码蓝牙数据包PHY:物理层,主要负责发送,接收物理通道的信息包

    以上为官方手册提供的视图,Host通过HCI(Host Controll Interface)接口,来控制Controller执行相应的动作。

    蓝牙协议架构视角

    在这里插入图片描述

    以上架构图,将蓝牙协议分为了HW层,Transport层,Host层。

    HW层——蓝牙芯片层

    HW层,指的是蓝牙芯片层,也就是我们上面说的Controller,包括以下几个部分:

    • RF(RADIO):射频层,本地蓝牙数据通过射频发送给远端设备,并且通过射频接收来自远端蓝牙设备的数据。
    • BB(BASEBAND):基带层,进行射频信号与数字或语音信号的相互转化,实现基带协议和其它的底层连接规程。
    • LMP(LINK MANAGER PROTOCOL):链路管理层,负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作
    • HCI(HOST CONTROLLER INTERFACE):主机控制器接口层,HCI层在芯片以及协议栈都有,芯片层面的HCI负责把协议栈的数据做处理,转换为芯片内部动作,并且接收到远端的数据,通过HCI上报给协议栈。
    • BLE PHY:BLE的物理层
    • BLE LL:BLE的链路层

    Transport——数据传输层

    Transport层,主机控制层接口,通过硬件接口UART/USB/SDIO把HOST协议层的数据发送给Controller层,并且接收Controller层的数据。

    该部分有几个协议:

    • H2:基于USB的传输
    • H4:基于UART的传输,最简单的传输方式,只在 HCI raw data前面加上一个type
    • H5:基于UART的传输
    • BCSP: 基于UART的传输
    • SDIO:基于SDIO的传输

    H4 协议:需要蓝牙芯片(四个引脚TX/RX/CTS/RTS)的UART_TX/UART_RX/UART_CTS/UART_RTS/VCC/GND接到MCU;
    H5 协议:只需要蓝牙芯片(两个引脚TX/RX)的UART_TX/UART_RX/VCC/GND接到MCU就可以通信。

    HOST——协议层

    HOST层,此部分就是蓝牙协议栈,该部分包括多个协议:

    • HCI(HOST CONTROLLER INTERFACE):主机控制层接口,主要负责透过transport把协议栈的数据发送给蓝牙芯片,并且接受来自蓝牙芯片的数据,数据主要分为HCI COMMAND(HOST->CONTROLLER),HCI EVENT(HOST<-CONTROLLER),HCI ACL(HOST<->CONTROLLER),HCI SCO(这个有点些微差异,因为部分芯片的SCO数据不是透过TRANSPORT直接跟HOST沟通,而是通过特殊的引脚,PCM IN/OUT/SYNC/CLK脚来传输数据),core文档HCI的架构如下:
      在这里插入图片描述
      在这里插入图片描述

    • 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的服务框架 ,该框架定义了数据交换的格式。

    总结

    蓝牙芯片的架构:根据Host与Controller的结合关系,可以分为单模芯片和双模芯片。

    蓝牙协议的架构:蓝牙协议分为三层,即:Host层,Transport层,Controller层。每一层又由多种不同的协议组成。

  • 相关阅读:
    关于XAMPP无法启动mysql数据库
    浅析数据仓库和建模理论
    muduo库剖析(2)
    吴恩达深度学习笔记(一)——神经网络基础、 logistic 回归
    Xline 源码解读(四)—— CURP 状态机引擎
    微信小程序-页面导航-导航传参
    简单选择排序(c语言代码实现)
    SICP:赋值和局部状态(Python实现)
    [字符串和内存函数]strcat字符串函数的详解和模拟
    【CTO变形记】高维视角,跳出“农场主与火鸡”
  • 原文地址:https://blog.csdn.net/qq_28877125/article/details/133983671