蓝牙协议简介

news2025/2/4 4:42:55

在这里插入图片描述

文章目录

  • 前言
  • 一、蓝牙版本介绍
    • 第一代蓝牙(1999~2003 年)共包括三个版本。
    • 第二代蓝牙(2004~2007年)共包括两个版本。
    • 第三代蓝牙(2009年)主要引入了几个关键技术。
    • 第四代蓝牙(2010到2014年)共包括三个版本。
    • 第五代蓝牙(2016年至今)
  • 二、核心系统
    • Host
    • Controller
  • 三、协议栈
    • 1、传统蓝牙BR/EDR协议栈
    • 2、低功耗蓝牙BLE协议栈


前言

    所谓蓝牙(Bluetooth)技术,实际上是一种短距离无线电技术,利用"蓝牙"技术,能够有效地简化掌上电脑、笔记本电脑和移动电话手机等移动通信终端设备之间的通信,也能够成功地简化以上这些设备与因特网Internet之间的通信,从而使这些现代通信设备与因特网之间的数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。其数据速率为1Mbps。采用时分双工传输方案实现全双工传输。

    截止到目前,蓝牙共发布了 9 个版本:V1.1/1.2/2.0/2.1/3.0/4.0/4.1/4.2/5.0,以蓝牙的发射功率可再分为 Class A/Class B。

    Class A 用在大功率/远距离的蓝牙产品上,但因成本高和耗电量大,不适合用作个人通信产品(手机/蓝牙耳机/蓝牙Dongle 等),故多用在某些商业特殊用途上,通信距离大约为 80~100m。

    Class B 是目前最流行的制式,通信距离大约为 8~30m,视产品的设计而定,多用于手机/蓝
牙耳机/蓝牙 Dongle(适配器)等个人通信产品上,耗电量较少和封装较小,便于对结构空间要求
苛刻的系统的集成。


一、蓝牙版本介绍

第一代蓝牙(1999~2003 年)共包括三个版本。

  • 蓝牙1.0版本 为最早期版本,传输率约在748~810kb/s,因是早期设计,容易受到同频率之产品所干扰下影响通讯质量。
  • 蓝牙1.1版本 正式列入IEEE 802.15.1标准,作为早期版本,还存在容易受到同频率之间产品干扰的问题。
  • 蓝牙1.2版本 解决1.0版本暴露出的安全性问题,同时引入了适应性跳频技术(AFH,Adaptive Frequency Hopping)、延伸同步连结导向信道技(eSCO,Extended Synchronous Connection-Oriented links)等技术来提高通信质量。

第二代蓝牙(2004~2007年)共包括两个版本。

  • 蓝牙2.0版本 版本 2.0 是 1.2 的改良提升版,传输率约在 1.8M/s~2.1M/s,可以有(双工)的工作方式。即一面作语音通讯,同时亦可以传输档案/高质素图片。
  • 蓝牙2.1版本 主要新增Sniff Subrating省电功能,通过将设备相互确认的讯号发送时间间隔从0.1s延长到0.5s,从而让蓝牙芯片的工作负载大幅降低。另外还引入了SSP 简易安全配对功能,使蓝牙设备配对更加方便快捷。

第三代蓝牙(2009年)主要引入了几个关键技术。

  • 可选技术High Speed,可实现高达24Mbps的传输速率。
  • AMP(Generic Alternate MAC/PHY),一种全新的交替射频技术,允许蓝牙协议栈针对任一任务动态地选择正确射频。
  • EPC 增强电源控制技术,降低空闲功耗;
  • UCD 单向广播无连接数据技术,提高蓝牙设备的相应能力。

    蓝牙 3.0 引入高速传输,加大带宽,客观上挤占 WiFi 的位置,增加了功耗和成本;

