1、BLE架构详解

1. 物理层(PHY)

  • 作用:物理层是BLE协议栈中的最低层,负责无线电信号的发送和接收。它指定了BLE所用的无线频段(2.4GHz ISM频段),以及调制解调方式和方法(如高斯频移键控GFSK调制)。此外,物理层还负责跳频等功能,以降低其他设备的干扰。
  • 性能影响:物理层的性能直接决定了整个BLE芯片的功耗、灵敏度以及selectivity等射频指标。

2. 链路层(LL)

  • 作用:链路层为BLE设备之间的通信提供了基础的链路功能。它定义了协议栈中最为基础的状态机、数据包格式、广播和连接流程等问题。当两个BLE设备决定建立持续连接时,链路层负责初始化、维护和断开这些连接。此外,链路层还负责数据的完整性校验、重传机制以及自适应跳频(AFH)等功能。
  • 核心状态:链路层包含了五种RF射频状态,分别是待机状态、广播状态、扫描状态、发起连接状态和连接状态。
  • 难点与重点:链路层是整个BLE协议栈的核心,也是难点和重点。它负责处理RF射频通道的选择、数据包的识别与发送、数据完整性的保证以及链路的管理和控制等问题。

3. 主机控制接口层(HCI)

  • 作用:主机控制接口层是主机与控制器之间的标准定义接口。它提供了主机和控制器之间交换命令、数据和事件等信息的标准化传输接口。该层可以由软件API实现,或者使用硬件接口(如UART、SPI、USB)来控制。
  • 应用场景:HCI层主要用于两颗芯片实现BLE协议栈的场合,用来规范两者之间的通信协议和通信命令等。

4. 逻辑链路控制和适配协议层(L2CAP)

  • 作用:逻辑链路控制和适配协议层位于基带层和高层协议之间,为上层协议提供了协议复用、分段和重组服务。它能够将接收到的来自上层的数据包分为链路层可传输的更小的数据包,并在接收端重新组合这些数据包。此外,L2CAP层还支持数据的分割和重组,使得较大的报文可以在底层无线电中进行传输。
  • 功能特性:L2CAP层决定了MTU(最大传输单元)的大小,目前芯片支持的MTU大小通常为23~247Bytes。它还对连接间隔进行管理,并区分加密通道和普通通道。

5. 安全管理协议层(SMP/SM)

  • 作用:安全管理协议层负责BLE连接的安全管理和加密。它定义了用于配对、加密和密钥分配的方法。通过配对过程,两个设备可以验证彼此的身份,对其链接进行加密,并交换加密密钥。这样,设备就可以通过BLE接口安全地交换数据,而不会被射频通道上的无线监听器窃听。
  • 加密技术:BLE使用了128位AES对数据进行加解密,以确保数据的安全性。

6. 通用访问配置文件层(GAP)

  • 作用:通用访问配置文件层直接与应用程序和profile配置文件进行通信。它处理设备发现和连接等相关服务,包括设备发现、建立连接、断开连接、初始化安全特性以及设备配置等。此外,GAP层还对链路层的有效数据包(payload)进行解析和定义。
  • 功能特性:GAP层实现了蓝牙连接功能,并定义了设备的访问模式与流程。它还控制链路层的五种RF状态切换,如从待机状态切换到广播状态或扫描状态等。

7. 属性协议层(ATT)与通用属性配置文件层(GATT)

  • ATT层作用:属性协议层定义了BLE设备用于存储和访问数据的协议。它引入了“属性”的概念来描述一条一条的数据,并允许设备向另一个设备展示特定的数据(称为“属性”)。展示属性的设备称为服务器,与之配对的设备称为客户端。ATT层还定义了可以使用的ATT命令,如读取或写入某个数据。
  • GATT层作用:通用属性配置文件层是在ATT层之上的一层结构,它定义了使用ATT的服务框架。GATT层规范了属性中的数据内容,并运用“分组”的概念对属性进行分类管理。通过GATT层,客户端可以访问服务器端的服务和特征(Characteristic),实现数据交互。GATT层采用了Client/Server架构,使得两个设备间的应用层数据通信变得更加规范和高效。

