本文内容比较杂散,只是做记录使用,后续会整理的有条理些
link layer
基本介绍
**Link Layer Control(链路层控制)**是蓝牙低功耗(BLE)协议栈的核心部分,负责实现设备间可靠、安全、低功耗的数据传输和控制。它是蓝牙协议栈的基础,在 BLE 的操作中承担了许多关键功能。
以下是 BLE Link Layer Control 的整体内容详细解析:
1. 概述
链路层(Link Layer, LL)位于 BLE 协议栈的控制部分,与物理层(PHY)直接交互,是数据链路的核心组件。其主要职责包括:
- 连接建立和管理
- 数据传输
- 安全控制
- 状态管理
2. 链路层状态
链路层支持以下几种状态,每种状态对应不同的操作模式:
- Standby(待机状态):设备处于非活动状态,不执行任何操作。
- Advertising(广播状态):设备以广播包形式发送数据,允许其他设备扫描或连接。
- Scanning(扫描状态):设备接收广播包,用于发现其他设备。
- Initiating(发起状态):设备尝试与广播设备建立连接。
- Connected(连接状态):设备成功建立连接,进入数据传输模式。
3. 核心功能
链路层控制的核心功能分为以下几个模块:
(1) 设备发现
- 广播(Advertising):
- 广播设备发送广播包,表明其可用性。
- 支持多种广播类型(如可连接、不可连接、定向广播等)。
- 扫描(Scanning):
- 扫描设备接收广播包,提取设备信息(如地址、名称等)。
(2) 连接管理
- 连接建立:
- 发起设备通过
CONNECT_REQ
数据包与广播设备建立连接。
- 发起设备通过
- 连接维护:
- 定期通过 连接事件(Connection Events) 交换数据包。
- 支持主设备和从设备间的双向通信。
- 连接参数更新:
- 包括连接间隔、超时时间、主从时延等参数的调整。
- 通过 Connection Update Procedure 完成。
(3) 信道管理
- BLE 使用 40 个信道:
- 3 个广播信道(37、38、39)。
- 37 个数据信道(0-36)。
- 信道选择算法:
- BLE 通过信道跳频避免干扰,提高通信可靠性。
- 信道映射更新:
- 使用 Channel Map Update Procedure 动态调整信道。
(4) 数据传输
- 数据包结构:
- 包括 Preamble(前导符)、Access Address(访问地址)、Header(头部)、Payload(负载)等。
- 数据包通过 AES-CCM 加密保障安全性。
- 分片与重组:
- 长数据分片后通过多个 PDU(Protocol Data Unit)传输。
(5) 安全管理
- 加密过程:
- 使用
LTK
(Long Term Key)进行会话加密。 - 加密过程包括密钥分发、验证等。
- 使用
- 身份验证:
- 通过配对(Pairing)或绑定(Bonding)确保设备间的可信连接。
(6) 低功耗特性
-
支持
低功耗模式:
- 通过调整连接间隔、监听窗口等参数降低功耗。
-
主从切换:
- 主设备可以动态调整连接频率以节省资源。
4. 链路层控制过程
链路层定义了多种控制过程(Control Procedures)以管理连接和数据传输:
控制过程 | 描述 |
---|---|
Connection Update | 调整连接参数(间隔、超时等)。 |
Channel Map Update | 更新信道映射以避免干扰。 |
Encryption Procedure | 启用或关闭加密以保障数据安全。 |
Feature Exchange | 主从设备交换支持的功能特性。 |
Version Exchange | 主从设备交换蓝牙版本信息。 |
PHY Update | 更新物理层速率(如 1 Mbps 到 2 Mbps 切换)。 |
Terminate Procedure | 主动终止连接,释放资源。 |
5. 链路层 PDU(Protocol Data Unit)
链路层数据单元(PDU)是链路层通信的基本单位,分为以下两种类型:
- 控制 PDU:用于执行链路层控制过程。
- 数据 PDU:用于传输应用层数据。
每个 PDU 包括以下字段:
- Header:标识 PDU 类型和长度。
- Payload:实际的数据或控制信息。
- MIC(可选):消息完整性检查,用于验证数据的完整性。
6. 链路层与其他层的交互
- 与物理层(PHY):
- 直接管理射频信道的切换和数据包发送接收。
- 与主机层(Host Layer):
- 提供基础数据传输服务(如 ACL 数据通道)。
- 通过 HCI(Host Controller Interface)与主机层通信。
7. 链路层的特点
- 高效:支持数据分片、信道跳频和错误恢复。
- 安全:内置加密和验证机制,保障通信安全。
- 灵活:多种状态和过程支持复杂的 BLE 应用场景。
- 低功耗:通过优化连接参数和数据传输,延长电池寿命。
链路层是 BLE 协议栈的核心模块,其功能覆盖了连接、数据传输、安全管理等关键领域。如果需要更深入的某一部分解析(如广播过程或加密机制),请告诉我!
Connection Update procedure
这张图展示了 BLE(蓝牙低功耗)设备在连接参数更新时的连接事件时序图(Connection Event Timing)。它描述了主设备(Central)和从设备(Peripheral)在旧连接参数和新连接参数切换时的时间关系。
图中关键部分解释
- Last Event Transmitted with Old Connection Parameters
- 描述:
- 这是主设备(C)和从设备(P)之间使用旧的连接参数(
connInterval_old
)完成的最后一次数据传输。
- 这是主设备(C)和从设备(P)之间使用旧的连接参数(
- 特点:
- 此时仍按照旧的连接间隔
connInterval_old
进行通信。
- 此时仍按照旧的连接间隔
- 描述:
- Transmit Window (传输窗口)
- 位置:在
Instant
时间点后出现。 - 定义:
Transmit Window
是连接参数更新的关键,它标志着新连接参数(connInterval_new
)生效的开始。- 主设备将在
transmitWindowOffset
和transmitWindowOffset + transmitWindowSize
之间开始第一个连接事件。
- 限制条件:
- 主设备(C)必须在此窗口内发送数据包,从设备(P)需监听该窗口,以便完成参数更新后的第一次连接。
- 位置:在
- First Event Transmitted with New Connection Parameters
- 描述:
- 在
Transmit Window
中,主设备和从设备首次使用新的连接参数进行通信。 - 具体的连接间隔变为
connInterval_new
,后续事件也将按此间隔执行。
- 在
- 特点:
- 新的连接事件开始按照
connInterval_new
重新计算定时。
- 新的连接事件开始按照
- 描述:
- Second Event Transmitted with New Connection Parameters
- 描述:
- 在第一个使用新参数的连接事件后,设备继续按照
connInterval_new
的时间间隔执行后续连接事件。
- 在第一个使用新参数的连接事件后,设备继续按照
- 描述:
- 关键时间参数
connInterval_old
:- 旧连接参数下的连接事件间隔。
transmitWindowOffset
:Instant
时间点后,新参数生效的延迟时间。
transmitWindowSize
:- 定义新参数开始生效时主设备的传输窗口大小。
connInterval_new
:- 更新后的新连接事件间隔。
T_IFS
:T_IFS
表示设备之间数据包的间隔(Inter-Frame Space)。
图的实际意义
- 这是 BLE 中 连接参数更新过程 的标准行为,确保主从设备在切换参数时不会失去同步。
- 使用
transmitWindowOffset
和transmitWindowSize
,主设备可以在规定的窗口内完成新连接参数的切换,而从设备只需监听这一窗口即可。 - 应用场景:
- 调整连接间隔(
connInterval
)以优化功耗或响应速度。 - 提高通信效率,满足实时性或低功耗的需求。
- 调整连接间隔(
总结
这张图展示了 BLE 连接参数更新中的定时关系:
- 主从设备使用旧参数完成最后一次通信。
- 主设备进入
Transmit Window
,开始按照新参数通信。 - 新的连接事件间隔生效,并持续使用新参数进行通信。
主机连接流程
这两张图展示了 BLE(蓝牙低功耗)连接建立过程 的两种不同场景:使用 CONNECT_IND 和 AU