第四代蓝牙(2010到2014年)共包括三个版本。

    蓝牙 4.0(2010 年)重新找准定位,引入 BLE 概念,即 Bluetooth Low Energy 低功耗蓝牙;

  • 蓝牙4.0版本 是第一个蓝牙综合协议规范,提出了低功耗蓝牙(BLE,Bluetooth Low Energy)、传统蓝牙和高速蓝牙三种模式。高速蓝牙主攻数据交换与传输,传统蓝牙以信息沟通、设备连接为重点,低功耗蓝牙以不需要占用太多带宽的设备连接为主,功耗较老版本降低了90%。蓝牙4.0还将芯片模式分为了单栈模式(Single Mode)和双栈模式(Dual Mode),单栈模式只能与蓝牙4.0互相传输数据,无法实现向下的兼容,双栈模式则可以向下兼容。在低功耗模式下,蓝牙4.0还把传输距离提升到100米以上。
  • 蓝牙4.1版本 主要是针对物联网设备,提出了几个关键技术:1. 支持与LTE无缝写作,通过自动协调两者的传输信息,以确保协同传输,降低相互干扰。2. 允许开发人员或开发商自定义重新连接间隔,提供更高的灵活性和掌控度。3. 加入专用的IPv6通道,允许蓝牙设备通过联网的设备使用IPv6协议上网,满足物联网的应用需求。
  • 蓝牙4.2版本 传输速率相对上一代提高了2.5倍,同时改善了传输速率和隐私保护程度,并支持6LoWPAN低速无线个域网标准,这样大部分智能家居产品可以抛弃相对复杂的WiFi 连接,改用蓝牙传输,实现更加快捷的互联互通。

第五代蓝牙(2016年至今)

    蓝牙 5.0 版本主要针对 IoT 物联网做了更多优化,包括提升了低功耗模式下的传输速率以及传输距离,支持室内导航,支持 Mesh 网状网络。Mesh 网络可以将蓝牙设备作为信号中继站,从而实现更大物理区域的信号传输。蓝牙 5.1 版本加了测向功能和厘米级的定位服务,这项功能的加入使得室内的定位会变得更加精准。蓝牙 5.2 版本主要是增强 ATT 协议,同时优化连接速度和抗干扰能力。

    性能方面,蓝牙 5.0 标准 LE 传输速度是之前蓝牙 4.2 LE 版本的两倍,有效距离则是上一版本的 4 倍,即蓝牙发射和接收设备之间的理论有效工作距离增至 300 米。

    另外,蓝牙 5.0 还允许无需配对就能接受信标的数据,比如广告、Beacon、位置信息等,传输率提高了 8 倍。同时,蓝牙 5.0 标准还针对 IoT 物联网进行底层优化,更快更省电,力求以更低的功耗和更高的性能为智能家居服务。

    蓝牙 5.0 标准的新特性如下。

  • 2 倍 BLE 带宽提升: 在 BLE4.2 的 1Mbit/s 的 PHY 增加可选的 LE Coded 调制解调方式,支持 125Kbit/s 和 500Kbit/s,同时增加一个可选的 2Mbit/s 的 PHY。

  • 4 倍通信距离提升:通过上述降低带宽、提升通信距离,同时保持功耗不变,且允许的最大输出功率从之前的 10 毫瓦提升至 100 毫瓦。

  • 8 倍广播数据容量提升: 从 BLE4.2 的 31 字节提升至 255 字节,并且可以将原有的 3 个广播信道扩展到 37 个广播通道。增加通道选择算法#2。

  • BR/EDR 时间槽可用掩码:检测可用的发送接收的时间槽并通知其他蓝牙设备。

二、核心系统

    4.0 之前的蓝牙通常被称为经典蓝牙(Classic Bluetooth),包括1.0提出的BR(Basic Rate,基础速率)以及2.0提出的EDR(Enhanced Data Rate,增强数据速率),BR/EDR用于表示与低功耗蓝牙BLE相对的传统蓝牙。

    从使用场景来看,BR/EDR主要侧重于点对点的通信,连接性和传输速率是考虑的重点,而BLE侧重于低功耗的设计,在射频层和基带层上优化了多播和广播的支持。传统上Controller芯片只支持一种射频模式,但越来越多设备中也同时支持两种系统,以覆盖尽量多的使用场景。

