当前位置: 首页 > article >正文

1 Studying《蓝牙核心规范5.3》

目录

[Vol 0][Part B 蓝牙规范要求]

3 定义

3.1 蓝牙产品类型

4 核心配置

4.1 基本速率核心配置

4.2 增强型数据速率核心配置

4.4 低功耗核心配置

4.5 基本速率和低功耗结合的核心配置

4.6 主机控制器接口核心配置

[Vol 1][Part A 架构]1 概述

1.1 BR/EDR操作概述

1.2 LE操作概述

1.4 命名

[Vol 1][Part A 架构]2 核心系统架构

2.1 核心架构

2.1.1 主机架构

2.1.2 BR/EDR/LE控制器架构

[Vol 1][Part A 架构]3 数据传输架构

3.1 核心传输成员

3.1.1 帧数据传输

3.1.2 非帧数据传输

3.2 传输架构实体

3.2.1 BR/EDR通用包结构

3.2.2 LE通用包结构

3.3 物理通道

3.3.1 BR/EDR物理通道

3.3.2 LE物理通道

3.4 物理链路

3.4.1 被基本和适配微网物理通道支持的BR/EDR链路

3.4.2 被扫描物理通道支持的BR/EDR链路

3.4.3 被LE物理通道支持的LE链路

3.5 逻辑链路和逻辑传输

3.5.1 投射

3.5.2 调度和认证方案

3.5.3 数据类别

3.5.4 逻辑传输

3.5.5 逻辑链路

3.6 L2CAP通道

3.8 功率控制

3.8.1 BR/EDR功率控制

3.8.2 LE功率控制

[Vol 1][Part A 架构]4 通信拓扑和操作

4.1 微网拓扑

4.1.1 BR/EDR拓扑

4.1.2 LE拓扑

4.2 操作步骤和模式

4.2.1 BR/EDR步骤

4.2.2 LE步骤

[Vol 1][Part A 架构]5 安全概述

5.1 安全架构

5.2 BR/EDR安全简单配对

5.2.1 安全目标

5.2.2 被动窃听保护

5.2.3 中间人保护

5.2.4 关联模型

5.3 仅安全连接模式

5.4 LE安全

5.4.1 关联模型

5.4.2 密钥生成

5.4.3 加密

5.4.4 签名数据

5.4.5 隐私功能

[Vol 1][Part A 架构]6 蓝牙应用架构

6.1 蓝牙规范

6.2 通用访问规范

6.3 规范的层次

6.4 通用属性架构

6.4.1 属性规范

6.4.2 通用属性规范

6.5 基于GATT规范的层次

6.5.1 服务

6.5.2 包含的服务

6.5.3 特征

[Vol 1][Part A 架构]7 共存与搭配

7.1 支持共存与搭配的核心特点

7.2 自适应跳频

7.3 蓝牙设备和无线局域网设备的共存

7.4 移动无线标准(MWS)共存

7.5 使用一个外部时间源同步蓝牙

7.6 微网时钟调整

7.7 插槽可用性掩码

[Vol 1][Part A 架构]8 使用蓝牙低功耗测向

8.1 到达角(AOA)方法

8.2 偏离角(AOD)方法

[Vol 1][Part B 缩略语]

[Vol 1][Part F 控制器错误码]

[Vol 2 BR/EDR控制器][Part A 无线电规范]

3.1 基本速率

3.1.1 调制特性

3.1.2 辐射发射

3.1.3 无线电频率忍耐度

3.2 增强数据速率

3.2.3 无线电频率忍耐度

4.1 基本速率

4.1.1 实际的敏感度等级

4.1.2 干扰性能

4.1.3 带外阻塞

4.1.4 交调特性

4.1.5 最大可用级别

4.1.6 接收器信号强度指示器

4.1.7  参考信号定义

4.2 增强数据速率

4.2.1 实际的敏感度等级

4.2.2 误码率性能

4.2.3 干扰性能

4.2.4 最大使用级别

4.2.6 参考信号的定义


[Vol 0][Part B 蓝牙规范要求]

蓝牙文档官网:
https://www.bluetooth.com/specifications/specs/
蓝牙核心规范5.3:
https://download.csdn.net/download/u012906122/74651266

先看下蓝牙层次图,有个直观的印象:

Host,Controller和Host Controller Interface

3 定义
3.1 蓝牙产品类型

所有的蓝牙产品如下:
• Bluetooth End Product(蓝牙终端产品)
• Bluetooth Host Subsystem Product(蓝牙主机子系统产品)
• Bluetooth Controller Subsystem Product(蓝牙控制器子系统产品)
• Bluetooth Profile Subsystem Product(蓝牙配置子系统产品)
• Bluetooth Component Product(蓝牙组成产品)
• Bluetooth Development Tool(蓝牙开发工具)
• Bluetooth Test Equipment.(蓝牙测试套件)
BR:蓝牙基本速率
EDR:蓝牙增强型数据速率
LE:低功耗
HCI:主机控制接口

 表3.1:核心配置缩略语

3.1.1 蓝牙终端产品

M:必须支持
O:条件支持
P:部分支持
I:固有支持
E:不支持
蓝牙终端产品类型定义如下:

 表3.2:蓝牙终端产品类型的要求配置

3.1.2 蓝牙子系统产品

有三种蓝牙子系统产品:
• Bluetooth Host Subsystem Product(蓝牙主机子系统产品)
• Bluetooth Controller Subsystem Product(蓝牙控制器子系统产品)
• Bluetooth Profile Subsystem Product(蓝牙配置子系统产品)
3.1.2.1 蓝牙主机子系统产品

 表 3.3:蓝牙主机子系统产品类型的要求配置
3.1.2.2 蓝牙控制器子系统产品

 表 3.4:蓝牙控制器子系统产品类型的要求配置
3.1.2.3 蓝牙配置子系统产品

4 核心配置
4.1 基本速率核心配置

Host主机:

 表4.1:基本速率核心配置主机要求
Controller控制器:

 表4.2:基本速率核心配置控制器要求

4.2 增强型数据速率核心配置

 表4.3:增强型数据速率核心配要求

4.4 低功耗核心配置

Host主机:

 表4.4:低功耗核心配置主机要求
Controller控制器:

 表4.5:低功耗核心配置控制器要求

4.5 基本速率和低功耗结合的核心配置

Host主机:

 表4.6:基本速率和低功耗结合的核心配置主机要求
Controller控制器:

表4.7:基本速率和低功耗结合的核心配置控制器要求

4.6 主机控制器接口核心配置

 表4.8:基本速率和低功耗结合的核心配置控制器要求

[Vol 1][Part A 架构]1 概述

 蓝牙文档官网:

Specifications – Bluetooth® Technology Website

蓝牙核心规范5.3:

蓝牙核心规范_v5.3.rar-Linux文档类资源-CSDN下载

蓝牙层次图:

涉及的通信基本概念:
等时传输:用来实现等时数据传输的封包只需令牌与数据两个封包阶段就可以形成一个数据交易的动作。
跳频:跳频通信是一种扩频通信。跳频是指载波频率在很宽频带范围内按某种序列进行跳变。
时分双工传输(TDD):TDD模式的移动通信系统中接收和传送是在同一频率信道即载波的不同时隙,用保证时间来分离接收与传送信道;而FDD模式的移动通信系统的接收和传送是在分离的两个对称频率信道上,用保证频段来分离接收与传送信道。
频分多址和时分多址:我们把频率资源想象成一个房间,如果把房间分割成不同的空间,不同的用户在不同的房间聊天,这就是频分多址。如果这个房间里,某一时间让某一个人说话,下一时间段,让另一个人说话,就是时分多址。

蓝牙无线技术是一项短距离通信系统,它是为了替代有线通信而产生的。关键特点是传输鲁棒性高,低功耗和价格便宜。
总共有两种蓝牙无线技术,两种技术都包含了设备发现,连接建立和连接机制。
Basic Rate(BR):基本速率
Low Energy(LE):低功耗
基本速率(BR)包含了一个可选的增强型数据速率(EDR)扩展。基本速率(BR)提供了同步和异步连接,对于BR数据速率可达721.2kb/s,对于EDR数据速率可达2.1Mb/s。
低功耗(LE)相比BR/EDR来说更低功耗,低复杂度并更便宜。物理层可选2Mb/s数据速率。并提供了面向连接和和无连接的等时传输。
蓝牙核心系统包含了一个主机Host和一个或多个控制器Controllers。主机定义为HCI之上非核心配置之下的所有层。控制器定义为HCI之间的所有层。

 图 1.1:(从左到右)LE控制器,BR/EDR控制器和BR/EDR/LE控制器
1 LE控制器:包含LE PHY(LE物理层),Link Layer(链路层)和可选HCI(主机控制接口)
2 BR/EDR控制器:包含Radio(无线电),Baseband(基带),Link Manager(链路管理器)和可选HCI(主机控制接口)
3 BR/EDR/LE控制器:BR/EDR控制器和LE控制器的结合

1.1 BR/EDR操作概述

BR/EDR无线电工作在2.4GHz。系统采用了一个跳频收发器来对抗干扰和衰弱。BR码率可达1Mb/s,EDR码率在2Mb/s或3Mb/s。
在典型的操作中,一个物理无线电通道被一组设备共享,这组设备被同步到一个共同的时钟和跳频模式。其中一个设备提供同步参考,被称为中心设备。其他设备被同步到中心设备时钟和跳频模式,被称为外围设备。这些设备组成一个微网。这是蓝牙BR/EDR无线技术的基本通信方式。
微网中的设备使用一个特定的跳频模式,频率由蓝牙地址和中心设备时钟频率决定。基本的跳频模式是一个79频率,间隔1MHz的伪随机顺序。
物理通道被分为时间单元,这些时间单元被称为槽。数据在蓝牙设备之间以包的形式传输,这些包存放在槽中。当条件允许时,许多连续的槽可能被分到一个包中。蓝牙技术通过使用时分双工传输(TDD)方案,提供了全双工传输的效果。
在物理通道之上有链路层和相关的控制协议。向上依次是物理通道层,物理链路层,逻辑传输层,逻辑链路层和L2CAP通道层。这些将在Section 3.3和Section 3.6中详细讨论。
通常对于一个物理通道来说,一个物理链路是在一个中心设备和一个或多个外围设备之间构成的。物理链路在中心设备和外围设备之间提供了双向的包传输。
再向上是链路管理协议(LMP)层。微网中活跃的设备被用来传输LMP协议信号,被称为ACL逻辑传输。链路管理函数使用LMP去控制微网中设备的操作,并提供服务去管理较低的层次(无线电和基带)。
再向上是L2CAP层。L2CAP提供了基于通道的抽象,面向应用与服务。它携带了分解和重组的应用数据。

1.2 LE操作概述

LE无线电同样工作在2.4GHz。LE系统使用一个跳频接收器来对抗干扰和衰弱。LE使用不同于BR/EDR的术语来描述物理层。
LE 1M PHY:1Mb/s(不支持错误校正编码)
LE Coded PHY: 1Mb/s同时支持错误校正编码
LE 2M PHY:2Mb/s(不支持错误校正编码)
Section 3.2.2详细讨论。
LE采用两种多址方案:频分多址(FDMA)和时分多址(TDMA)。
FDMA中以2MHz分成40个物理通道。其中3个被用作主要的广播通道,37个被用作通用通道。
TDMA轮询方案用来一个设备在预定时间发送包,相应的设备在预定间隔后对包进行响应。
物理通道被分为时间单元,称作事件。LE设备以包的形式传输,包存在事件中。事件包含如下类型:广播,扩展广播,周期广播,连接和同步事件。
广播者:在广播物理通道上发送广播包的设备。
扫描者:在广播物理通道上接收广播包,但并没意图连接的设备
广播事件发生在广播物理通道上。在每个广播事件的开始,广播者发送一个对应广播事件类型的广播包。依赖于广播包的里的类型,扫描者可以在同一个广播物理通道上向广播者发送请求,之后在同一个广播物理通道上可能得到广播者的响应。在同一个广播事件里,广播者发送的下一个广播包时广播物理通道会改变(Adv Ch(k) --> Adv Ch(k+1))。广播者可以随时终止广播,下一次广播物理事件的第一个广播物理通道还是使用Adv Ch(k)。

 图 1.2:广播事件
需要组成ACL连接的设备会监听可连接的广播包。这样的设备被成为发起者(手机)。如果广播者(蓝牙耳机)正在使用一个可连接的广播事件,发起者在它收到可连接的广播包后可能在相同的广播物理通道里发起连接请求。如果广播者接受了发起的连接,广播事件结束,连接事件开始。一旦连接建立,发起者成为微网中的中心设备,而广播设备成为外围设备。连接事件用来在中心和外围事件中传输数据包。在连接事件中,通道跳频发生在每个连接事件的开始。在一个连接事件内,使用同一个数据物理通道传输数据,不跳频。中心设备初始化每个连接事件的开始并在任何时候可以结束连接。

 图 1.3:连接事件
使用ACL连接,一个中心设备可以使用同步物理通道建立一个或多个同步连接。一个同步连接被用来在中心设备和外围设备之间传输同步数据,被称为连接同步流(CIS)。一个CIS包含CIS事件,事件发生等时间间隔。每个CIS事件包含一个或多个子事件。在每个子事件中,中心设备发送一次,外围事件响应一次。每个子事件使用的物理通道由算法决定。用作子事件的物理通道被标记为ISO Ch。

 图 1.4:CIS事件和子事件
