BLE(蓝牙)协议

相关概述

整体框架:

a001ee3e4cd456ad789c14b54a8beee2

1.版本信息

  1. 蓝牙1.x和2.x:基本功能和连接性能
  2. 蓝牙3.0:引入高速传输模式(Enhanced Data Rate, EDR)
  3. 蓝牙4.x:低能耗模式(Bluetooth Low Energy, BLE)的引入,适用于物联网和低功耗设备
  4. 蓝牙5.x:进一步优化了BLE的性能,提升了覆盖范围和传输速率
  5. 蓝牙5.1和5.2:增加了定向广播和LE Isochronous通信等新特性,提升了定位和音频传输的能力

2.技术特点

频段和调制:

蓝牙工作在2.4GHz ISM频段,采用频率跳跃扩频(Frequency Hopping Spread Spectrum, FHSS)技术,每秒跳跃1600次,以避免干扰和提高通信稳定性

通信距离:

标准蓝牙(Bluetooth Classic)通常支持10米到100米的通信距离,而低能耗蓝牙(Bluetooth Low Energy, BLE)能够在更大范围内工作,最高可达300米

通信模式:

蓝牙支持点对点和广播通信模式。点对点通信适用于设备之间的直接连接,如手机与耳机;广播通信用于设备宣告自身存在和提供的服务,如广告包(Advertisement Packets)

协议栈:

蓝牙协议栈分为物理层、链路控制层、主机控制器接口(HCI)、逻辑链路控制和适配层(L2CAP)、安全管理(SM)、属性协议(GATT)等多个层次,每个层次负责不同的功能和协议

3.系统构成

1.系统架构图

image-20240623102331635

2.架构组成概述

1.应用程序(Application)

  • 应用程序层位于蓝牙协议栈的顶层
  • 直接与用户交互和上层应用程序进行通信(定义了蓝牙设备的具体功能和应用,如文件传输、音频/视频传输、设备控制等)
  • 应用程序层向高层协议(如FTP、HFP、A2DP等)提供服务,转换用户需求为协议栈可以处理的操作指令

2.高层协议(Higher Layer Protocols)

作用:

高层协议位于应用程序层之下(负责定义和管理特定的应用通信协议)

高层协议:

  • FTP(File Transfer Protocol):用于文件传输
  • HFP(Hands-Free Profile):用于蓝牙耳机和车载电话的通话控制
  • A2DP(Advanced Audio Distribution Profile):用于高质量音频传输
  • AVRCP(Audio/Video Remote Control Profile):用于远程控制音视频设备
  • OPP(Object Push Profile):用于简单对象的传输

3.主机控制接口(HCI,Host Controller Interface)

  • HCI是主机软件与蓝牙硬件控制器之间的接口协议(定义了主机与控制器之间的命令和事件传输机制,使主机能够向控制器发送控制命令,如设备初始化、连接管理、链路状态查询等)
  • 控制器通过HCI向主机报告事件,如连接状态改变、数据接收等

4.主机控制(Host Control)

主机控制层位于蓝牙协议栈中主机端的核心部分,负责协调和管理整个协议栈的运行

接收来自应用程序层的请求,通过HCI与蓝牙控制器进行通信,并处理各种协议的状态管理和数据传输控制

5.链路管理(Link Manager)

链路管理层负责管理蓝牙设备之间的连接建立、维护和释放

具体功能:

  • 连接请求和响应:处理设备之间的连接请求,协商连接参数
  • 链路质量管理:监测和维护连接的质量,包括信号强度、误码率等
  • 能量管理:优化设备的电源消耗,通过动态调整传输功率和时钟频率来降低能耗

6.射频(Radio)

射频层是蓝牙协议栈的最底层,负责实际的无线通信

  • 物理层和调制解调器(控制射频信号的发送和接收)
  • 射频层使用频率跳跃扩频技术(FHSS),在2.4GHz ISM频段内工作,以提高通信稳定性和抗干扰能力

7.基带与链路控制(Baseband & Link Control)