8. GAP Role Profile

GAP Role Profile不仅定义了蓝牙设备的角色,还规定了这些角色在发现和建立连接过程中的行为和交互方式。这包括:

  • Broadcaster(广播者)
    • 角色:发送advertising events(广播事件)的设备。
    • 功能:广播者会定期发送广播数据包,以便其他设备能够发现和识别它。这些数据包通常包含设备的名称、服务UUID等信息。
    • 设备特点:广播者可能具有接收器(Receiver),用于接收来自其他设备的响应或连接请求。
  • Observer(观察者)
    • 角色:接收advertising events(广播事件)的设备。
    • 功能:观察者会扫描周围的广播数据包,以发现和识别其他设备。观察者通常不会主动发起连接,而是被动地接收广播信息。
    • 设备特点:观察者具有接收器和可能的发射器(Transmitter),用于接收广播数据包和可能的响应。
  • Peripheral(从机)
    • 角色:物理链路上接受连接的设备。
    • 功能:从机会在广播时被其他设备(通常是Central设备)发现,并可以接受来自Central的连接请求。一旦建立连接,从机会与Central进行数据传输。
    • 设备特点:在LL层(链路层)中,从机的Connection State为Slave(从属),具有发射器和接收器。
  • Central(主机)
    • 角色:物理链路上发起连接的设备。
    • 功能:Central设备会主动扫描周围的广播数据包,以发现和识别其他设备(如Peripheral设备)。一旦找到目标设备,Central会发起连接请求并建立连接。在连接建立后,Central可以与从机进行数据传输和控制。
    • 设备特点:在LL层中,主机的Connection State为Master(主),具有发射器和接收器。
  • 设备发现:通过广播和扫描机制,使设备能够被发现和识别。
  • 连接建立:根据设备的角色和配置,通过一系列握手和参数协商过程,建立稳定的连接。
  • 连接管理:在连接建立后,管理连接的参数(如连接间隔、从机延迟等),以确保数据传输的稳定性和可靠性。
  • 安全管理:提供设备之间的认证、加密和密钥管理等安全功能,以确保数据传输的安全性。

9. GAP ATT Profile

  • ATT层作用:ATT协议是BLE技术中负责数据交互的核心协议之一。它定义了一种数据结构(称为attribute)来表示和存储蓝牙设备中的数据。每个attribute都由四个字段组成:句柄(Handle)、类型(Type,通常表示为UUID)、权限(Permissions)和值(Value)。
  • 句柄(Handle):用于唯一标识一个attribute,客户端通过句柄来访问服务端的attribute。
  • 类型(Type):表示attribute中存储的数据的类型,通常使用UUID(Universally Unique Identifier,通用唯一识别码)来表示。
  • 权限(Permissions):定义了客户端对attribute的访问权限,如可读、可写或不可访问等。
  • 值(Value):attribute中存储的实际数据。
  • ATT协议还定义了六种方法(也称为操作)来访问和管理attribute:Read(读取)、Write(写入)、Read Blob(读取大块数据)、Write Blob(写入大块数据)、Notify(通知)和Indicate(指示)。这些方法允许客户端和服务端之间进行数据交互和同步。

9. Application

  • 蓝牙从机
        1. 相关硬件和基础服务初始化
        2. 设置广播参数、广播数据、扫描回应等。
        3. 设置Profile、添加从机服务、特征值、设置回调函数用于接收主机数据等。
        4. 设置绑定管理参数(可选)
        5. 启动广播,开始运行。
        6. 等待相关事件,及事件处理,例如收到主机发来的数据,被链接等等。
  •  蓝牙主机
        1. 相关硬件和基础服务初始化
        2. 设置扫描参数。
        3. 设置连接参数。
        4. 设置绑定管理参数(可选)
        5. 启动协议栈,开始运行。
        6. 等待相关事件,及事件处理,例如扫描事件,从机的Notify事件等等。

  •  

2、各个层级交互图

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