设备可以使用一个同步物理通道来广播同步数据。一个同步无连接逻辑传输被称为广播同步流(BIS)。一个BIS包含BIS事件,事件发生等时间间隔。每个BIS事件包含一个或多个子事件。每个子事件使用的物理通道由通道选择算法决定。在所有的BIS子事件最后,设备也可以使用同步物理通道在一个控制子事件里去广播控制信息。

 图 1.5:BIS事件,子事件和控制子事件
对于BR/EDR,链路层之上是L2CAP层,L2CAP提供了基于通道的抽象。L2CAP有一个协议控制通道,这个通道承载了主要的ACL逻辑传输。
除了L2CAP,LE在L2CAP上还有两个额外的协议。分别是SMP和ATT。SMP是安全管理协议,使用一个固定的L2CAP通道去实现设备之间的安全函数;ATT是属性协议,提供了方法去传输少量数据在一个固定的L2CAP通道上。ATT也可以被用在BR/EDR上。
LE无线电提供了测向的方法,通过AoA(到达角)和AoD(出射角)。

1.4 命名

表 1.1:命名

Active Peripheral Broadcast(APB)

活跃的外围广播(APB)

在BR/EDR控制器上传输L2CAP数据或LMP数据到微网里所有激活的设备的逻辑传输。

见Section 3.5.4.4

Ad Hoc Network

无线自组网络

Advertiser

广播者

一个蓝牙低功耗设备,在广播通道上广播事件里可以发送广播包。

Advertising Packet

广播包

包含广播PDU的包。

见[Vol 6]Part B, Section 2.3.1

Angle of Arrival (AoA)

到达角

到达角是指单个天线发射的一个射频波到天线阵列上的相对方向。

Angle of Departure (AoD)

出射角

出射角是指天线阵列发射的一个射频波到另一个天线的相对方向。

BD_ADDR

蓝牙设备地址

Bluetooth Baseband

蓝牙基带

蓝牙基带是蓝牙系统中用于指定或实施媒体接入及物理层程序,以支持在蓝牙设备间进行实时语音、数据信息流交换及建立即时网络的部分。

Bluetooth Clock

蓝牙时钟

ticks every 312.5 µs

BR/EDR

基本速率/增强型数据速率

BR/EDR Controller

基本速率/增强型数据速率控制器

指蓝牙无线电,基带,链路管理层和HCI层。

C-plane

Control plane

Connection event

在相同的物理通道上,中心设备和外围设备之间的一系列数据包的交互。

Coverage area

有可接受的质量和性能,两个蓝牙设备可以交换数据的区域。

Device discovery

设备发现

从可发现设备里检索蓝牙设备地址,时钟的过程

Discoverable Mode

可被发现模式

BR/EDR蓝牙设备发起扫描请求;

LE蓝牙设备发送一个可被发现或可被连接广播事件的广播

HCI

主机控制接口

提供了一套指令接口对基带控制器和链路管理器以获取硬件状态和控制寄存器。这个接口提供了一套方法以获取蓝牙基带能力。

Host

主机

非核心配置之下,HCI之上的层。

Initiator

发起者

对于可连接的广播事件监听广播物理通道的蓝牙低功耗设备。

Isochronous data

同步数据

数据流中的信息与时间有关,先前信息和后续信息之间存在时间关系。

L2CAP

逻辑链路控制与适配协议

LE

蓝牙低功耗

Link key

链路密钥

用来认证链路的密钥。

LMP authentication

LMP认证

用来验证远程设备的身份

LMP pairing

LMP配对

Passkey

密钥

当用安全简单配对时使用的6位数字,用来认证连接

PIN

一个用户友好的数字,用来配对之前认证连接

U-plane

User plane

[Vol 1][Part A 架构]2 核心系统架构

蓝牙文档官网:
https://www.bluetooth.com/specifications/specs/
蓝牙核心规范5.3:
https://download.csdn.net/download/u012906122/74651266

蓝牙核心系统包含一个主机和一个控制器。蓝牙BR/EDR核心系统的最小实现包含四个最低层次(Radio PHY,Link Controller, Baseband Manager和LinkManager)和相关协议(L2CAP,SDP,GAP)。蓝牙LE核心系统的最小实现包含四个最低层次和相关协议(L2CAP,SM,ATT,GATT,GAP)。核心系统架构如图2.1:

 图 2.1:蓝牙核心系统架构
BR/EDR控制器:链路管理器,链路控制器和BR/EDR无线电。
LE控制器:链路管理器,链路控制器和LE无线电。
BR/EDR主机:L2CAP,SDP和GAP。
LE主机:L2CAP,SMP,ATT,GAP和GATT。
蓝牙核心系统协议包含无线电协议(PHY),链路控制(LC)和链路管理协议(LM)或链路层协议(LL),和L2CAP。除此之外,SDP和ATT是蓝牙应用需要的服务层协议。
服务可以分为三种类型。设备控制服务(C-plane)用来修改蓝牙设备的模式和行为;传输控制服务(U-plane)用来创建,修改和释放通道和链路;数据服务用来传输数据。
BR/EDR基带和LE链路层提供了蓝牙中的ARQ协议。支持错误检测和重传。

2.1 核心架构

本节描述图2.1中的功能单元。

2.1.1 主机架构

2.1.1.1 通道管理器Channel manager

通道管理器负责创建,管理和关闭L2CAP通道。L2CAP通道负责服务协议和应用数据流的传输。

2.1.1.2 L2CAP资源管理器L2CAP resource manager

负责到基带的PDU片段的顺序。

2.1.1.3 安全管理协议Security Manager Protocol

是端到端的协议,用来产生加密密钥和身份密钥。负责存储加密和身份密钥,生成随机地址。在配对的加密和认证过程中,SMP直接与控制器交互,以提供存储的密钥。
SMP只在LE系统里,BR/EDR系统的类似功能在控制器的LM模块里。

2.1.1.4 属性协议Attribute Protocol

ATT是在ATT服务器和ATT客户端之间的端到端的协议。ATT客户端和一个ATT服务器在一个专用的固定的L2CAP通道上通信。ATT客户端发送命令,请求和确认信息到ATT服务端。ATT服务端发送响应,通知和提示到客户端。

2.1.1.6 通用属性配置Generic Attribute Profile

GATT表示ATT服务器的功能,ATT客户端可选。负责发现,读,写和提示服务,特点和属性。GATT用在LE系统上。

2.1.1.7 通用访问配置Generic Access Profile

GAP服务负责设备发现,连接模式,安全,认证,关联模型和服务发现等。

2.1.2 BR/EDR/LE控制器架构

2.1.2.1 设备管理器Device manager

设备管理器是基带的功能模块。除了数据传输,它都负责。如询问附近蓝牙设备是否存在,连接蓝牙设备,使蓝牙设备可发现。

2.1.2.2 链路管理器Link manager

设备管理器负责创建,修改和释放逻辑链路,也包括设备间物理链路相关参数的更新。BR/EDR中链路管理器通过LMP与远端链路管理器通信,LE中是通过LL。

2.1.2.3 基带资源管理器Baseband resource manager

基带资源管理器负责所有无线电介质的接入。

2.1.2.4 链路控制器Link Controller

链路控制器负责物理通道,逻辑传输和逻辑链路相关的数据负载的编解码。

2.1.2.5 物理层PHY

物理层负责传输和接收物理通道的信息包。基带和物理层之间的一个控制通路允许基带去控制物理层的时间频率负载。

2.1.2.6 同步适配层Isochronous Adaptation Layer

同步适配层使得上层可以发送或接收同步数据到链路层。上层的数据包的大小和间隔和链路层的数据包的大小和间隔可以不同。

[Vol 1][Part A 架构]3 数据传输架构

 蓝牙文档官网:
https://www.bluetooth.com/specifications/specs/
蓝牙核心规范5.3:
https://download.csdn.net/download/u012906122/74651266

蓝牙数据传输系统分层如下:

 图 3.1:蓝牙通用数据传输架构
由于效率和历史原因,逻辑层被分为逻辑链路层和逻辑传输层。逻辑链路层提供了设备间独立的传输。逻辑传输层描述了逻辑链路之间的相互依赖性。
ACL,SCO和eSCO连接被认为是逻辑传输。

3.1 核心传输成员

蓝牙核心系统有很多传输成员。为了方便显示,下图中左边是较高层次,右边是较低层次。

 图 3.2:蓝牙传输成员
上图中灰色长方形框是核心传输成员。图中左边显示了很多传输类型。例如,视频数据属于固定码率用户数据。
逻辑链路由相关的逻辑传输名和传输的数据类型后缀这两个一起命名(ACL-U,U表示UserData)。C是对于携带LMP或LL信息的控制链路,U是对于携带用户数据的L2CAP链路,S是对于携带非帧同步或异步数据的数据流链路。

3.1.1 帧数据传输

L2CAP层对于异步和同步的用户数据提供了面向帧的传输。
两个蓝牙设备之间的面向连接的L2CAP通道可能因为单播(点对点)数据的传输而创建。
一个无连接的BR/EDR L2CAP通道因为广播数据或单播数据的传输而存在。在微网拓扑下,中心设备总是广播数据的发起者而外围设备是接收者。在无连接L2CAP通道上广播传输是无方向的。在无连接L2CAP通道上单薄数据可能是无方向的或双向的。

3.1.2 非帧数据传输

如果应用不要求使用帧数据传输,可能是因为数据包含流,这时要避免使用L2CAP通道,要直接使用基带逻辑链路。
蓝牙核心系统支持同步和固定码率的应用数据传输,使用SC0-S或eSCO-S逻辑链路。
蓝牙核心系统也支持使用配置广播数据(PBD)的应用数据传输。
LE系统不支持非帧数据传输。

3.2 传输架构实体

 图 3.3:传输架构实体和层次图
BR/EDR物理传输使用BR/EDR通用包结构。LE物理传输使用LE通用包结构。

3.2.1 BR/EDR通用包结构

 图 3.4 BR/EDR包结构
所有的包都有通道接入码。它用来标志一个特定的物理通道的通信,回排除忽略掉其他物理通道的包。
大多数BR/EDR包有包头部。包头部携带LT_ADDR信息,该信息被接收设备接收以确定包是否寻址到设备。

3.2.2 LE通用包结构

LE无线操作基于3个PHY和两个调制方案。表3.1总结了每个LE PHY的属性。每个包使用单个PHY传输。每个PHY使用一个单独的调制方案。两个PHY是无编码的。有两种编码方案:S=8和S=2。

 表 3.1:PHY,调制方案和编码方案的总结
LE未编码PHY的包结构如图 3.5:

 图3.5 LE未编码PHY的包结构
LE编码PHY的包结构如图 3.6:

 图3.6 LE编码PHY的包结构
当使用LE编码PHY时,推荐考虑以下三者的影响:无线电广播时间的能源消耗,占空比和空中共存时间。如LE编码PHY S=8和LE 1M,无线电广播时间和占空比相同情况下,LE编码的包空中共存时间约为LE 1M的8倍。
表3.2显示了不同AdvData包大小下广播事件的广播时间。中间是使用主要广播物理通道的数据。右边是使用次要广播物理通道的数据。

 表3.2 对于不同广播事件的广播时间

3.3 物理通道

蓝牙物理通道通常以物理频率为特征分类。

3.3.1 BR/EDR物理通道

在BR/EDR核心系统中,对端设备使用一个共享的物理通道通信。为了完成这个,他们的接收者需要同时调成同样的物理频率,且需要在一个合适的范围内。
如下定义了几个BR/EDR物理通道。每个有不同的作用。其中,基本微网通道和适配微网通道是与微网有关的,用来已连接设备间的通信。其他BR/EDR物理通道用来发现和连接蓝牙设备。同步扫描物理通道用来获取无连接外围广播物理链路的时间和频率信息。
同一时刻,一个蓝牙设备智能使用一个BR/EDR物理通道。为了支持多个并行操作,设备使用通道间时分复用的方式。
当一个蓝牙设备同步了一个物理通道的时间,频率和接入码时,它被称为已连接到该通道。

3.3.1.1 基本微网通道

3.3.1.1.1 概述

基本微网通道负责已连接设备间正常操作的通信。

3.3.1.1.2 特点

基本微网通道以伪随机序列为特征,该序列在PHY通道中跳跃。对于微网来说,跳跃序列是唯一的,由中心设备的蓝牙设备地址决定。跳跃序列的相位由中心设备的蓝牙时钟决定。所有微网中的蓝牙设备时间和跳跃同步于通道。
通道被分为多个时间槽,每个槽对应一个PHY跳频。连续跳跃意味着不同的PHY跳频。时间槽以微网的蓝牙时钟排序。
在基本微网通道,中心设备控制着通道的接入。中心设备只在偶数时间槽里开始它的传输。中心设备传输的包可能根据包类型占据5倍的时间槽。

3.3.1.1.3 拓扑

一个基本微网通道可以被任意多个蓝牙设备共享,只被微网中中心设备的可用资源限制。只有一个设备是中心设备,所有其他设备是外围设备。所有的通信是在中心设备和外围设备之间。在微网通道中外围设备之间没有直接的通信。

3.3.1.1.4 支持的层

基本微网通道支持多个物理链路,逻辑传输,逻辑链路和L2CAP通道。

3.3.1.2 适配微网通道

3.3.1.2.1 概述

