BLE蓝牙协议栈常用名词

一、PDU(Protocol Data Unit:协议数据单元):BLE数据传输的基本单元,会受到MTU的限制
固定结构是LL hearder(1 Byte) + data length(1 Byte) + data(0 Byte - 37Byte) / 255Byte

PDU分两种:

  1. 广播时的:广播通道PDU,大小是2 Byte - 39 Byte,

广播中又分为:
==|
==|----从机广播数据包Advertising PDUs
==|
==|----主机扫描请求(SCAN_REQ)/从机扫描响应(SCAN_RSP)数据包Scanning PDUs
==|
==|----主机连接请求数据包Initiating PDUs
==|

  1. 连接中的:数据通道PDU,大小是2 Byte - 39 Byte or 257 Byte

连接中又分为:
==|
==|----LL数据包LL Data PDUs
==|
==|----LL控制包LL Control PDUs
==|
本质上其实就是不同传输情况下不同类型的数据包,LL hearder表示各种类型


二、MTU(Maximum Transmission Unit:最大传输单元):BLE蓝牙数据包中能够传输的最大数据量,
可以理解成数据通道PDU里有效净荷数据的最大数据量,
即LL hearder(1 Byte) + data length(1 Byte) + MTU
MTU的大小在初始化后是固定的,不能大于PDU
建立连接后,双方设备会进行一次MTU交换,这是必须的过程,
目的就是为了在主从双方设置一个PDU中最大能够交换的数据量,也就是取双方MTU的最小值
MTU的交换是由客户端(主机)连接后发起的,


三、PHY(Physical Layer)是指物理层,蓝牙技术协议栈中最底层的一部分,
物理层定义了无线通信的频率、调制方式、传输速率以及功耗管理等,确保设备能够有效地进行通信‌
蓝牙5.0协议一共定义了3种PHY


四、RSSI(Received Signal Strength Indication)接收信号强度指示,单位是 dBm
可以用来指示无线信号的强弱、判断链路的质量,常在距离测算和无线定位方面的应用。
它的数值越高,表示设备之间距离越近

  • ‌在广播阶段,我们可以从ADV_IND、ADV_DIRECT_IND、ADV_NONCONN_IND、ADV_SCAN_IND和SCAN_REQ、SCAN_RSP等PDU中‌获取RSSI。
    ADV_IND用于通用广播,
    ADV_DIRECT_IND用于定向连接广播,
    ADV_NONCONN_IND用于不可连接广播,
    ADV_SCAN_IND用于可扫描广播,
    SCAN_REQ用于主动扫描请求
    SCAN_RSP用于从机扫描响应等
  • 在连接阶段,主/从设备可以从连接事件交互数据获取RSSI

五、CCCD(Client Characteristic Configuration Descriptor)即客户端特性配置描述符,
CCCD具有一个固定的UUID,即00002902-0000-1000-8000-00805f9b34fb,这个UUID是BLE标准中定义的,用于唯一标识CCCD‌

CCCD的值用于配置BLE特性的通知(Notification)和指示(Indication)功能。
通常,这个值是一个16位的配置代码,用于启用禁用通知和指示。
通过配置CCCD,客户端(主机)可以控制BLE设备特性的通知和指示行为
例如:连接建立后,客户端会扫描并发现BLE设备上的服务和特性。当服务端(从机)有配置CCCD,
客户端(主机)可以通过CCCD写入特定的配置值来启用或禁用该特性的通知和指示功能‌
在 CCCD 中写入“1”使能通知功能,
写入“2”使能指示功能,写入“0”同时禁止通知和指示功能


六、UUID‌(Universally Unique Identifier)‌是蓝牙协议中用于唯一标识服务特征值的标识符,
每个服务(Service)和特征值(Characteristic)都有自己的UUID,
这使得主机可以发现和获取从机的服务和特征,并与之通信‌确保设备能够正确识别和访问蓝牙服务。

UUID是一个128位(16字节)的标识符,
因为 128 位的 UUID 相当长,设备间为了识别数据的类型需要发送长达 16 个字节的数
据。为了提高传输效率,蓝牙技术联盟(SIG)定义了一个“UUID 基数”,结合一个较短的 16
位数使用。二者仍然遵循通用唯一识别码的分配规则,只不过在设备间传输常用的 UUID 时,
只发送较短的 16 位版本,接收方收到后补上蓝牙 UUID 基数即可
UUID 分为标准的 UUID 和厂商自定义的 UUID。

  • 标准的 UUID:由 SIG 发布,采用 UUID 基数+16 位 UUID 的形式,如心率服务的 UUID
    0x180D,使用的 UUID 基数是:00000000 - 0000 - 1000 - 8000 – 00805F9B34FB。
  • 厂商自定义的 UUID:采用 UUID 基数+16 位 UUID 的形式,由厂商定义,如 BLE
    串口服务的 UUID 是 0x0001,使用的 UUID 基数是:6E400000 – 42A3 – F393 –
    E0A9 – E50E235CCA9E。
    为了方便管理,增加 UUID 的可读性,蓝牙低功耗使用的那部分 UUID 被分为下列几组:
  • 0x1800 ~ 0x26FF:用作服务类通用唯一识别码。
  • 0x2700 ~ 0x27FF:用于标识计量单位。
  • 0x2800 ~ 0x28FF:用于区分属性类型
  • 0x2900 ~ 0x29FF:用作特征描述。
  • 0x2A00 ~ 0x7FFF:用于区分特征类型。

七、PPCP(Peripheral Preferred Connection Parameters)外围设备优先连接参数
主要用于定义外围设备(Peripheral)的连接偏好参数,在GAP层设置,
这些参数包括最小最大连接间隔、超时设置、自动连接和重连尝试次数等,

连接间隔‌:定义设备之间的连接频率。较小的间隔值意味着更频繁的连接尝试,但可能会增加功耗;较大的间隔值则减少功耗,但可能导致连接不稳定。
超时设置‌:定义在无操作情况下设备进入休眠状态或断连的时间。合理的超时设置可以在保证连接稳定性的同时减少功耗。
‌自动连接和重连尝试次数‌:定义设备在连接失败后的重试次数和策略,有助于提高连接的可靠性。

‌中央设备(Central)‌:不需要实现PPCP,但可以通过读取外围设备的PPCP参数来调整自身的连接策略,以获得更好的连接体验‌

posted @ 2025-05-21 19:16  感兴趣就学  阅读(157)  评论(0)    收藏  举报