负责管理和控制蓝牙通信中的基础数据链路(蓝牙协议栈的核心部分之一)

  • 数据包的生成和解析:定义数据包的格式和结构
  • 错误检测与纠正:通过CRC(循环冗余校验)等方法检测和纠正数据传输中的错误
  • 链路管理:协调和管理设备之间的连接,包括连接的建立、维护和断开

8.蓝牙音频(Audio)

蓝牙音频层专门用于音频数据的传输和处理(音频数据的编解码方式、传输格式和同步机制,使得蓝牙设备能够支持高质量音频的无线传输,如音乐播放、电话通话)

3.软件协议实现

1.蓝牙结构图

+-----------------------------------------------------------------------+
|                               应用层                                  |
|+---------------+      +--------------------+      +------------------+|
||   电话AP     | <---> | AP优先权鉴别器  | <---> | 媒体播放器AP   ||
|+---------------+      +--------------------+      +------------------+|
+-----------------------------------------------------------------------+

+-----------------------------------------------------------------------+
|                          Profile Manager                              |
|+--------+  +---------+  +----+  +----+  +----+  +---------+  +-------+|
|| AVRCP  |  |  A2DP   |  | AG |  |....|  |SDP |  |AVCTP    |  |RFCOMM ||
|+--------+  +---------+  +----+  +----+  +----+  +---------+  +-------+|
|                                   |         |      ^            ^      |
|        +---------------+       +--------+   |      |            |      |
|        |   AVDTP       |       |  L2CAP |   |      |            |      |
|        +---------------+       +--------+   |      |            |      |
|                                                    |            |      |
|        +-------------------------------------------------------------+ |
|        |                    UART (串行接口)                            | |
|        +-------------------------------------------------------------+ |
+-----------------------------------------------------------------------+

+-----------------------------------------------------------------------+
|                                  芯片                                  |
|+------+ +------+ +----+ +----------+ +-------+ +---------+ +---------+|
||  HCI | |  LM  | | LC | | BaseBand | | Radio | |  PCM    | | 通信模块 | |
|+------+ +------+ +----+ +----------+ +-------+ +---------+ +---------+|
+-----------------------------------------------------------------------+

+-----------------------------------------------------------------------+
|                                   OS                                  |
|+---------------+ +-------------+ +---------+  +-------+ +---------+   |
||  文件系统    | |  DSP driver | | SD driver|  | Flash | |  FMM     |    |
|+---------------+ +-------------+ +---------+  +-------+ +---------+   |
+-----------------------------------------------------------------------+

+------------------------+         +----------------------------+       |
|    音频编码/解码       |         | 存储系统                     |         |
|+------------+  +-----+|         |+------------+  +---------+|         |
|| SBC Encode |  | MP3 |---------->|    Flash    |  |   SD    ||        |
||            |  |Decode|          |             |  |         ||        |
|+------------+  +-----+|          +------------+  +---------+|         |
+------------------------+          +--------------------------+        |

2.架构组成简述

蓝牙软件协议的实现可以分为应用层,Profile Manager层,底层协议

1.应用层
  • 应用层包括具体的应用程序,如电话AP、媒体播放器AP和AP优先权鉴别器。这些应用程序直接与用户交互,提供特定功能(如音频播放、电话通信等)
  • 应用层通过调用Profile Manager提供的接口来实现其功能。例如,媒体播放器AP会调用A2DP接口来传输高质量音频,电话AP会调用AG接口来处理电话音频信号
2.Profile Manager层
  • Profile Manager管理各种蓝牙Profile,如AVRCP、A2DP和AG。这些Profile定义了具体的功能和服务
  • Profile Manager提供统一的接口供应用层调用。应用层的应用程序通过这些接口与底层的蓝牙协议栈进行通信
  • Profile Manager自身依赖于更底层的协议(如AVDTP、AVCTP、SDP)来实现其功能。例如,A2DP依赖于AVDTP进行音频数据传输,AVRCP依赖于AVCTP进行控制命令的传输