适配微网通道和基本微网通道不同在两点。一:外围设备传输的频率和中心设备的频率相同。二:适配微网通道可能基于少于79个频率。
拓扑和支持的层和基本微网通道几乎相同,只有一点不同:适配微网通道,对于一个中心设备可以通过使用CPB逻辑传输传输数据到无线数量的外围设备。这种情况下,数据只能从中心设备传输到外围设备。

3.3.1.3 查询扫描通道

3.3.1.3.1 概述

查询扫描通道用来发现设备。一个可被发现设备会在它的查询扫描通道监听查询请求,并对请求响应。为了让一个设备发现其他设备,他以伪随机的方式跳跃所有可能的查询扫描通道频率,在每个频率上发送一个查询请求并监听任何响应。

3.3.1.3.2 特点

查询扫描通道遵循一个较慢的跳频模式。
查询扫描通道使用的接入码来自一组由所有蓝牙设备共享的保留的查询接入码。一个接入码用来通用的请求,其他很多接入码保留用来限制的请求。每个设备接入很多不同的查询扫描通道。因为所有这些通道共享一个相同的跳频模式,一个设备可能同时占有超过一个查询扫描通道。
一个使用了它的查询扫描通道之一的设备会在这个通道上保持被动,直到它从其他蓝牙设备的这个通道中接收到了一个查询消息。这是由合适的查询接入码决定的。这个查询扫描设备会遵循查询响应步骤,返回一个响应信息给到查询设备。
为了搜索到其他蓝牙设备,设备会使用查询扫描通道发送查询请求。查询扫描通道有较少的跳频点和较慢的跳频码率。查询设备在每个查询扫描跳频上传输查询请求并监听查询响应。数据传输在一个更快的码率下完成,允许查询设备覆盖所有的查询扫描频率在一个合理的短时间内。

3.3.1.3.3 拓扑

传输过程中形成的拓扑是简单并即时的点对点连接。

3.3.1.4 页扫描通道

3.3.1.4.1 概述

一个可连接的设备(即准备接收连接的设备)使用也扫描通道。一个可被发现设备会在它的页扫描通道监听页请求,并对请求响应。为了让一个设备发现其他设备,他以伪随机的方式跳跃所有可能的页扫描通道频率,在每个频率上发送一个查询请求并监听任何响应。

3.3.1.4.2 特点

页扫描通道使用源自扫描设备的蓝牙设备地址的接入码来确定通道上的通信。相对于基本和适配微网通道页扫描方案使用较低的跳频率。跳频选择算法使用扫描设备的蓝牙设备时钟作为输入。
一个使用它的页扫描通道的设备保持无响应直到它从其他的蓝牙设备中收到了一个页请求。这是由页扫描通道接入码控制的。这两个设备将会遵循页步骤形成一个连接。
如果页扫描设备不知道目标设备的页扫描通道的相位,即不知道目标设备的当前跳频。这时,页扫描设备会在每个页扫描跳频发送页请求,并监听页响应。这将以较快的跳频完成,允许页扫描设备覆盖所有的页扫描频率在一个合理的时间范围内。

3.3.1.4.3 拓扑

传输过程中形成的拓扑是简单并即时的点对点连接。

3.3.1.5 同步扫描通道

3.3.1.5.1 概述

为了接收来自CPB逻辑传输的包,一个设备必须首先获得这些包的时间和频率通道信息。同步扫描通道用来恢复当前微网时钟。

3.3.1.5.2 特点

同步扫描通道使用源自扫描设备的蓝牙设备地址的接入码来同步传输。一旦收到了一个同步包,扫描BR/EDR控制器将会接收CPB逻辑传输的包。

3.3.1.5.3 拓扑

扫描形成的拓扑时暂时的且点对多点的。可以有不限制数量的扫描设备同步接收来自相同同步传输的同步包。

3.3.1.5.4 支持的层

从同步传输设备到扫描设备是一个单向的包传输过程。这一过程中包含暂时的物理链路层。不支持其他的层。

3.3.2 LE物理通道

在LE核心系统中,两个蓝牙设备使用共享的物理通道通信。为此,它们的收发器需要在同一时间调制相同的物理频率,且它们之间需要在一定的频率范围内。
因为物理通道个数的限制,很多蓝牙设备可以相互独立地工作在相同的时空区域,有很大可能两对独立的蓝牙设备会将它们的收发器调制为相同的物理通道,导致冲突。BR/EDR使用一个接入码来标识微网,LE是使用随机生成的接入地址来标识设备间的一个物理通道。
共有4个LE物理通道。每个用来不同的目的。LE微网物理通道用来在已连接的微网中通信,且与一个特别的微网有关。LE广播物理通道用来向LE设备广播包。这些广播包用来发现,连接,或发送用户数据到扫描器或发起设备。周期性物理通道用来以固定时间间隔发送用户数据到扫描设备。LE同步物理通道用来在LE微网里传输同步数据。一个LE设备只能使用这些LE物理通道之一。
LE微网物理通道和LE广播通道的包可以包含一个常量调扩展,用来测向。

3.3.2.1 LE微网物理通道

3.3.2.1.1 概述
用来已连接LE设备间的通信。
3.3.2.1.2 特点
LE微网物理通道有如下特点:接入地址,物理通道的伪随机序列和3个由中心设备提供的额外的参数。
3.3.2.1.3 拓扑
一个LE微网物理通道被两个LE设备共享。
一个LE设备同一时间可能属于一个或多个微网,一个LE设备可能是外围设备或中心设备。
在两个LE设备间只有一个LE微网物理通道存在。
3.3.2.1.4 支持的层
支持L2CAP通道。

3.3.2.2 广播物理通道

3.3.2.2.1 概述
LE广播物理通道用来在两个设备之间建立连接,或在未连接的设备间通信广播信息。
3.3.2.2.2 特点
有两个LE广播物理通道:主要广播物理通道和次要广播物理通道。
主要广播物理通道是一套3个固定物理层通道。可以使用LE 1M或LE Coded PHY。
次要广播物理通道是一套37个固定物理层通道。在次要广播物理通道的广播包不是广播事件的一部分,而是扩展广播事件的一部分。
3.3.2.2.3 拓扑
一个LE广播物理通道可以被任意多个LE设备共享。当共享广播物理通道时任意多个LE设备可以传输广播包。任意多个扫描设备可以监听在广播物理通道上。

3.3.2.3 周期物理通道

3.3.2.3.1 概述
一个LE周期广播物理通道用来在未连接设备间建立周期广播。
3.3.2.3.2 特点
周期物理通道有如下特点:物理通道的伪随机序列和广播者提供的额外参数。

3.3.2.4 LE同步物理通道

3.3.2.4.1 概述
LE同步物理通道用来在已连接和无连接的LE设备间传输同步数据。
3.3.2.4.2 特点
LE同步物理通道有如下特点:物理通道的伪随机序列和一个中心设备或无连接广播者提供的3个额外参数。

3.4 物理链路

一个物理链路表示蓝牙设备之间的一个基带连接。一个物理链路总是与一个物理通路关联。在蓝牙系统中,一个物理链路是一个虚拟概念。

3.4.1 被基本和适配微网物理通道支持的BR/EDR链路

基本微网物理通道支持一个活动的物理链路。适配微网物理通道支持几个物理链路,包含活动的和无连接外围广播的。一个在中心设备和外围设备之间的活动的物理链路是一个点对点的链路。一个无连接外围广播的物理链路是中心设备和外围设备之间的点对多点的链路。

3.4.1.1 活动物理链路

如果一个默认的ACL逻辑传输存在于设备间,我们就说一个中心设备和一个外围设备之间的物理链路是活跃的。
活动物理链路具有在每个方向上的无线电发射功率的相关特性。

3.4.1.3 无连接的外围设备广播物理链路

3.4.2 被扫描物理通道支持的BR/EDR链路

在查询扫描和页面扫描通道的情况下,物理链路所存在的时间相对较短,不能以任何方式进行控制或修改。

3.4.3 被LE物理通道支持的LE链路

LE微网物理通道支持一个LE活跃物理链路。物理链路是中心设备和外围设备之间的点对点链路。中心设备和外围设备处于一个连接内时该链路总是存在。
LE广播物理通道支持一个LE广播物理链路。物理链路是广播者和多个扫描者之间的广播。当广播者在发送广播时该链路总是存在。
LE周期物理通道支持一个LE周期物理链路。 物理链路是广播者和多个扫描者之间的广播。当广播者在发送周期性广播时该链路总是存在。
LE同步物理通道支持一个LE同步物理链路。一个LE同步物理链路可以是中心设备和外围设备之间点对点链路或广播发送者和多个接收者之间的无连接链路。
3.4.3.1 活动物理链路
3.4.3.2 广播物理链路
3.4.3.3 周期物理链路
3.4.3.4 同步物理链路

3.5 逻辑链路和逻辑传输

每个逻辑链路关联一个逻辑传输。逻辑传输有如下特点:流控,认证/重传机制,排序。逻辑传输可以承载不同类型的逻辑链路。表3.4列出了所有的逻辑传输类型,支持的逻辑链路类型,对应的物理链路和物理通道,以及一个简单的描述。

 

 表3.4 逻辑传输类型
每个链路类型的分类遵循以下3个范畴。

3.5.1 投射

第一个范畴是投射。分为单播和多播情况。
单播链路存在两个节点间。数据传输可以在单播链路的任意方向。
多播链路存在一个源设备和多个接收设备之间。数据传输是单向的,只能由源设备传到接收设备。广播链路是无连接的,意味着无需创建这些链路,数据可以在任意时间发送。广播链路不可靠,不能保证数据包被接收。

3.5.2 调度和认证方案

第二个范畴是链路的调度和认证方案,暗示了链路支持的传输类型。这些类型包含同步的,等时的或异步的。没有定义特定的等时链路,虽然默认的ACL链路嫩被配置成这个方式。

3.5.3 数据类别

最后一个范畴是链路携带的数据类别。分为控制数据或用户数据。用户数据分为L2CAP数据,流数据和周期广播数据。
控制链路只是用来传输两个控制器间LMP或链路层信息。
L2CAP链路用来传输L2CAP PDUs。
流链路用来传输用户数据。
周期广播数据以等时间间隔传输。

3.5.4 逻辑传输

3.5.4.1 BR/EDR异步的面向连接的(ACL)

异步的面向连接的(ACL)逻辑传输用来携带LMP和L2CAP控制信号和异步用户数据。每个微网内活动的外围设备和中心设备之间有一个ACL逻辑传输,称为默认ACL。
默认ACL是在中心设备和外围设备之间创建的,当一个设备加入微网(连接到基本微网物理通道)时。默认ACL和一个微网中心设备的逻辑传输地址(LT_ADDR)相关联。当需要时,LT_ADDR用来确定活动物理链路。

3.5.4.2 BR/EDR同步的面向连接的(SCO)

同步的面向连接的逻辑传输是中心设备和外围设备之间对称的,点对点的传输。SCO逻辑通道携带了同步于微网时钟的64kb/s的信息。典型场景是信息会编码为音频流。存在3个不同的SCO配置参数,提供了鲁棒性,延迟和带宽消耗之间的平衡。

3.5.4.3 BR/EDR扩展的同步的面向连接的(eSCO)

扩展的同步的面向连接的逻辑传输是中心设备和外围设备之间对称的或非对称的,点对点的传输。

3.5.4.4 BR/EDR活动外围广播(APB)

活动外围广播逻辑传输用来向微网中连接到物理通道的所有设备传输LMP控制信号和无线L2CAP用户数据。
APB通道不会携带L2CAP控制信号。

3.5.4.6 LE异步连接(LE ACL)

LE异步连接逻辑传输用来携带LL和L2CAP控制信号和异步用户数据。每个微网内活动的外围设备和中心设备之间有一个LE ACL逻辑传输,称为默认LE ACL。

3.5.4.7 LE广播(ADVB)

LE广播逻辑传输用来传输广播控制和用户数据到给定区域的所有扫描设备。LE广播逻辑传输数据只被携带在LE广播链路上。

3.5.4.8 无连接的外围广播(CPB)

无连接的外围广播逻辑传输用来传输配置广播数据到所有已连接到无连接外围广播逻辑传输的设备。

3.5.4.9 LE周期广播(PADVB)

LE周期广播逻辑传输用来传输周期广播控制和用户数据到给定区域的所有扫描设备。

3.5.4.10 连接的等时流(CIS)

CIS是在中心设备和外围设备之间的数据对称的或数据非对称的,点对点的逻辑传输。

3.5.4.11 连接的等时组(CIG)

每个CIS是一个CIG的一部分。

3.5.4.12 广播等时流(BIS)

广播等时流逻辑传输用来传输一个或多个等时数据流。

3.5.4.13 广播等时组(BIG)

每个BIS是一个BIG的一部分。

3.5.5 逻辑链路

3.5.5.1 BR/EDR逻辑链路

3.5.5.1.1 ACL控制逻辑链路(ACL-C和APB-C)
用来携带微网中设备间的BR/EDR LMP信号。
3.5.5.1.2 用户异步/等时逻辑链路(ACL-U and APB-U)
用来携带所有异步和等时的帧用户数据。
3.5.5.1.3 用户同步/扩展同步逻辑链路(SCO-S/eSCO-S)
用来支持无帧格式流中的等时数据传输。
3.5.5.1.4 配置广播数据逻辑链路
用来广播等时无帧数据到多个接收者,用在CPB逻辑传输。

3.5.5.2 LE逻辑链路