在这里插入图片描述

    蓝牙的核心系统架构包含一个 Host 和一个或多个 ControllerHost 可以理解为主核或者主板,运行主流的操作系统,例如 Linux、Windows、Macos;而 Controller 可以看做是蓝牙芯片,运行的是裸机程序或者 RTOS ,主要功能是对射频信号进行编解码。HostController 之间通过标准的 HCI 接口(Host Controller Interface)进行通信,具体实现上可通过 UART、USB 等物理接口进行传输。核心系统中包含的组件和之间的关系如下图所示:

在这里插入图片描述

在这里插入图片描述

Host

    其中 Host 部分主要是基于 L2CAP (Logical Link Control and Adaptation Protocol)(逻辑链路控制和适配协议) 抽象出的逻辑信道实现应用层的协议和功能,涉及的关键组件和协议有:

  • Channel Manager(信道管理器):信道管理器负责创建、管理和结束用于服务协议和应用数据流传输的 L2CAP 信道。信道管理器通过 L2CAP 与远程(对等)设备上的信道管理器交互,以创建这些 L2CAP 信道并将它们的端点连接到对应的实体。信道管理器与本地链路管理器交互来创建新的逻辑链路(如有此需要)和配置这些链路,以提供被传输数据类型要求的质量服务(Quality of Service,QoS)。

  • L2CAP Resource Manager(L2CAP 资源管理器):L2CAP 资源管理器负责管理发送至基带的协议数据单元(Protocol Data Unit,PDU)片段的提交顺序以及信道间的相关调度,以确保不会因为 Bluetooth 控制器资源耗尽而导致带有 QoS 承
    诺的 L2CAP 信道对物理信道的访问被拒绝。这是必须的,因为架构模型不会假设 Bluetooth 控制器拥有无限大缓冲,也不会假设 HCI 是具有无限大带宽的管道。

        L2CAP 资源管理器也可以执行通信量符合性管制功能,以确保这些应用在它们协商好的 QoS 设置的限制范围内提交 L2CAP 服务数据单元(Service Data Unit,SDU)。一般的 Bluetooth 数据传输模型会假设每项应用都符合相关要求,而不会定义某项具体实施应如何处理此类问题。

  • SMP:Security Manager Protocol(安全管理协议),实现 BLE 系统中的点对点安全认证功能,包括秘钥生成和认证等;BR/EDR系统的对应功能则在Controller的Link Manager中实现。

  • ATT:Atrribute Protocol(属性协议),应用层 attribute client 和 server 之间的协议。

  • GATT:Generic Attribute Profile(通用属性配置文件),表示 ATT server 或者 client 的功能,profile 描述了服务和属性的层级结构,主要用于 LE profile 服务发现中。

  • GAP:Generic Access Profile(通用访问配置文件),表示所有蓝牙设备通用的基础功能,比如传输层、协议、应用所使用的模式或流程等。GAP 服务包括设备和服务发现、连接模式、安全认证和关联模型等。

  • SDP:Service Discovery Protocol,即服务发现协议,是蓝牙协议体系中的核心协议,是蓝牙系统重要组成部分,是所有用户模式的基础。通过这个协议,客户端程序可以发现哪些服务可用以及服务的特性是什么。

Controller

    Controller 部分中更多是逻辑链路和物理链路的管理,包括:

  • Device Manager:设备管理器是基带(baseband)的功能块,用于控制启用 Bluetooth 的设备的一般行为。它负责 Bluetooth 系统所有与数据传输无直接关系的操作,例如查询附近是否有其他启用 Bluetooth 的设备,连接到其他启用 Bluetooth 的设备,或使本地启用 Bluetooth 的设备可被其他设备发现或连接(discoverable/connectable)。

        设备管理器请求从基带资源控制器访问传输媒体,以执行它的功能。

        设备管理器还控制多个 HCI 命令指示的本地设备行为,例如管理设备本地名称、任何已存储的链路密钥和其他功能。

  • Link Manager:链路管理器负责创建、修改和释放逻辑链路(logical links)以及与这些链路关联的逻辑传输(logical transports)(如有需要),还可以更新与设备之间的物理链路(physical links)有关的参数。在 BR/EDR 系统中,与对端的 Link Manager 通过 LMP 协议(Link Manager Protocol)进行通信;在 BLE 系统中则使用的是 LL 协议(Link Layer Protocol)。

  • Baseband Resource Manager(基带资源管理器):负责管理所有到射频媒介的访问。在链路层中,有两种类型的 “连接” :

    • SCO:Synchronous Connection Orientated,实时窄带数据传输,如电话音频等,无重传
    • ACL:Asynchronous Connection-Less,异步无连接,用以其他所有数据的传输
  • Link Controller:链路控制器负责对指定物理信道(逻辑链路和逻辑传输)的蓝牙数据进行编解码。

        链路控制器发出链路控制协议信令(与资源管理器的调度功能紧密结合),用于传达流控制及确认和重新传输请求信号。对这些信号进行翻译是与基带数据包相关联的逻辑传输的特征。链路控制信令的翻译和控制通常与资源管理器的调度程序相关联。