3.底层协议
  • 底层协议包括L2CAP(Logical Link Control and Adaptation Protocol)、HCI(Host Controller Interface)等。这些协议提供数据链路层的功能,处理数据的传输和管理
  • 底层协议通过蓝牙硬件(如蓝牙芯片)实现实际的数据传输和控制命令的执行
  • 底层协议为Profile Manager层提供基础的通信服务。例如,SDP用于服务发现,帮助设备识别对方支持的Profile;L2CAP提供数据传输通道,供Profile使用

4.蓝牙协议规范

1.传输协议

1.底层传输协议
  • 蓝牙射频(Radio)部分:负责蓝牙设备在2.4GHz ISM频段内的无线通信,使用频率跳跃扩频(FHSS)技术来避免干扰,每秒钟跳跃1600
  • 基带链路管理控制器(Baseband & Link Controller):管理物理链路的建立、维护和释放,协商设备之间的连接参数,如连接间隙和传输速率
  • 链路管理协议(Link Manager Protocol, LMP):在基带链路控制器之上运行,负责设备之间的连接管理,包括连接请求、响应和链路质量监测
3.高层传输协议
  • 逻辑链路控制与适配器(Logical Link Control and Adaptation Protocol, L2CAP):
  • 位于传输控制协议(TCS)和链路层之间,提供数据的分段和重组功能,支持数据流量控制和错误检测,为高层应用屏蔽底层的物理实现细节
  • 主机控制接口(Host Controller Interface, HCI):定义了主机软件与蓝牙硬件控制器之间的接口协议,允许主机发送控制命令和接收事件报告,管理蓝牙设备的操作和状态

2.中介协议

  • 中介协议为高层应用提供了在蓝牙逻辑链路上运行所需的支持和接口标准化
  • 串口仿真协议(RFCOMM):模拟串口通信,使得传统串口应用程序可以在蓝牙上运行
  • 服务发现协议(SDP):允许设备发现其他设备提供的服务和特性,协商连接参数
  • 互操作协议(IrDA):提供与红外线通信协议的互操作性
  • 网络访问协议(PPP、IP、TCP、UDP):支持通过蓝牙进行网络连接和数据传输
  • 电话控制协议(TCS):支持蓝牙设备之间的电话控制功能
  • AT指令集:允许通过AT命令集与蓝牙设备进行通信和控制

3.应用协议

应用协议位于蓝牙协议栈的最顶层,定义了具体的应用场景和功能

  • 通用应用类框架:提供基本的服务发现、连接建立和数据传输功能
  • 蓝牙电话应用类框架:支持电话控制和语音通信功能
  • 蓝牙连网应用类框架:支持蓝牙设备与互联网的连接和数据交换
  • 对象交互服务类框架:支持与其他设备(如IrDA设备)之间的对象交换协议(OBEX)
  • 蓝牙音视频控制类框架:支持音频和视频设备的远程控制和数据传输

5.硬件接口

1.结构图

   +-----------------------------+
  |         蓝牙芯片             |
  +-----------------------------+
  |        UART接口             |
  +-----------------------------+
  |    TXD (Transmit Data)      |
  +-----------------------------+
  |    RXD (Receive Data)       |
  +-----------------------------+
  |    RTS (Request to Send)    |
  +-----------------------------+
  |    CTS (Clear to Send)      |
  +-----------------------------+
  |    GND (Ground)             |
  +-----------------------------+
              |
              | UART通信线
              |
  +-----------------------------+
  |        主控芯片              |
  +-----------------------------+
  |        UART接口             |
  +-----------------------------+
  |    TXD (Transmit Data)      |
  +-----------------------------+
  |    RXD (Receive Data)       |
  +-----------------------------+
  |    RTS (Request to Send)    |
  +-----------------------------+
  |    CTS (Clear to Send)      |
  +-----------------------------+
  |    GND (Ground)             |
  +-----------------------------+

2.结构简述

蓝牙芯片:

UART接口:蓝牙芯片通过UART接口与主控芯片进行通信

  • TXD (Transmit Data):从蓝牙芯片发送数据到主控芯片
  • RXD (Receive Data):接收来自主控芯片的数据
  • RTS (Request to Send):请求发送数据的信号,由主控芯片控制
  • CTS (Clear to Send):表示可以发送数据的信号,由蓝牙芯片控制
  • GND (Ground):接地线,用于信号引用
主控芯片:

UART接口:与蓝牙芯片的UART接口相对应(包括相同的信号线)

  • TXD:从主控芯片发送数据到蓝牙芯片
  • RXD:接收来自蓝牙芯片的数据
  • RTS:请求发送数据的信号,由主控芯片控制
  • CTS:表示可以发送数据的信号,由蓝牙芯片控制
  • GND:接地线,用于信号引用
通信过程:
  • 主控芯片通过发送数据到蓝牙芯片的TXD线,蓝牙芯片通过RXD线接收数据
  • 蓝牙芯片可以通过RTS线向主控芯片请求发送数据,主控芯片通过CTS线确认可以发送数据
  • 通信的数据流动方向和流量控制由这些UART信号线协调和管理

Bluetooth协议栈

+--------------------------------------------------+
|               Bluetooth Protocol Stack           |  蓝牙协议栈结构
+--------------------------------------------------+
|               Application Layer                  |  应用层
| (A2DP, AVRCP, AG, HFP, RFCOMM, SDP, OBEX, etc.) | (A2DP:音频传输,AVRCP:远程控制等)
+--------------------------------------------------+
|       Logical Link Control and Adaptation        |  L2CAP 层
|                 Protocol (L2CAP)                 | (逻辑链路控制与适配协议)
+--------------------------------------------------+
|      Host Controller Interface (HCI)             |  HCI 层
| (Provides command interface to baseband)        | (主机控制接口,用于主机和蓝牙控制器的通信)
+--------------------------------------------------+
|            Link Manager Protocol (LMP)           |  LMP 层
| (Manages link setup between Bluetooth devices)  | (链路管理协议,管理设备之间的连接)
+--------------------------------------------------+
|                Baseband Layer                    |  基带层
| (Handles physical channel management and        | (处理物理信道的管理和控制)
|   control over Bluetooth radio link)             | (确保设备之间的通信)
+--------------------------------------------------+
|               Physical Layer (Radio)             |  物理层 (无线电)
| (Actual transmission of radio signals)          | (处理实际的无线电信号传输)
+--------------------------------------------------+
image-20241009094400566

协议分层(根据SIG规则)

SIG指全球性蓝牙行业协会,负责制定和推广蓝牙标准,定义蓝牙核心协议规范

核心协议层

  • Bluetooth Radio(蓝牙无线电):负责物理信号的传输和接收
  • Baseband(基带控制):控制低级链路,设备发现,建立连接,数据包的发送和接收
  • LMP(链路管理协议):配对的加密,以及蓝牙设备的链路的维护,通过LMP数据包进行通讯
  • L2CAP(逻辑链路控制与适配协议):支持多信道传输,负责封装高层协议的数据信息,支持高效的数据传输服务
  • SDP(服务发现协议):用于搜索发现支持服务的设备

电缆代替协议

  • RFCOMM(模拟串行通信接口协议):允许蓝牙设备间通过无线代替有线串行通信连接,例如用于传统的串口设备的蓝牙通信

电话传送控制协议

  • TCS-BIN(电话控制二进制协议):用于蓝牙设备间传输语音数据
  • AT-Commands(AT命令):用于控制mobile设备蓝牙发送短信等指令

选用指令

  • PPP(点对点协议):蓝牙中用作网络协议栈的桥接层,用于调制解调器连接
  • IP/TCP(互联网标准协议栈):支持通过蓝牙连接的IP数据传输,应用于手机蓝牙上网
  • OBEX(对象交换协议):用于文件传输和联系人同步,应用于手机通过蓝牙传输文件
  • WAP(无线应用协议):允许通过蓝牙连接实现访问互联网
  • WAE(WAP的一部分):
  • vCard/vCal:用于传输联系人日历事件格式