3.5.5.2.1 控制逻辑链路(LE-C)
LE-C用来携带微网中两个设备间的LE LL信号。控制链路只负载到默认的LE ACL逻辑传输上。
3.5.5.2.2 用户异步逻辑链路(LE-U)
LE-U用来负载所有的异步帧格式用户数据。
3.5.5.2.3 广播控制逻辑链路(ADVB-C)
ADVB-C用来携带未连接设备间的LE LL信号。
3.5.5.2.4 广播用户数据逻辑链路(ADVB-U)
ADVB-U用来携带LE广播和LE周期广播用户数据。
3.5.5.2.5 低功耗流(LE-S)
LE-S用来携带非帧格式等时数据包。
3.5.5.2.6 低功耗帧(LE-F)
LE-F用来携带帧格式等时数据包。
3.5.5.2.7 低功耗广播控制(LEB-C)
LEB-C用于BIS逻辑传输以携带控制信息。

3.6 L2CAP通道

L2CAP提供了一个多路复用角色,允许多个不同的应用共享ACL-U,APB-U或LE-U逻辑链路。使用L2CAP接口的应用和服务协议使用面向通道的接口建立连接。

3.8 功率控制

功率控制提供了一种机制,请求远端设备调整基于本地信号质量信息调整他的发送功率等级。这种机制在BR/EDR活动物理链路和LE活动物理链路上支持。

3.8.1 BR/EDR功率控制

两个电源控制机制可用(legacy and enhanced power control)。

3.8.2 LE功率控制

在LE中,设备可以请求远程设备在给定的PHY上对远程设备的功率电平进行指定的更改。这允许更快地过渡到所需的功率水平。

[Vol 1][Part A 架构]4 通信拓扑和操作

蓝牙文档官网:
https://www.bluetooth.com/specifications/specs/
蓝牙核心规范5.3:
https://download.csdn.net/download/u012906122/74651266

4.1 微网拓扑
4.1.1 BR/EDR拓扑

任意时刻一个使用BR/EDR控制器创建的链路,它总是在微网的上下文下。每条链路包含两个设备,分别是中心设备和外围设备。一个微网包含唯一一个中心设备和多个链接到它的外围设备。
通过同步相同的时钟和跳频,已连接的BR/EDR设备在相同的物理通道通信。时钟和微网中心设备的蓝牙时钟相同,跳频源于中心设备的时钟和蓝牙设备地址。
很多相对独立的微网可能存在在相邻区域。每个微网有一个不同的物理通道。
一个蓝牙设备可能同时参与两个或多个微网。采用了时分复用多路技术。一个蓝牙设备不可能作为超过一个微网的中心设备。一个蓝牙设备可能作为很多相对独立的微网的外围设备。

 图 4.1:蓝牙BR/EDR拓扑例子
微网A:设备A是中心设备,设备B,C,D,E是外围设备。
微网F:设备F是中心设备,设备E,G,H是外围设备。
微网D:设备D是中心设备,设备J是外围设备。
微网M:设备M是中心设备,设备E,多个设备N是外围设备。
微网A中有两个物理通道。设备B,C使用基本微网物理通道,因为它们不支持自适应跳频。设备D,E支持自适应跳频,它们使用适配微网物理通道。
微网M使用一个在适配微网物理通路上的无连接外围广播物理链路去发送配置广播数据,从发射器M到很多接收器E和N。
设备K正在它的查询扫描物理通道上监听请求,等待来自其他设备一个查询请求包。
设备L正在它的同步扫描物理通道上监听请求,等待来自其他设备一个同步数据。

4.1.2 LE拓扑

 图 4.2:蓝牙LE拓扑例子
设备A是两个微网中的中心设备,设备B和C分别作为外围设备。不像BR/EDR的外围设备,LE外围设备不共享一个单独的微网或一个共同的物理通道。每个外围设备和中心设备在一个分离的物理通道上通信。
设备F作为中心设备,设备G作为外围设备。
设备K作为中心设备,设备L作为外围设备。设备K作为外围设备,设备M作为中心设备。
设备O作为外围设备,设备M和L作为中心设备。
在图中,实现箭头表示从中心设备到外围设备;虚线箭头,表示使用可连接的广播事件的从发起者到广播者的连接开始。发送广播的设备用五角星表示。
图中有5个不同组合:
1 设备D是一个广播者,设备A是一个发起者。
2 设备E是一个扫描者,设备C是一个广播者。
3 设备H一个广播者,设备I,J是扫描者。
4 设备K是广播者,设备N是发起者。
5 设备R是广播者,设备O是发起者。

4.2 操作步骤和模式

一个蓝牙设备的典型操作模式是被连接到其他蓝牙设备,并于这些蓝牙设备交换数据。

4.2.1 BR/EDR步骤

4.2.1.1 查询(发现)步骤

蓝牙设备用查询步骤来发现附近的设备,或被发现。
发现步骤是非对称的。一个尝试发现其他附近的设备的蓝牙设备被称作查询设备,并发送查询请求。查询步骤使用一个特殊的物理通道用来查询请求和响应。

4.2.1.2 寻呼(连接)步骤

可连接的设备使用一个特殊的物理通道来监听来自寻呼(连接)设备的连接请求数据包。此物理通道具有特定于可连接设备的属性,因此只有了解可连接设备的寻呼设备才能在此通道上进行通信。

4.2.1.3 连接模式

在BR/EDR控制器上成功连接后,两个设备都连接到一个微网物理通道,设备之间有一个物理链接,还有默认的ACL-C、ACL-U、ASBC和ASB-U逻辑链接。其中两个链路(ACL-C和ASB-C)传输LMP控制协议。
当处于连接模式时,可以创建和释放额外的逻辑链接,并更改物理和逻辑链接的模式,同时保持连接到微网物理通道。该设备也可以执行查询、寻呼或扫描程序,或连接到其他微网,而不需要断开与原始微网的物理通道的连接。这些操作使用链路管理器完成,该管理器与远程蓝牙设备交换链路管理器协议消息。

4.2.1.4 保持模式

保持模式不是一般的设备模式,适用于物理链路上的未预留时间插槽。

4.2.1.5 嗅探模式

嗅探模式不是一般的设备模式,但适用于默认的ACL逻辑传输。

4.2.1.7 角色转换步骤

角色转换步骤是一个方法,用来交换微网中两个设备的角色。步骤包含了从原来中心设备的物理通道转移到新中心设备的物理通道。在从一个物理通道到另一个物理通道的转换过程中,在BR/EDR控制器上物理链路和逻辑传输的层级被删除并重建,APB例外。角色转换后,原来微网物理通道可能消失或可能继续存在如果原来中心设备还有其他的外围设备的情况下。

4.2.1.8 增强数据速率

增强数据速率是一种扩展蓝牙数据包的容量和类型的方法,目的是增加最大吞吐量,为多个连接提供更好的支持,并降低功耗,而体系结构的其余部分保持不变。

4.2.1.9 无连接外围广播模式

无连接外围广播模式允许一个微网中心设备使用BR/EDR适配微网物理通道上向任何已连接的外围设备发送配置广播数据。

4.2.2 LE步骤

4.2.2.1 设备过滤步骤

设备过滤步骤用来让控制器可以减少通信响应的设备个数。可以节省能耗。
一个广播或扫描设备可以使用设备过滤来限制接收广播包,扫描包或连接请求的设备。在LE中,从扫描设备接收到的一些广播包要求扫描设备向广播设备发送请求。

4.2.2.2 广播步骤

单向广播发生在广播设备和监听设备之间,是无连接的。广播步骤用来和附近的设备建立连接或用来提供周期性的用户数据广播给正在监广播物理通道上监听的扫描设备。

4.2.2.3 扫描步骤

一个扫描设备使用扫描步骤来从广播设备里监听单向用户数据广播,使用广播物理通道。一个扫描设备可以从一个广播设备请求额外的用户数据通过发出一个扫描请求。响应这些请求并携带额外用户数据的广播设备在广播物理通道上做出响应。

4.2.2.4 发现步骤

蓝牙设备使用广播和扫描步骤来发现附近的设备,或在给定区域被设备发现。
发现步骤是非对称的。一个尝试发现附近设备的蓝牙设备被称为"发现设备",它在监听广播可扫描的广播事件。可以被发现的蓝牙设备被称为"可被发现设备",它在广播物理通道上发送可扫描的广播事件。

4.2.2.5 连接步骤

蓝牙连接是对称的,要求一个蓝牙设备处理广播步骤,另一个蓝牙设备处理扫描步骤。广播程序是可以是有针对性的,这样只有一个设备会对广播做出反应。

4.2.2.6 连接模式

当处于连接模式时,可以在保持连接到微网物理通道的同时改变物理和逻辑链路的属性,例如改变自适应跳频序列或改变数据包的最大长度。

4.2.2.7 周期广播步骤

广播设备使用周期广播程序对该区域的设备进行单向周期性广播。

4.2.2.8 周期广播同步步骤

周期性广播同步的过程包括两部分:获取周期广播同步信息,然后监听周期广播。

4.2.2.9 周期广播同步模式

在一个成功的周期性广播同步过程后,设备彼此物理同步。这意味着有一个周期性的物理通道,它们都被同步,设备之间有一个周期性的物理链接,并且有一个ADVB-U和一个ADVB-C逻辑链接。

[Vol 1][Part A 架构]5 安全概述

 蓝牙文档官网:
https://www.bluetooth.com/specifications/specs/
蓝牙核心规范5.3:
https://download.csdn.net/download/u012906122/74651266

5.1 安全架构

蓝牙安全模型包含5个不同的安全特征:配对,绑定,设备认证,加密和信息完整性。
配对:创建一个或多个共享密钥的过程
绑定:存储在配对过程中创建的密钥用于后续连接,目的是形成相互信任的设备对
设备认证:验证两个设备有相同的密钥
加密:信息保密
信息完整性:防止消息伪造
BR/EDR老版本配对使用基于SAFER+的E21或E22算法。设备认证基于E1算法。加密使用E0算法。没有关于加密消息完整性的规定。
安全简单配对使用FIPS认可的算法(SHA-256, HMAC-SHA-256和P-192)和四个关联的模型:正常工作,数值比较,密码项和带外。设备认证和加密于BR/EDR老版本配对一致。具体参考Section5.2。
对于BR/EDR的安全密钥层级如图5.1。使用安全连接和老版本安全算法的密钥层级不同。(prior to之前的,老版本的)

图 5.1:BR/EDR密钥层级
对于LE的安全密钥层级如图5.2。使用LE安全连接和LE老版本配对算法的密钥层级不同。

 图 5.2:LE密钥层级

5.2 BR/EDR安全简单配对

安全简单配对的主要目的是简化配对流程,次要目的是保持和提高蓝牙无线技术的安全性。

5.2.1 安全目标

安全简单配对有两个安全目标:防止被动窃听和防止中间人攻击。

5.2.2 被动窃听保护

必须使用强链接密钥和强加密算法来为用户提供被动窃听保护。

5.2.3 中间人保护

当用户想要连接两个设备,但它们不是直接连接,而是不知情地连接到第三个(攻击者)设备,就会发生中间人(MITM)攻击。

5.2.4 关联模型

安全简单配对使用4个关联模型:正常工作,数值比较,密码项和带外。

 图 5.3:安全简单配对关联模型

5.3 仅安全连接模式

当设备要求在BR/EDR物理传输上只使用FIPS批准的算法时,它应该在BR/EDR物理传输上进入“仅安全连接模式”。仅限安全连接的模式有时被称为“FIPS模式”。

5.4 LE安全
5.4.1 关联模型

蓝牙LE使用四种关联模型:正常工作,数字比较,带外和密码项。LE包版本配对没有数字比较。

5.4.2 密钥生成

蓝牙LE中的密钥生成是由LE设备的主机完成的,各个主机相互独立。
注意:BR/EDR中的密钥生成是在控制器。
蓝牙LE使用多个密钥,每个密钥用于特定的用途,如下:
1 数据的保密性和设备认证
2 未加密数据的身份验证
3 设备标识

5.4.3 加密

蓝牙LE中的加密使用的是AES-CCM加密技术。与BR/EDR一样,在LE中,是在控制器中执行加密。

5.4.4 签名数据

蓝牙LE支持在两个具有受信任关系的设备之间通过未加密的ATT传输器发送认证数据的能力。这是通过使用连接签名解析密钥(CSRK)签名数据来完成的。

5.4.5 隐私功能

蓝牙LE支持一种通过频繁更改蓝牙设备地址来降低在一段时间内跟踪LE设备的能力的功能。
图5.4显示了控制器解析列表和控制器过滤接收列表的逻辑表示。

图5.4 控制器解析列表和控制器过滤接收列表的逻辑表示

[Vol 1][Part A 架构]6 蓝牙应用架构

蓝牙文档官网:
https://www.bluetooth.com/specifications/specs/
蓝牙核心规范5.3:
https://download.csdn.net/download/u012906122/74651266

6.1 蓝牙规范

蓝牙系统中的应用互操作是按照蓝牙规范完成的。蓝牙规范定义了要求的函数和蓝牙系统中从PHY层到L2CAP层每层的特点。该规范定义了层与层之间的交互和设备之间特定层的端到端的交互。

 图6.1:蓝牙规范
另外,规范还定义了应用表现和数据格式。当两个设备符合蓝牙协议的所有要求时,将启用应用程序的互操作性。所有规范描述了设备连接需要的服务发现请求,找出可用的应用服务和连接信息以完成应用级别的连接。