三、协议栈

1、传统蓝牙BR/EDR协议栈

蓝牙协议安全(上)

2、低功耗蓝牙BLE协议栈

    低功耗蓝牙 BLE 协议栈与 OSI 七层模型的对应关系如下图所示:

在这里插入图片描述

  • Bluetooth LE PHY 物理层与 OSI 物理层直接对应
  • LL(Link Layer) 链路层与 L2CAP 层与 OSI 数据数据链路层对应
  • BLE 更高层提供应用层服务、设备模型、连接管理和安全控制功能,与 OSI 网络层及以上层的混合层对应

    BLE 相对于 BR/EDR 要简单许多,可以分为三层。最下层控制层包括 Bluetooth LE PHY、LL 以及 Controller 端的 HCI 接口。Host 层包括 Host 端 HCI 接口、L2CAPATT(attribute protocol)、GATT(generic attribute profile)、SMP(security manager protocol)、GAP(generic access profile)。

在这里插入图片描述

   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1328588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot +vue +element-ui 技术开发的SaaS智慧校园云平台源码

SaaS智慧校园云平台源码,智慧班牌系统,原生小程序 集智慧教学、智慧教务、智慧校务、智慧办公于一体的校园管理平台源码。集成智能硬件及第三方服务,面向学校、教师、家长、学生,将校内外管理、教学等信息资源进行整合&#xff0c…

【深度学习】语言模型与注意力机制以及Bert实战指引之一

文章目录 统计语言模型和神经网络语言模型注意力机制和Bert实战Bert配置环境和模型转换格式准备 模型构建网络设计模型配置代码实战 统计语言模型和神经网络语言模型 区别:统计语言模型的本质是基于词与词共现频次的统计,而神经网络语言模型则是给每个词…

解决IDEA编译/启动报错:Abnormal build process termination

报错信息 报错信息如下: Abnormal build process termination: "D:\Software\Java\jdk\bin\java" -Xmx3048m -Djava.awt.headlesstrue -Djava.endorsed.dirs\"\" -Djdt.compiler.useSingleThreadtrue -Dpreload.project.path………………很纳…

C/C++ 基础函数

memcpy:C/C语言中的一个用于内存复制的函数,声明在 string.h 中(C是 cstring) void *memcpy(void *destin, void *source, unsigned n);作用是:以source指向的地址为起点,将连续的n个字节数据,…

【Grafana】Grafana匿名访问以及与LDAP连接

上一篇文章利用Docker快速部署了Grafana用来展示Zabbix得监控数据,但还需要给用户去创建账号允许他们登录后才能看展示得数据,那有什么办法让非管理员更方便得去访问Grafana呢?下面介绍两个比较方便实现的: 在开始设置前&#xff…

Echarts 仪表盘实现平均值和实时值