主机接口(HCI)

HCI负责在蓝牙设备中的主机和控制器之间进行通信

(位于L2CAP的下层允许控制处理器底层的无线处理)

(位于L2CAP的上层特殊情况负责部分与应用层通信)

基带控制器
连接管理器
硬件状态
控制寄存器

串口仿真协议(RFCOMM协议)

仿真串行端口的协议(不同的频道存在多种蓝牙配置文件)

  1. 通过SDP(服务发现协议,查询设备支持的服务和频道信息)发现目标服务信息
  2. 使用sdptool查找目标设备服务,确定RFCOMMM使用的具体频道号
  3. 即可与目标设备进行通信

Bluetooth Profile

蓝牙协议配置文件

定义了蓝牙设备间通信的规范,针对不同的应用场景使用不同的profile

通用访问配置文件(GAP)

所有其他配置文件的基础

  • 蓝牙设备间建立基带链路的通用方法
  • 发现和链接设备的通用步骤
  • 基本用户界面标准化框架

保证了应用程序与设备之间的高度互操作性,并允许开发者基于现有定义更轻松地创建新的配置文件

必须遵循GAP,以确保基本的互操作性和共存

服务发现应用配置文件(SDAP)

应用程序如何使用SDP发现远程设备上的服务

SDAP依赖于GAP以确保互操作性

SDAP确保任何应用程序能够发现目标蓝牙设备上可用的服务

串行端口配置文件(SPP)

定义了如何设置虚拟串行端口及连接两个蓝牙设备

SPP依赖于GAP以确保互操作性

  • SPP基于ETSI TS 07.10规格,使用RFCOMM协议实现串行通信仿真
  • SPP提供无线替代现有RS-232串行通信应用程序和控制信号的方法
  • SPP为DUN、FAX、HSP和LAN配置文件提供了基础
  • SPP支持最高128 kb/s的数据传输速率

通用对象交换配置文件(GOEP)

用于在设备间传输任意对象,如图片、文档和名片等

GOEP依赖于SPP

  • 提供拉取或推送对象位置的服务器,以及启动操作的客户端
  • GAP定义了使用GOEP的应用程序假定链路和信道

蓝牙4.0

概述

  • OSAL操作系统抽象层和 HAL硬件抽象层
  • 多个Task任务和事件在OSAL管理下工作
  • 每个任务和事件又包括:BLE 协议栈,profiles和应用程序
img

主从机连接模式

image-20241022115430739

主从通信透传模块

实现设备间的透明传输功能,允许主设备与从设备之间进行无缝的数据交换

  1. 工作模式:
    • 透传模式 (TTM):当MTTM连接到支持BLE透传协议的从设备(STTM)时,自动进入透传模式MTTM与STTM之间的数据通过串口进行串口传输,用户的数据内容不会被改变,传输过程对用户透明
    • 指令模式 (CM):从设备不支持透传协议,MTTM将默认进入指令模式,处理特定的命令和控制操作
  2. 启动流程:
    • MTTM模块启动后进入休眠模式(SBM)
    • 通过AT指令进行控制,直到与从设备成功建立连接
  3. 透传模式的工作机制:
    • MTTM到STTM的传输:用户通过MTTM的串口输入的数据,会被转发到STTM,从而通过STTM的串口输出到从设备
    • STTM到MTTM的传输:从STTM的串口输入的数据,会被转发到MTTM,再通过MTTM的串口输出到用户设备
image-20241022112737433

透传数据基本架构

  • Profile: Profile是一组通信规范或标准协议(蓝牙从机中)蓝牙组织定义了多个标准profile例如:HID OVER GATT、防丢器、云计等
  • Service: Service 是一种服务(BLE 从机)每个服务包含多个特征特征值例如:楼梯信息服务、系统信息服务等
  • 特性: 特性是BLE通信的基本单位,通过它可以进行数据的读取或写入主机与从机的通信都是通过特性实现的
  • UUID: UUID 是统一识别码,用于每个唯一标识服务和特征
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