6.2 通用访问规范

蓝牙系统定义了一个所有蓝牙设备需要实现的基本规范。这个规范称为通用访问规范。例如,对于BR/EDR,它定义了无线电,基带,链路管理,L2CAP和服务发现规范;对于LE,它定义了物理层,链路层,L2CAP,安全管理,属性规范和通道访问规范。
在BR/EDR中,GAP定义了一个功能。此功能包括设备如何相互发现、建立连接并描述用于认证的安全关联模型。
在LE中,GAP定义了四个特定的角色:广播器、观察器、外围设备和中心设备。
广播器对发射器的应用做了优化。支持广播器的设备使用广播发送广播数据。广播器不支持连接。
观察器对接收器的应用做了优化。支持观察器的设备是广播器的互补设备,负责接收广播事件中的广播数据。观察器不支持连接。
外围设备对支持单连接的设备做了优化,相比较中心设备来说复杂度较低。
中心设备支持多连接,是与外围设备的所有连接的的启动器。

6.3 规范的层次

因为所有蓝牙设备被要求实现GAP规范,任何其他的规范就会成为GAP的超集。描述应用交互的一个顶层规范被称为一个应用规范。

 图 6.2:规范层级
包含GAP和任何其他通用规范的应用规范描述了一套蓝牙系统的通用需求。

6.4 通用属性架构
6.4.1 属性规范

属性规范(ATT)的目的是允许设备读写服务器上的小的数据值。每个存储的值,通常只有几个八位制,被称为属性。此规范允许每个属性使用UUID来标识数据类型。
属性规范信息在L2CAP通道被发送,该通道被称为ATT承载者。
属性规范定义了两个角色:客户端和服务器。一个设备在同一时刻可以是ATT客户端和ATT服务器。单个ATT承载上的属性协议消息允许每个方向上的单个事务。当收到对消息的响应时,可以启动下一个事务。当创建多个ATT承载时,每个ATT承载都有一个单独的事务模型,因此可以同时完成多个ATT事务,每个承载一个。
ATT服务器存储属性并接收来自ATT客户端的属性规范请求,命令和确认信息。当被更高层级配置时,ATT服务器向请求发送响应;当特定事件发生在ATT服务器上时,ATT服务器向ATT客户端异步发送通知。

6.4.2 通用属性规范

通用属性协议(GATT)构建在属性协议(ATT)之上,并为由属性协议传输和存储的数据建立公共操作和框架。GATT定义了两个角色:服务器和客户端。GATT客户端也是一个ATT客户端,GATT服务器也是一个ATT服务器。GATT和ATT并不指定传输通道,可用于BR/EDR和LE。然而,GATT和ATT必须在LE中实现,因为它用于发现服务。
GATT还指定了GATT服务器上包含的数据的格式。

6.5 基于GATT规范的层次

GATT规范定义了用于交换规范数据的结构体。
层次的顶层是规范。一个规范由一个或多个服务组成,用来完成一个使用场景。一个服务由多个特征组成。每个特征包含一个值,这个值可能包含可选信息。服务和特征包含了规范数据,存储在服务器的属性里。

图6.3:基于GATT的规范层次

6.5.1 服务

服务是用来完成设备的特定功能或特征的数据和相关行为的集合。一个服务可以包括其他主要或辅助服务,和/或构成该服务的一组特征。
服务有两种类型:主要服务和辅助服务。

6.5.2 包含的服务

当一个服务包含另一个服务时,整个包含的服务将成为新服务的一部分,包括任何嵌套包含的服务和特征。所包含的服务仍然作为一个独立的服务存在。

6.5.3 特征

一个特征是使用在服务中一个值,值包含了属性和配置信息。一个特征定义包含了一个特征声明,特征属性和一个值。

[Vol 1][Part A 架构]7 共存与搭配

 蓝牙文档官网:
https://www.bluetooth.com/specifications/specs/
蓝牙核心规范5.3:
https://download.csdn.net/download/u012906122/74651266

蓝牙设备运行在2.4GHz频带(ISM频带)。很多其他技术也使用ISM频带,如无线网,无线电话和微波炉。ISM频带也很接近其他频带,所以蓝牙设备可能是其他技术的干扰源或受害者。
确定无线电之间预期的隔离度对于选择一个合适的共存机制是很重要的。有着充足的隔离度,频分双工技术是最有效的。对于不充足的隔离度,时分双工技术需要被使用。很多场景下,要求采用频分双工和时分双工结合的方案。
本规范支持各种特性,有助于减轻对其他设备的干扰,并尽量减少来自其他设备的干扰。一般而言,解决方案的类型可分为以下类别:

类型

描述

频分

通过过滤器和/或隔离同时使用多个无线电

时分

一个无线电可以通过调度或优先级在同一时刻发送或接收

时间矫正

混合无线电的活动在时域中对齐,以通过避免相互冲突来优化性能。例如,多个无线电可以同时发射,多个无线电可以同时接收,但不可能同时发射和接收。

混合频率和

时间分割

依赖无线电,滤波器和隔离使用的相对频率,对频分,时间矫正和时分技术的使用

表 7.1:干扰缓解类型
 

7.1 支持共存与搭配的核心特点

规范中说明了减少干扰的特点。

特点

版本引入

描述

自适应跳频

1.2

允许设备减少微网中的通道个数,目的是避免干扰

HCI设置主机通道分类

1.2

允许主机通知被其他技术占用的通道的蓝牙控制器

增强SCO(eSCO)

1.2

增加重传到SCO,目的是对抗干扰

MWS共存信号

CSA3

提供了无线电之间一个标准的接口,用于通信需要的信息来使能一些共存的技术

微网时钟调整

4.1

允许一个蓝牙设备通过一个外部技术(如长期演进技术(LTE))来对齐微网时钟

广义隔行扫描

4.1

当某些时间槽对扫描周期性不可用时,提供了一种机制来提高页扫描和查询扫描的成功率

时间槽可用性掩码

5.0

提供一种机制对于两个蓝牙设备,通知彼此他们时间槽的可用性

表 7.2:干扰减少特点

7.2 自适应跳频

自适应跳频(AFH)允许蓝牙设备改善其性能抗干扰性,避免在2.4 GHz ISM频段对其他设备造成干扰。基本原理是蓝牙通道分为使用和未使用两类,其中使用的通道是跳变序列的一部分,未使用的通道被伪随机通道代替。这种分类机制允许蓝牙设备使用可用的79个通道或更少的通道。蓝牙规范所允许的最小通道数为20个。
该规范定义了确保互操作性所需的AFH的各个方面,包括跳变内核、基带行为、链路管理协议(LMP)命令、主机控制器接口(HCI)命令和事件。蓝牙规范还定义了一种机制,允许一个外围设备向中心设备报告通道分类信息。

7.3 蓝牙设备和无线局域网设备的共存

蓝牙和无线局域网之间的共存传统上是自适应跳频(AFH)和专有技术的结合,以优化两种协议之间的通信。

7.4 移动无线标准(MWS)共存

蓝牙无线电和在邻近2.4GHz ISM频段内工作的MWS无线电之间可能存在显著干扰。当另一个无线电发送时,这种干扰能阻止当前无线电的正常接收。
图7.1说明了这些机制的一般体系结构模型。假定使用有限隔离度的独立天线。

 图 7.1:移动无线标准共存架构
考虑两种解决方案。第一个解决方案,蓝牙传输端(TX)和接收端(RX)都受到MWS活动的限制。这种类型的解决方案称为Pure TDM(时分复用)方案;第二个解决方案,只有蓝牙接收会受到MWS传输的影响,而蓝牙传输不会影响MWS的操作。这种类型的解决方案称为混合模式。
MWS共存信号机制([Vol 7] Part A)和多个传输层([Vol 7] Part B和[Vol 7] Part C)促成了这些解决方案。
一个MWS无线电通过一个网络基站来同步时间和频率。基站决定哪个MWS无线电将发送或接收以及何时发送。MWS无线电不会控制何时发送或接收。MRT中当蓝牙传输与MWS接收发生干扰时,如果要使得蓝牙无线电传输正常,MWS无线电会被设置为不可用。图7.2显示了蓝牙活动如何干扰每个MWS接收,相似地,MWS传输如何影响蓝牙接收。图7.2中的例子显示MRT中蓝牙设备充当微网中心设备的角色。C表示单个时间槽中心设备传输,P表示单个时间槽外围设备传输。冲突的地方用红色阴影块表示。

 图 7.2:被蓝牙传输干扰的MWS接收
即使具有最佳的相对时间关系(当蓝牙时间槽边界与MWS帧边界对齐时),MRT中的蓝牙无线电由于与MWS无线电的时间多路复用,传输和接收机会都会减少。蓝牙无线电每一台MWS帧只有一个传输/接收机会,如图7.3所示。

 图 7.3:蓝牙无线电减少了传输/接收机会
因此,四分之三(对于5ms的MWS帧)或八分之七(对于10ms的MWS帧)蓝牙的时间槽会被MWS影响。此外,由于蓝牙查询和寻呼一次使用16个通道的序列,当MRT中的蓝牙无线电执行查询或寻呼时,通道序列将每5ms重复一次,导致相同的通道被错位的MWS活动反复影响,见图7.4。

 图 7.4:蓝牙无线电可能会出现的查询/寻呼失败
由于MWS传输干扰了MRT中的蓝牙接收,因此在执行扫描的MRT中,多达50%的来自远程查询/页面设备的传输id将不会被蓝牙无线电接收,如图7.5所示。

 图 7.5:蓝牙无线电可能会出现的查询扫描/页面扫描失败

7.5 使用一个外部时间源同步蓝牙

这一部分提供了一个例子来阐述蓝牙时钟与MWS系统的同步,目的是使蓝牙时间槽与MWS系统的下行和上行时间对齐。这个例子中的外部帧时LTE TDD帧配置#1和特殊子帧配置#1。例子中显示的是10ms的时间跨度。
[Vol 7]PartA将MWS帧的时间定义为共存信号中FRAME_SYNC信号与帧的固定偏移。在图7.6中显示为FS。FS可以被主机定义为任何MWS帧中特定的偏移。对于一个微网中心设备,对于FS最有效的位置是上行和下行的边界。这是因为中心设备需要在上行期间的中心时间槽发送数据,在下行期间的外围时间槽接收数据。将FS放在边缘允许中心设备较容易地对齐蓝牙时钟。
HCI命令HCI_Set_External_Frame_Configuration([Vol 4]Part E, Section 7.3.81)用于描述MWS帧定时。这个知识,与FS一起,允许蓝牙控制器将蓝牙时钟与MWS帧定时对齐,以尽量减少相互干扰。这一点如图7.6所示。红色椭圆显示MWS和蓝牙同时传输和接收的时间槽对,因此不会相互干扰。MWS帧结构包括下行链路部分(D)、上行链路部分(U)和一个特殊部分(S),S包括一个下行和上行部分,这两部分由GP分隔。

 图 7.6:MWS帧定时与蓝牙时钟的对齐

7.6 微网时钟调整

正确对齐MWS和蓝牙时钟极大地提高了这两种技术的吞吐量。主服务器有两种机制来减轻错位。
粗时钟调整可用于使用LMP_CLK_ADJPDU来调整蓝牙CLK。
另一个选项是使用时钟拖拽。

7.7 插槽可用性掩码

插槽可用性掩码(SAM)允许两个蓝牙设备互相指示可供传输和接收使用的时间槽。

[Vol 1][Part A 架构]8 使用蓝牙低功耗测向

 蓝牙文档官网:
https://www.bluetooth.com/specifications/specs/
蓝牙核心规范5.3:
https://download.csdn.net/download/u012906122/74651266

LE设备可以通过发送测向使能包来使其方向可用。利用来自多个发射机的方向信息和给出其位置的配置级信息,LE无线电可以计算出自己的位置。
此功能在LE未编码PHY上支持,但在LE编码PHY上不支持。

8.1 到达角(AOA)方法

一个LE设备可以通过使用一个单独的天线发送测向使能包来使得其方向可用。
对端设备,包含了一个RF开关和天线阵列,开关触角用于接收部分包并捕获IQ采样。IQ参数用来计算接收到的无线信号的相位差,无线信号由天线阵列的不同天线接收,用来计算到达角(AOA)。

图 8.1:到达角方法
假定一个接收设备的天线阵列有俩个个天线,间距为d。发送设备使用一个单天线发送信号。如图8.2所示,可以对天线1和天线2分别绘制一条垂直于无线电信号的垂直线。在到达两个天线的信号中的相位差ψ为:
ψ = (2πd cos(θ))/λ
其中,λ为信号的波长,θ为到达的角度,所以:
θ = arccos((ψλ)/(2πd))

图8.2:测量到达角

8.2 偏离角(AOD)方法

一个发送设备可以通过改变天线发送测向使能包来测出其偏离角,该设备包含一个RF开关和天线阵列。
对端设备使用一个单独的天线接收这些包,并在这些包中捕获IQ采样。方向的确定是基于不同的无线电信号传播延迟,无线电信号是在发送天线阵列与接收单个天线之间的。

图 8.3:分离角方法
假定一个发送设备的天线阵列包含两个天线,间距为d。接收设备使用一个单独的天线接收信号。则天线1到达接收器的信号与天线2到达接收器的信号之间的相位差为:
ψ = (2πd cos(θ))/λ
其中,λ为信号的波长,θ为到达的角度,所以:
θ = arccos((ψλ)/(2πd))

 图 8.4:偏离角方法