const gaugeData [{value: 20,name: 互动发起率实时值,title: {offsetCenter: [-25%, 10%]},detail: {offsetCenter: [-25%, 18%]}},{value: 40,name: 互动发起平均值,title: {offsetCenter: [25%, 10%]},detail: {offsetCenter: [25%, 18%]}},// {// value: 60,// name: …

Megatron模型并行研究

Megatron模型并行研究 1. 技术调研 a. Megatron-LM Megatron-LM针对的是特别大的语言模型,使用的是模型并行的训练方式。但和普通的模型并行不同,他采用的其实是张量并行的形式,具体来说就是将一个层切开放到不同的GPU上,属于层…

前端---后端 跨域?

一、跨域 ? 跨域(Cross-Origin Resource Sharing,CORS)是浏览器的一项安全功能,它用于限制一个域名下的文档如何从另一个不同的域名、端口或协议请求资源。跨域资源共享(Cross-Origin Resource Sharing&am…

Protobuf 编码规则及c++使用详解

Protobuf 编码规则及c使用详解 Protobuf 介绍 Protocol Buffers (a.k.a., protobuf) are Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data Protocol Buffers(简称为protobuf)是谷歌的语言无关、…

邻接矩阵表示 深度遍历 广度遍历

邻接矩阵表示法是一种图的表示方法,其中每个顶点都有一个唯一的索引,而每条边则由两个顶点之间的连接确定。深度优先遍历(DFS)和广度优先遍历(BFS)是两种常用的图遍历算法。 1. 深度优先遍历(D…

【Python】matplotlib画图_饼状图

柱状图主要使用pie()函数,基本格式如下: plt.pie(x,explodeNone,labelsNone,colorsNone,autopctsNone,pctdistance0.6,shadowFalse,labeldistance1.1,staatangleNone,radiusNone,counterclockTrue,wedgepropsNone,textpropsNone,center(0,0),frameFalse…

【大数据存储与处理】第一次作业

hbase 启动步骤 1、启动 hadoop,master 虚拟机,切换 root 用户,输入终端命令:start-all.sh 2、启动 zookeeper,分别在 master、slave1、slave2 虚拟机终端命令执行:zkServer.sh start 3、启动 hbase&#x…

MySQL 分表真的能提高查询效率?

背景 首先我们以InnoDB引擎,BTree 3层为例。我们需要先了解几个知识点:页的概念、InnoDB数据的读取方式、什么是树搜索?、一次查询花费的I/O次数,跨页查询。 页的概念 索引树的页(page)是指存储索引数据…

Flutter本地化(国际化)之App名称

文章目录 Android国际化IOS国际化 Flutter开发的App,如果名称想要跟随着系统的语言自动改变,则必须同时配置Android和IOS原生。 Android国际化 打开android\app\src\main\res\values 创建strings.xml 在values上右键,选择New>Values Res…

【lesson21】MySQL复合查询(2)子查询

文章目录 子查询测试要用到的表测试要用到的数据单行子查询案例 多行子查询案例 多列子查询案例 在from子句中使用子查询案例 合并查询union案例union all案例 子查询 子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询 测试要用到的表 测试要用到的数据 单…

TOPCON拓普康BM-7A亮度色度计

用途: 其应用范围非常之广:各种电视/手机/电脑/复印机等的液晶显示屏LCD的亮度、色度、色温、对比度等项目测定;液晶领域内各部件(LED、CCFL、EL背光源,液晶模组,滤光片)的亮度、色度、配光特性…

Qt通用属性工具:随心定义,随时可见(二)

一、话接上篇 本片咱们话接上篇《Qt通用属性工具:随心定义,随时可见(一)》,讲讲自定义的对象属性如何绑定通用属性编辑工具。 二、破杯二两酒 1、一颗小花生 同样,我们先准备一个比较简单的demo&#x…

案例系列:营销模型_客户细分_无监督聚类

案例系列:营销模型_客户细分_无监督聚类 import numpy as np # 线性代数库 import pandas as pd # 数据处理库,CSV文件的输入输出(例如pd.read_csv)/kaggle/input/customer-personality-analysis/marketing_campaign.csv在这个项…

老师的责任和义务

作为一名老师,我们的责任和义务是重大的。在教育领域,我们扮演着至关重要的角色,肩负着培养下一代人才的重任。下面,我将以知乎的口吻,从几个方面谈谈老师的责任和义务。 确保学生获得高质量的教育。这包括制定合理的教…

企业级低代码平台:助力IT部门,释放业务创新力

随着低代码技术的升级,越来越多的企业开始采用低代码平台,如恒逸集团利用低代码平台快速搭建了综合业务管理平台,时间比传统开发缩短近一倍。云表低代码提供的数据、流程、权限、图表等引擎工具,完美适配企业数字化需求。根据Gart…