[Vol 1][Part B 缩略语]

蓝牙文档官网:
https://www.bluetooth.com/specifications/specs/
蓝牙核心规范5.3:
https://download.csdn.net/download/u012906122/74651266

缩略语列表:

缩略语

全称

解释

A

ACL

Asynchronous Connection-ori

ented [logical transport]

Reliable or time-bounded, bi-directional, point-to-point

ACL-C

ACL Control [logical link] (LMP)

ACL-U

ACL User [logical link] (L2CAP)

AD

Advertising Data

ADVB

LE Advertising Broadcast

ADVB-C

LE Advertising Broadcast Control

(Logical Link)

ADVB-U

LE Advertising Broadcast User

Data (Logical Link)

AES

Advanced Encryption Standard

AES-CCM

Advanced Encryption Standard -

Counter with CBC MAC

AFH

Adaptive Frequency Hopping

AoA

Angle of Arrival

AoD

Angle of Departure

APB

Active Peripheral Broadcast [logi

cal transport]

Unreliable, uni-directional broadcast to any devices synchronized with the physical channel

APB-C

APB Control [logical link] (LMP)

APB-U

APB User [logical link] (L2CAP)

ARQ

Automatic Repeat Request

ATT

Attribute protocol

B

BD_ADDR

Bluetooth Device Address

BIG

Broadcast Isochronous Group

A group of one or more time related Broadcast Isochronous 

Streams

BIS

Broadcast Isochronous Stream

Connectionless isochronous logical transport

C

CAC

Channel Access Code

CIG

Connected Isochronous Group

A group of one or more time related Connected Isochronous

Streams

CIS

Connected Isochronous Stream

Point-to-point isochronous logical transport

CLK

Central's Clock

CPB

Connectionless Peripheral Broad

cast

The logical transport enabled by the Connectionless Peripheral

Broadcast feature

CRC

Cyclic Redundancy Check

D

DAC

Device Access Code

DFS

Dynamic Frequency Selection

DPSK

Differential Phase Shift Keying

Generic description of Enhanced Data Rate modulation

DTM

Direct Test Mode

DUT

Device Under Test

E

EDR

Enhanced Data Rate

EIR

Extended Inquiry Response

Host supplied information transmitted in the Inquiry Response substate

SCO

Synchronous logical link or

Extended Synchronous logical link

eSCO

Extended Synchronous Connec

tion-Oriented [logical transport]

Bi-directional, symmetric or asymmetric, point-to-point, general regular data, limited retransmission

eSCO-S

Stream eSCO (unframed)

Used to support isochronous data delivered in a stream without framing

F

FDMA

Frequency Division Multiple Access

FEC

Forward Error Correction code

FH

Frequency Hopping

FHS

Frequency Hop Synchronization

FIPS

Federal Information Processing

Standards

FM

Frequency Modulation

Modulation type

G

GAP

Generic Access profile

GATT

Generic Attribute profile

H

HCI

Host Controller interface

HID

Human Interface Device

I

IAC

Inquiry Access Code

IQ

In-phase and Quadrature

ISM

Industrial, Scientific, Medical

ISO

International Organization for Stan

dardization

ISOAL

Isochronous Adaptation Layer

The layer that converts data units from the upper layer to data units in the Link Layer and vice versa

L

L2CAP

Logical Link Control and

Adaptation protocol

LC

Link Controller

Link Controller (or Baseband) part of the Bluetooth protocol stack. Low level Baseband protocol handler

LC

Link Control [logical link]

The control logical links LC and ACL-C are used at the link control level and link manager level, respectively.

LCP

Link Control protocol

LE-S

Low Energy Stream

A logical link for transferring unframed isochronous data pack

ets using a Connected or Broadcast Isochronous Stream logical

transport

LE-U

LE User [logical link]

LL

Link Layer

LLCP

Link Layer Control protocol

LM

Link Manager

LMP

Link Manager protocol

For LM peer to peer communication

LTK

Long-Term Key

P

PADVB

LE Periodic Advertising Broadcast

(Logical Transport)

PCM

Pulse Coded Modulation

PHY

Physical Layer

PSK

Phase Shift Keying

Class of modulation types

Q

QoS

Quality of Service

R

RF

Radio Frequency

RX

Receive

S

SAP

Service Access Points

SCO

Synchronous Connection-Ori

ented [logical transport]

Bi-directional, symmetric, point-to-point, AV channels

SCO-S

Stream SCO (unframed)

Used to support isochronous data delivered in a stream without framing

SD

Service Discovery

SDP

Service Discovery protocol

SM

Security Manager

SMP

Security Manager Protocol

SSP

Secure Simple Pairing

Simplifies the pairing process and improves Bluetooth security

T

TDD

Time-Division Duplex

TDMA

Time Division Multiple Access

TX

Transmit

U

UART

Universal Asynchronous receiver

Transmitter

UUID

Universal Unique Identifier

W

WAP

Wireless Application Protocol

[Vol 1][Part F 控制器错误码]

蓝牙文档官网:
https://www.bluetooth.com/specifications/specs/
蓝牙核心规范5.3:
https://download.csdn.net/download/u012906122/74651266

错误码列表:
0x00表示成功。错误码的范围是0x01到0xFF。

PDU:协议数据单元。

错误码

名字

中文名字

详细描述

0x00

Success

成功

0x01

Unknown HCI Command

未知的HCI命令

控制器不理解主机发送的HCI命令。

0x02

Unknown Connection Identifier

未知的连接标识符

一个从主机发送的命令应当标识一个连接,但是这个连接不存在或不会标识正确的连接类型。

0x03

Hardware Failure

硬件错误

主机发生硬件错误时,表示控制器发生了某些错误,这些错误不能够用任何错误码表示。

0x04

Page Timeout

寻呼超时

因为寻呼超时配置参数的寻呼超时。只在HCI_Remote_Name_Request和HCI_Create_Connection命令中会出现该错误。

0x05

Authentication Failure

认证错误

配对或认证过程中由于不正确的结果导致配对或认证失败。可能由于错误的PIN码或链路密钥。

0x06

PIN or Key Missing

PIN码或密钥缺失

PIN码缺失导致配对失败,密钥缺失导致认证失败。

0x07

Memory Capacity Exceeded

超出内存容量

主机发生超出内存容量错误时,表示控制器用完了内存。

0x08

Connection Timeout

连接超时

0x09

Connection Limit Exceeded

超出连接限制

控制器已经达到了它所支持的连接个数。

0x0A

Synchronous Connection Limit To A Device Exceeded

超出了设备的同步连接限制

控制器已经到达了同步连接个数的限制。

0x0B

Connection Already Exists

连接已经存在

0x0C

Command Disallowed

连接不允许

控制器当前处于一个不能处理命令的状态。

0x0D

Connection Rejected due to Limited Resources

由于资源限制拒绝连接

0x0E

Connection Rejected Due To Security Reasons

由于安全原因拒绝连接

0x0F

Connection Rejected due to Unacceptable BD_ADDR

由于不可接受的蓝牙设备地址拒绝连接

因为设备不接受蓝牙设备地址导致连接被拒绝。这可能是因为设备只接受特定的蓝牙设备地址。

0x10

Connection Accept Timeout Exceeded

超过了连接接受超时

0x11

Unsupported Feature or Parameter Value

不支持的特征或参数值

0x12

Invalid HCI Command Parameters

无效的HCI命令参数

0x13

Remote User Terminated Connection

远端用户终止连接

表示远端设备或者终止连接或者停止广播包。

0x14

Remote Device Terminated Connection due to Low Resources

由于低资源远端设备终止连接

0x15

Remote Device Terminated Connection due to Power Off

由于关机远端设备终止连接

0x16

Connection Terminated By Local Host

被本地主机中断的连接

本地设备终止连接,终止广播同步或终止广播包。

0x17

Repeated Attempts

重复尝试

因为距离上一次认证或配对失败的时间太短,控制器不被再允许进行认证或配对。

0x18

Pairing Not Allowed

不允许配对

例如,只有用户输入了允许配对后的一段时间内才允许配对。

0x19

Unknown LMP PDU

未知的LMP操作码

0x1A

Unsupported Remote Feature

不支持的远端特点

0x1B

SCO Offset Rejected

SCO偏移被拒绝

LMP_SCO_LINK_REQ PDU

0x1C

SCO Interval Rejected

SCO间隔被拒绝

LMP_SCO_LINK_REQ PDU

0x1D

SCO Air Mode Rejected

SCO空气模式被拒绝

LMP_SCO_LINK_REQ PDU

0x1E

Invalid LMP Parameters / Invalid LL Parameters

无效的LMP参数/无效的LL参数

0x1F

Unspecified Error

未指明的错误

错误码

名字

中文名字

详细描述

0x20

Unsupported LMP Parameter Value / Unsupported LL Parameter Value

不支持的LMP参数/不支持的LL参数

0x21

Role Change Not Allowed

不允许角色更改

一个控制器不会允许角色此时改变。

0x22

LMP Response Timeout / LL Response Timeout

LMP响应超时/LL响应超时

0x23

LMP Error Transaction Collision / LL Procedure Collision

LMP错误事务冲突/LL过程冲突

0x24

LMP PDU Not Allowed

不允许LMP PDU

控制器发送了操作码不被允许的LMP PDU。

0x25

Encryption Mode Not Acceptable

不接受加密模式

0x26

Link Key cannot be Changed

链路密钥不能被改变

一个链路密钥不能被改变因为在使用一个固定的单元密钥。

0x27

Requested QoS Not Supported

不支持请求的QoS

0x28

Instant Passed

瞬间过去错误

一个LMP PDU或LL PDU包含一个瞬间无法执行,因为该瞬间发生的事情已经在过去发生了。

0x29

Pairing With Unit Key Not Supported

不支持与单元密钥配对

0x2A

Different Transaction Collision

不同的事务冲突

LMP的传输与当前的传输冲突。

0x2B

Reserved for future use

保留到未来使用

0x2C

QoS Unacceptable Parameter

QoS不可接受的参数

0x2D

QoS Rejected

QoS拒绝

0x2E

Channel Classification Not Supported

通道分类不支持

0x2F

Insufficient Security

安全性不足

HCI命令或LMP PDU只能在加密链路上发送。

0x30

Parameter Out Of Mandatory Range

参数超出强制范围

0x31

Reserved for future use

保留到未来使用

0x32

Role Switch Pending

角色切换被挂起

0x33

Reserved for future use

保留到未来使用

0x34

Reserved Slot Violation

保留的时间槽冲突

当前的同步协商已终止,协商状态设置为保留的时间槽冲突。

0x35

Role Switch Failed

角色切换失败

0x36

Extended Inquiry Response Too Large

扩展查询响应太大

扩展查询响应以及对FEC的要求太大,以致不能适配任何控制器支持的包类型。

0x37

Secure Simple Pairing Not Supported By Host

安全简单配对不被主机支持

0x38

Host Busy - Pairing

主机忙-配对

主机现在忙于其他的配对操作,不支持当前的配对请求。

0x39

Connection Rejected due to No Suitable Channel Found

由于找不到合适的通道,连接被拒绝

0x3A

Controller Busy

控制器忙

0x3B

Unacceptable Connection Parameters

不可接受的连接参数

不可接受的连接参数导致远端设备终止连接或拒绝请求。

0x3C

Advertising Timeout

广播超时

0x3D

Connection Terminated due to MIC Failure

由于MIC错误连接中断

Message Integrity Check(消息完整性检查)

0x3E

Connection Failed to be Established / Synchronization Timeout

无法建立连接/同步超时

超出6个周期广播事件后同步超时

0x3F

Previously used

之前使用

0x40

Coarse Clock Adjustment Rejected but Will Try to Adjust Using Clock

Dragging

粗时钟调整被拒绝,但将尝试使用时钟拖拽进行调整

0x41

Type0 Submap Not Defined

未定义Type0子映射

0x42

Unknown Advertising Identifier

未知的广播标识

一个命令从主机发出,主机需要标识一个广播句柄,但广播句柄不存在。

0x43

Limit Reached

达到极限

请求的操作数已经完成,表明活动已经完成(广播或扫描)。

0x44

Operation Cancelled by Host

操作被主机取消

0x45

Packet Too Long

包过长

[Vol 2 BR/EDR控制器][Part A 无线电规范]

蓝牙文档官网:
https://www.bluetooth.com/specifications/specs/
蓝牙核心规范5.3:
https://download.csdn.net/download/u012906122/74651266

2 频带和通道管理

蓝牙系统工作在2.4GHz ISM频带。频带范围是2400MHZ到2483.5MHZ。

 表2.1:工作频带
RF通道间隔1MHz。

3 发射器特性

蓝牙设备基于它们的输出功率分为三个电源类:

表 3.1:电源类

3.1 基本速率
3.1.1 调制特性

调制是GFSK(高斯频率移位键控),BT=0.5。调制指数应在0.28~0.35之间。

 图 3.1:GFSK参数定义
最小频率偏差不得小于115kHz。所传输的数据的符号速率为1Msym/s。
过零误差是理论符号周期和测量的时间之间的时间差,应小于符号周期的±1/8。

3.1.2 辐射发射

带内辐射发射应被测量为一个跳频无线电,这个跳频无线电在一个RF通道上发生,在第二个RF通道上接收;这意味着合成器可能会在接收和发送之间改变RF通道,但总是返回到相同的发送RF通道。

3.1.3 无线电频率忍耐度

传输的初始中心频率应在Fc±75kHz以内。初始频率精度被定义为在传输任何数据包信息之前的频率精度。
一个数据包内的发射器中心频率偏移如表3.3。

表3.3:数据包中允许的最大频率偏移

3.2 增强数据速率

增强数据速率的关键特点是调制模式可在包内改变。接入码和包头部,定义在[Vol 2] Part B, Table 6.1的,将以基本速率1Mb/s的速率GFSK调制模式传输,而剩下的同步序列,负载和尾部序列是以增强数据速率PSK调制模式(2~3Mb/s)传输的。

3.2.3 无线电频率忍耐度

相同的用于基本速率传输的负载频率Fc被用于增强数据速率的传输。发送初始中心频率精确度应在Fc±75 kHz内。最大的偏移不应超过±75 kHz。

图 3.3:负载频率掩码
如图,接入码的最大偏移是±75 kHz。头部,同步字,负载和尾部的最大偏移是±10 kHz。

4 接收器特性

接收器特性应使用[Vol 3] Part D, Section 1定义的的回环来测试。这一章节的参考敏感等级是-70dBm。

4.1 基本速率
4.1.1 实际的敏感度等级

实际灵敏度级别定义为满足原始比特误码率(BER)为0.1%的输入级别。接收器的灵敏度应小于等于-70dBm。

4.1.2 干扰性能

 表 4.1:干扰性能
这些规范仅在标称温度条件下进行测试,设备在一个射频信道上接收并在第二射频信道上发射;这意味着合成器可以在接收和传输之间改变射频信道,但始终返回到同一接收射频信道。

4.1.3 带外阻塞

带外抑制(或拒绝)应通过参考灵敏度水平3dB的信号测量。干扰信号应为一个连续的波信号。误码率应为≤0.1%。带外堵塞应满足以下要求:

表4.2:带外抑制(或拒绝)要求

4.1.4 交调特性

在以下条件下,应满足参考灵敏度性能,BER=为0.1%:
所需信号的频率应为f0,功率电平应高于参考灵敏度电平6dB。
静态正弦波信号的频率应为f1,功率级为-39dBm。
蓝牙调制信号应为f2,功率电平为-39dBm。
频率f0、f1和f2的选择应为f0=2f1-f2和|f2-f1|=n*1MHz,其中n可以为3、4或5。该系统应至少满足三种替代方案中的一种(n=3、4或5) 。

4.1.5 最大可用级别

接收机运行的最大可用输入级别应大于-20dBm。在-20dBm输入功率时,误码率应小于或等于0.1%。

4.1.6 接收器信号强度指示器

如果设备支持接收信号强度指示器(RSSI),则精度应为±6dB。

4.1.7  参考信号定义

蓝牙调制干扰信号应定义为:
调制=GFSK
调制指数=0.32±1%
BT=0.5±1%
比特率=1Mb/s±1ppm
调制数据需要信号=PRBS9
调制数据干扰信号=PRBS15
频率精度优于±1ppm

4.2 增强数据速率
4.2.1 实际的敏感度等级

实际灵敏度级别应定义为满足原始比特误码率(BER)为0.01%的输入级别。对蓝牙π/4-DQPSK和8DPSK增强数据速率接收器要求的实际灵敏度应为-70dBm或更高。

4.2.2 误码率性能

接收器在高于参考灵敏度水平10dB时的误码率应低于0.001%。

4.2.3 干扰性能

下表中定义的信号干扰比应达到0.1%或更高:

表 4.3:干扰性能

4.2.4 最大使用级别

接收器运行的最大使用输入级别应大于-20dBm。在-20dBm输入功率时,误码率应小于或等于0.1%。

4.2.6 参考信号的定义

2Mb/s蓝牙信号定义为:
调制=π/4-DQPSK
符号速率=1 Msym/s±1 
ppm频率精度优于±1 ppm
所需信号的调制数据=PRBS9
干扰信号的调制数据=PRBS15
均方根差分误差矢量幅值<5%
数据包的GFSK和DPSK部分的平均功率应等于±1dB以内

3Mb/s蓝牙信号定义为:
调制=8DPSK
符号速率=1 Msym/s±1 
ppm频率精度优于±1 ppm
所需信号的调制数据=PRBS9
干扰信号的调制数据=PRBS15
均方根差分误差矢量幅值<5%
数据包GFSK和DPSK部分的平均功率应相等在±1分贝范围内

[Vol 2 BR/EDR控制器][Part B 基带规范]1 总体描述

蓝牙文档官网:
https://www.bluetooth.com/specifications/specs/
蓝牙核心规范5.3:
https://download.csdn.net/download/u012906122/74651266

PartB描述了蓝牙链路控制器规范,包含了基带协议和其他的低级链路协议。
蓝牙系统提供了一个点对点的连接或一个点对多点的连接,如图1.1中的(a)和(b)。在点对点的连接中,物理通道在两个蓝牙设备中共享。在点对多点的连接中,物理通道在多个蓝牙设备间共享。两个或多个设备共享相同的物理通道,形成一个微网。一个蓝牙设备作为中心设备,而其他设备作为外围设备。最多7个外围设备可以活跃在微网。通道访问由中心设备控制。无限数量的外围设备可以在物理通道上接收携带无连接外围广播物理链路的数据。
有公共设备的微网被称为散射网,如图1.1中的(c)。每个微网只有一个中心设备,然而,基于时分复用外围设备可以加入到不同的微网中。另外,一个微网中的中心设备可以是其他微网中的外围设备。微网间不应进行频率同步,每个微网有其自己的跳频序列。

图 1.1:单个外围设备的(a),多个外围设备的(b)和一个散射(c)的微网
数据在空气中以包的形式传送。定义了两种模式:强制模式称为基本速率和可选模式称为增强数据速率。所有调制模式的符号速率均为1Msym/s。基本速率的总空气数据速率为1Mb/s。增强数据速率,主调制模式提供2Mb/s的总空气数据速率,次要调制模式提供3Mb/s的总空气数据速率。
一般的基本速率数据包格式如图1.2所示。每个数据包由3个实体组成:访问代码、包头和负载。

图1.2:标准基本速率包格式
一般的增强型数据速率数据包格式如图1.3所示。每个数据包由6个实体组成:接入码、头部、guard period、同步序列、增强数据速率负载和尾部数据。接入码和头部使用与基本速率包使用相同的调制模式,同步序列,增强数据速率负载和尾部数据使用增强数据速率调制模式。保护时间允许在调制模式之间的转换。

图1.3:标准增强数据速率包格式

1.1 蓝牙时钟

每个蓝牙设备应有一个本地时钟,该时钟源自一个自由运行的参考时钟。偏移量可以添加到参考时钟中,以使本地时钟与其他非蓝牙系统同步。应该注意的是,蓝牙时钟与一天中的时间没有关系;因此,它可以被初始化为任何值。如果时钟用计数器实现,则需要一个28位计数器。最小显著的位(LSB)应以312.5μs为单位,其时钟速率为3.2kHz。
时钟确定关键周期并触发设备中的事件。蓝牙系统中有四个重要周期:312.5μs,625μs,1.25 ms,和1.28s;这些周期对应于定时器CLK0、CLK1、CLK2和CLK12。如图1.4:

图 1.4:蓝牙时钟
设备可以处在不同的模式和状态下,时钟有不同的表现:
CLKR    参考时钟
CLKN   本地时钟
CLKE    估计时钟
CLK      中心时钟

1.2 蓝牙设备地址

每个蓝牙设备都应分配一个唯一的48位蓝牙设备地址(BD_ADDR)。该地址应根据IEEE802-2014标准创建的48位扩展唯一标识符(EUI-48)而定。
图1.5说明了LAP、UAP和NAP是如何映射到EUI-48的。

图1.5:蓝牙设备地址格式
除了1.2.1节的保留LAP,蓝牙设备地址可以取任何值。

1.2.1 保留地址

保留64个连续LAP块用于查询操作;所有设备共有的一个LAP用于一般查询,其余63个LAP用于特定类别设备的专用查询。
保留的LAP地址为0x9E8B00-0x9E8B3F。一般查询LAP为0x9E8B33。

1.3 接入码

在蓝牙系统中,所有通过物理通道的传输都以一个接入码开始。定义了三种不同的接入码:
(1)设备接入码(DAC)
(2)信道接入码(CAC)
(3)查询接入码(IAC)
所有的接入码源自一个设备地址或查询地址的LAP。设备接入码在寻呼,寻呼扫描,中心设备响应和外围设备响应这些子状态中被使用,源自寻呼设备的蓝牙设备地址。通道接入码在连接状态,同步传输子状态,同步扫描子状态中使用,源自中心设备蓝牙设备地址的LAP。查询接入码用在查询子状态,有1个通用的IAC用来通用的查询请求,有63个专用的IACs用来专用的查询请求。

[Vol 2 BR/EDR控制器][Part B 基带规范]2 物理通道

蓝牙文档官网:
https://www.bluetooth.com/specifications/specs/
蓝牙核心规范5.3:
https://download.csdn.net/download/u012906122/74651266

蓝牙系统中最低的架构层是物理通道层。蓝牙定义了很多物理通道层。蓝牙物理通道有如下特点:一个基本伪随机跳频序列,特定传输时间槽,接入码和包头部编码。对于基本的和自适应的微网物理通道,跳频用来周期性地改变频率以减少干扰的影响。
两个设备如果想要通信需要使用相同的物理通道。为此,它们的收发器必须同时调成相同RF频率且它们必须在彼此的标称范围内。
假定RF负载器个数有限,很多蓝牙设备可以相对独立地运行在相同的时空域里,那就有很大可能两个相对独立的蓝牙设备会将它们的收发器调成相同的RF负载器,导致物理通道冲突。为了减轻冲突的影响,物理通道上的每个传输以一个接入码为开始,这个接入码用作该设备调成此物理通道的纠错码。通道接入码是物理通道的一个属性。
总共定义了如下几种物理通道:基本微网通道和自适应微网通道用以已连接设备之间的通信,与特定的微网有关。查询扫描通道用来发现蓝牙设备,寻呼扫描通道用来连接蓝牙设备。同步扫描物理通道用来获取关于无连接外围设备广播物理链路的时间和频率信息。
一个蓝牙设备某一时刻只能使用这些物理通道中的一个。设备支持时分复用以看起来支持同时多个通道操作。
每当蓝牙设备同步到物理信道的时间、频率和接入码时,它就被称为"连接"到该信道。

2.1 物理通道定义

除同步扫描物理通道(使用一组固定的射频通道)外,物理通道由基本的伪随机射频通道跳变序列、包时间槽和一个接入码定义。跳频序列由一个蓝牙设备地址的UAP和LAP决定。跳频序列的相位由蓝牙时钟决定。总共定义了如下物理通道:
(1)基本微网物理通道
(2)自适应微网物理通道
(3)寻呼扫描物理通道
(4)查询扫描物理通道
(5)同步扫描物理通道

2.2 基本微网物理通道

连接状态时默认使用基本微网物理通道。

2.2.1 中心设备和外围设备

基本微网物理通道由微网中心设备定义。中心设备通过一个轮询方案控制微网物理通道的流量。(Section 8.5)
通过定义,通过寻呼初始化连接的设备是中心设备。一旦微网建立,中心设备和外围设备可能会交换角色。(Section 8.6.5)

2.2.2 跳频特点

特点是通过所有79个射频通道的伪随机跳变。跳频由蓝牙时钟和中心设备的蓝牙设备地址决定。当微网建立时,中心设备的时钟和外围设备的时钟进行通信。每个外围设备会在它们本地时钟的基础上增加偏移以同步中心设备的时钟。因为时钟是相对独立的,偏移必须定时更新。所有微网中的设备是时间和跳频同步于通道的。(Section 2.6)

2.2.3 时间槽

基本的微网物理通道分为多个时间槽,每个槽长度为625μs。时间槽编号范围为0到2^27-1,并且循环,周期长度为2^27。
时分双工方案被采用,这个方案使得中心设备和外围设备可以交替传输,如图2.1。包的起始必须与时间槽起始对齐。包最多可延展至5个时间槽。

 图 2.1:多个时间槽的包

2.2.4 微网时钟

CLK是微网中中心设备的时钟。所有的设备用CLK来计划它们的发送和接收。CLK应当是CLKR增加两个偏移:time_base_offset和peripheral_clock_offset,如图2.2。

 图2.2:中心设备和外围设备的时钟起源

2.2.5 发送/接收时序

中心设备发送应总是在偶数时间槽的位置(CLK1=0),外围设备发送应该总是在奇数时间槽的位置(CLK1=1)。由于包类型覆盖了超过一个时间槽,中心设备传输可能会延续到奇数序号的时间槽,外围设备传输可能会延续到偶数序号的时间槽,如图2.1。

2.2.5.1 微网物理通道时序

以下图中只显示单个时间槽的包。
中心设备TX/RX时序显示在图2.3。在图2.3和图2.4中,通道跳频由f(k)标识,k是时间槽序号。发送之后,返回包预期的时间点是N*625us,N是奇数,N>0。N依赖于传输包的类型。

 图 2.3:正常模式单时间槽包的中心设备收发器的发送/接收周期
外围设备发送/接收时序如图2.4。

 图 2.4:正常模式单时间槽包的外围设备收发器的发送/接收周期

2.2.5.2 微网物理通道重同步

在微网物理通道里,一个外围设备可能失去同步如果它至少200ms没接收到来自中心设备的一个包。中心设备发送给外围设备的包可能会失败,因为在忙于其他的任务如和其他的设备保持连接在等待模式等。当重同步到微网物理通道时,外围设备在它可以发送信息前应一直监听中心设备。这种情况下,外围设备同步搜索窗的大小可能从20us增长到Xus,如图2.5。外围设备重同步时推荐采用单时间槽包。

图 2.5:从等待模式返回的外围设备接收时序

2.3 自适应微网物理通道
2.3.1 跳频特点

每个在自适应微网物理通道上的物理链路应当使用至少20个RF通道。
自适应微网物理通道使用自适应通道跳频序列(Section 2.6)。
自适应微网物理通道用于开启自适应跳频的已连接设备。基本微网物理通道与自适应微网物理通道之间有两点不同。第一,相同的通道机制导致外围设备频率与后续的中心设备的传输频率相同。第二,自适应微网物理通道可以基于小于79个频段。每个自适应微网物理通道的物理链路使用一套不同的频率。

2.4 寻呼扫描物理通道

虽然在连接之前没有定义中心设备和外围设备,但中心设备用于寻呼设备(成为处于连接状态的中心设备),外围设备用于寻呼扫描设备(成为处于连接状态的外围设备)。

2.4.1  寻呼时钟估计

寻呼设备使用寻呼扫描设备的本地时钟的估计值,CLKE:

图2.6 CLKE的起源

2.4.2 跳频特点

寻呼扫描物理通道遵循比基本微网物理通道更慢的跳变模式,是一个通过射频通道的短伪随机跳变序列。

2.4.3 寻呼处理时序

图2.7 寻呼模式下接收器的RX/TX时钟周期

2.4.4 寻呼响应时序

 图2.8 上半段成功页面响应数据包的时间

图2.9 下半段成功页面响应数据包的时间

2.5 查询扫描物理通道

虽然在连接之前没有定义中心设备和外围设备,但中心设备用于查询设备,外围设备用于查询扫描设备。

2.5.1 查询时钟

为设备的本地时钟。

2.5.2 跳频特点

查询扫描物理通道遵循比基本微网物理通道更慢的跳变模式。

2.5.4 查询响应时间

 图2.10 上半段查询成功时查询响应包的时间

 图2.11 下半段查询成功时查询响应包的时间

相关文章:

1 Studying《蓝牙核心规范5.3》

目录 [Vol 0][Part B 蓝牙规范要求] 3 定义 3.1 蓝牙产品类型 4 核心配置 4.1 基本速率核心配置 4.2 增强型数据速率核心配置 4.4 低功耗核心配置 4.5 基本速率和低功耗结合的核心配置 4.6 主机控制器接口核心配置 [Vol 1][Part A 架构]1 概述 1.1 BR/EDR操作概述 …...

STM32+MPU6050传感器

#创作灵感## 在嵌入式系统开发中&#xff0c;STM32F103C8T6单片机与MPU6050传感器的组合因其高性能、低功耗以及丰富的功能而备受青睐。本文将简单介绍如何在Keil 5开发环境中实现STM32F103C8T6与MPU6050的连接和基本数据采集&#xff0c;带你快速入门智能硬件开发。 一、硬件…...

el-input限制输入数字,输入中文后数字校验失效

想要的效果&#xff1a;默认值为0&#xff0c;只能输入0-100的数字。 实现方式如下&#xff0c;使用 οnkeyup"this.valuethis.value.replace(/\D/g,‘’)"限制只能输入数字&#xff0c;输入数字没有问题&#xff0c;使用input实现数字不以0开头&#xff0c;也只能是…...

26考研——数据的表示和运算_整数和实数的表示(2)

408答疑 文章目录 二、整数和实数的表示1、整数的表示1.1、无符号整数的表示1.2、有符号整数的表示1.3、C 语言中的整数类型及类型转换1.3.1、C 语言中的整型数据类型1.3.2、有符号数和无符号数的转换1.3.3、不同字长整数之间的转换 2、实数的表示2.1、浮点数的相关概念2.2、浮…...

用 Lazarus IDE 写一个邮件客户端软件,能收发邮件,编写邮件

下面是一个使用Lazarus IDE开发的基本邮件客户端实现方案&#xff0c;包含收发邮件和编写邮件的核心功能。我们将使用Synapse库&#xff08;跨平台的网络通信库&#xff09;来处理邮件协议。 步骤1&#xff1a;安装依赖 安装Synapse库&#xff1a; 下载地址&#xff1a;https:…...

关于智能体API参考接口

关于智能体在Flask的源码&#xff1a;请求体(在payload里的是请求体)、请求头&#xff08;在headers里的i局势请求头&#xff09;。 我的例子&#xff1a; 我的疑问&#xff1a;为什么没按Coze官方API文档格式&#xff0c;在Apifox里发POST请求却能收到回复&#xff1f; 1. 你…...

命令行运行python程序报错 ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6

命令行运行python程序报错 ImportError: /lib/x86_64-linux-gnu/libstdc.so.6 ImportError: /lib/x86_64-linux-gnu/libstdc.so.6: version GLIBCXX_3.4.29’ not found (required by /home/zitong/miniconda3/envs/torch112/lib/python3.9/site-packages/scipy/spatial/_ckdt…...

直角坐标系和斜角坐标系

前情概要 笛卡尔坐标系是直角坐标系和斜角坐标系的统称。为什么会有这两种坐标系呢&#xff0c;教材中为什么最后只用直角坐标系呢&#xff1f;我们这样解释&#xff1a; 研究一维空间中的向量时&#xff0c;由于一维空间中的向量有无数条&#xff0c;如果我们选定一条作为基…...

vmware 设置 dns

vmware 设置 dns 常用的 DNS&#xff08;Domain Name System&#xff09;服务器地址可以帮助你更快、更安全地解析域名。以下是一些国内外常用的公共 DNS 服务&#xff1a; 国内常用 DNS 阿里云 DNS IPv4: 223.5.5.5、223.6.6.6IPv6: 2400:3200::1、2400:3200:baba::1特点&am…...

基于单片机的病房呼叫系统(源码+仿真)

该系统由以 STM32F4 为平台的监控终端以及以 CC2530 为平台的无线传感网组成。系统上电后自动完成 ZigBee 网络的组建、终端节点的加入&#xff0c;病人可利用便携式的病人终端发出呼叫求助请求信息、节点在线信息以及对护士的服务评价信息等&#xff0c;这些信息通过路由节点发…...

React从基础入门到高级实战:React 实战项目 - 项目四:企业级仪表盘

React 实战项目&#xff1a;企业级仪表盘 欢迎来到 React 开发教程专栏 的第 29 篇&#xff01;在前 28 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和实时通信等核心内容。这一次&#xff0c;我…...

基于微信小程序的睡眠宝系统源码数据库文档

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;睡眠宝系统被用户普遍使用&#xff0c;为方便用户能够可以…...

VibePlayer

源代码地址&#xff1a; VibePlayer: VibePlayer是一款功能强大的Android音乐播放器应用&#xff0c;专为音乐爱好者设计&#xff0c;提供了丰富的音乐播放和管理功能。 用户需求 VibePlayer是一款功能强大的Android音乐播放器应用&#xff0c;专为音乐爱好者设计&#xff0…...

【汇编逆向系列】三、函数调用包含单个参数之float类型-xmm0寄存器,sub,rep,stos,movss,mulss,addss指令

一、汇编代码 single_float_param:0000000000000060: F3 0F 11 44 24 08 movss dword ptr [rsp8],xmm00000000000000066: 57 push rdi0000000000000067: 48 83 EC 10 sub rsp,10h000000000000006B: 48 8B FC mov …...

JAVA开发工具——IntelliJ IDEA

JAVA开发工具——IntelliJ IDEA 软件下载地址https://www.jetbrains.com/idea/ IDEA项目结构介绍 项目&#xff08;project&#xff09;模块&#xff08;module&#xff09;包&#xff08;package&#xff09;类&#xff08;class) 包含关系&#xff1a;项目 > 模块 >…...

基于fpga的疲劳驾驶检测

基于fpga的疲劳驾驶检测 前言一、系统硬件设计二、系统软件设计系统上板实验测试 前言 代码基于网络大佬代码进行修改的。限制性比较大&#xff0c;不太灵活&#xff0c;当个本科毕业设计还是够的。 基于FPGA的疲劳检测模块硬件设计以FPGA核心控制模块为中心&#xff0c;通过…...

感谢阿里云RDS产品及时的“光速服务”

❝ 开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;共3000人左右…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十一)

下载buildroot https://buildroot.org/download.html下载交叉工具链 使用ST官方交叉工具链的话&#xff0c;在buildroot配置外部工具会有问题&#xff0c;所以直接使用正点原子的交叉编译工具 buildroot构建根文件系统 - 参考正点原子 配置 buildroot tar -vxf buildroot-20…...

18-Oracle 23ai JSON二元性颠覆传统

在当今百花齐放的多模型数据库时代&#xff0c;开发人员常在关系型与文档型数据库间艰难取舍。Oracle Database 23ai推出的JSON关系二元性&#xff08;JSON Relational Duality&#xff09;​​ 和二元性视图&#xff08;Duality Views&#xff09;​​ 创新性地统一了两者优势…...

Linux68 FTP 测试 上传下载

6.在vi编辑器里&#xff0c;哪个命令能将光标移到第200行&#xff1f;&#xff08; B &#xff09; 7.A、200g B、:200 C、g200 D、G200 假如您需要找出 /etc/my.conf 文件属于哪个包 (package) &#xff0c;您可以执行&#xff08; D &#xff09;C A、 rpm -q /etc/my.co…...

山东大学《数据可视化》期末复习宝典

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a;&#x1f3c0;山东大学期末速通专用_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1…...

【Elasticsearch】映射:Join 类型、Flattened 类型、多表关联设计

映射&#xff1a;Join 类型、Flattened 类型、多表关联设计 1.Join 类型1.1 主要应用场景1.1.1 一对多关系建模1.1.2 多层级关系建模1.1.3 需要独立更新子文档的场景1.1.4 文档分离但需要关联查询 1.2 使用注意事项1.3 与 Nested 类型的区别 2.Flattened 类型2.1 实际运用场景和…...

SpringBoot十二、SpringBoot系列web篇之过滤器Filte详解

一、前言 JavaWeb三大组件Servlet、Filter、Listener&#xff0c;其中之一便是过滤器Filter。 其实&#xff0c;Filter我们平常用的不多&#xff0c;一般多为项目初期搭建web架构的时候使用&#xff0c;后面用的就少了&#xff0c;在日常业务开发中不太可能碰到需要手写Filte…...

【RTSP从零实践】1、根据RTSP协议实现一个RTSP服务

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…...

行为设计模式之Iterator(迭代器)

行为设计模式之Iterator&#xff08;迭代器&#xff09; 摘要&#xff1a; 迭代器模式(Iterator)是一种行为设计模式&#xff0c;它提供顺序访问聚合对象元素的方法&#xff0c;同时不暴露内部结构。该模式由迭代器接口(Iterator)、具体迭代器(ConcreteIterator)、聚合接口(Ag…...

FPGA点亮ILI9488驱动的SPI+RGB接口LCD显示屏(一)

FPGA点亮ILI9488驱动的SPIRGB接口LCD显示屏 ILI9488 RGB接口初始化 目录 前言 一、ILI9488简介 二、3线SPI接口简介 三、配置寄存器介绍 四、手册和初始化verilog FPGA代码 总结 前言 ILI9488是一款广泛应用于嵌入式系统和电子设备的彩色TFT LCD显示控制器芯片。本文将介…...

​​​​​​​6板块公共数据典型应用场景【政务服务|公共安全|公共卫生|环境保护|金融风控|教育科研]

1. 政务服务 1.1 城市规划与管理 公共数据在城市规划与管理中可发挥关键作用。通过汇聚自然资源、建筑物、人口分布等基础数据,构建数字孪生城市模型,辅助城市总体规划编制、决策仿真模拟。在城市基础设施建设、安全运营、应急管理等方面,公共数据也是不可或缺的基础支撑。例…...

如何实现本地mqtt服务器和云端服务器同步?

有时候&#xff0c;一个物联网项目&#xff0c;A客户想要本地使用&#xff0c;B客户想要线上使用&#xff0c;C客户想要本地部署&#xff0c;当有网环境时能线上使用。这个时候就需要本地MQTT服务和线上MQTT服务能相互自动转发。 后来经我一翻研究&#xff0c;其实Activemq支持…...

windows10下搭建nfs服务器

windows10下搭建nfs服务器 有参考这篇博客 Windows10搭建NFS服务 - fuzidage - 博客园 下载 NFS Server这个app 通过网盘分享的文件&#xff1a;nfs1268 (1).exe 链接: https://pan.baidu.com/s/1rE4h710Uh-13kWGXvjkZzw 提取码: mwa4 --来自百度网盘超级会员v5的分享 下载后…...

CSS中justify-content: space-between首尾贴边中间等距(两端元素紧贴左右边缘,中间元素等距均匀分布)

justify-content: space-between; 是 CSS Flexbox 布局中的一个属性值&#xff0c;主要作用是在弹性容器的主轴方向上均匀分布子元素&#xff0c;具有以下核心特性&#xff1a; 作用效果&#xff1a; 首尾贴边 第一个子元素紧贴容器起始端 最后一个子元素紧贴容器结束端 中…...