一、Device Modes(设备模式)

  • BLE 蓝牙低功耗
  • BR 基本速率
  • EDR 增强数据速率

同时支持BLE和BR / EDR的设备称为双模式设备。 通常,除非另有特别说明,否则在蓝牙生态系统内部,移动电话或便携式计算机被视为双模式设备。 仅支持BLE的设备称为单模设备。

单模(BLE或低功耗蓝牙)设备仅实现BLE,并且能够与单模和双模设备通信,但是不能与仅支持BR / EDR的设备通信。 BLE支持是单模式设备处理传入消息并发出响应的必备条件。

双模低功耗蓝牙设备,同时实现了BR / EDR和BLE,并且能够与任何蓝牙设备进行通信。

二、Hardware Configurations(硬件配置)

有集成处理器和外部处理器两种实现方式。功能强大的计算设备(如智能手机和平板电脑)通常会选择外部处理器,以及相应的HCI协议。大多数传感器应用趋向于使用集成处理器(SoC)硬件配置,因为它会降低整体系统复杂性以及相关的印刷电路板(PCB)成本。
图1:集成与外部处理器BLE硬件配置

三、Network Modes(网络模式)

BLE设备使用两种不同的通信方法,每种方法都有其特定的优点和局限性:广播和连接。 两种方法均遵循通用访问配置文件(GAP)建立的某些过程。

1. Broadcasting(广播)

使用无连接广播时,BLE设备会将数据发送到可接受的收听范围内的任何扫描设备或接收器。 本质上,此机制允许BLE设备执行以下操作:
将数据单向发送给任何能够进行传输的人或任何事物。
广播定义了两个单独的角色:
●广播者:定期将不可连接的广告包发送给愿意接收它们的任何设备。
●观察者:重复扫描预设频率以接收任何不可连接的广告数据包。
广播是设备一次向多个配对方传输数据的唯一方法。 这些广播的数据通过使用BLE的广告功能发送出去。

2. Connecting(连接)

对于BLE中的双向数据传输,需要存在一个连接。 BLE中的连接无非是涉及的两个BLE对等点之间在特定的特定时间点(连接事件)建立的定期数据交换。 通常,仅在两个BLE连接对等方之间交换数据,并且不涉及其他设备。 连接定义两个单独的角色:
●中央(主机):重复扫描预设的BLE频率以查找可连接的广告数据包,并在适当时启动连接。 建立连接后,中央管理定时并启动定期数据交换。
●外围设备(从属设备):一种设备,该设备定期发送可连接的广告包并接受传入的连接。 一旦建立活动连接,外围设备就会按照中心的时间进行定时并与之定期交换数据。

四、Profiles(配置文件)

蓝牙规范明确区分了协议和配置文件的概念。 进行这种区分是由于每个概念服务的目的不同,并且总体规范分为:
●协议:它们是所有符合Bluetooth规范的设备使用的构造块; 协议本质上构成了实现不同数据包格式,路由,多路复用,编码和解码的层,从而允许在配对设备之间有效地发送数据。
●配置文件:是垂直功能的切片,定义了所有设备所需的基本操作模式(例如通用访问配置文件和通用属性配置文件)或特定用例(邻近配置文件,葡萄糖配置文件); 配置文件实质上指定了应如何使用协议来实现特定目标,无论是通用的还是特定的。

1.Generic Profiles(通用配置文件)

通用配置文件由蓝牙规范定义,其中两个是基础,因为它们可确保来自不同供应商的BLE设备之间的互操作性:

  • 通用访问配置文件(Generic Access Profile,GAP):指定下层无线协议的使用模型,以定义角色,过程和模式,以允许设备广播数据,发现设备,建立连接,管理连接以及协商安全级别; GAP本质上是BLE的最高控制层。所有BLE设备都必须具有此配置文件,并且所有配置文件都必须遵守该配置文件。
  • 通用属性配置文件(GATT):解决BLE中的数据交换并指定基本数据模型和过程,以使设备能够发现,读取,写入和推送它们之间的数据元素。它基本上是BLE的最顶层数据层。
    GAP和GATT是BLE的基础,因此它们经常被用作提供应用程序编程接口(API)的基础,这些API充当应用程序与协议栈进行交互的入口。
  • Use-Case-Specific Profiles(特例配置文件)
  • SIG-Defined GATT-Based Profiles(基于GATT的SIG配置文件)
  • Vendor-Specific Profiles(供应商专用配置文件)
  • Generic Access Profile Layer(通用访问配置文件层)
    通用访问配置文件(GAP)层负责总体连接功能;它处理设备的访问模式和过程,包括设备发现,直接与应用程序和/或配置文件接口以及处理设备发现和与设备相关的连接服务。此外,GAP会注意安全功能的启动。
    本质上,考虑到GAP指定设备如何执行控制程序(例如设备发现和安全连接建立),以确保互操作性,从而允许不同供应商的设备之间进行数据交换,因此可以将其视为BLE最高控制层。GAP指定设备可以在BLE网络中采用的四个角色:
    ●广播者:该设备正在发布特定数据,例如,让所有启动设备知道它是可连接设备。该广播包含设备地址和可选的其他数据,例如设备名称。
    ●观察者:观察者在收到广播后,向广播者发送“扫描请求”。 广播者以“扫描响应”进行响应。这是设备发现的过程,之后观察者知道广播者设备的存在,并且知道可以与之建立连接。
    ●中央:中央连接时,中央必须指定要连接的对等设备地址。如果收到与对等设备地址匹配的广告,则中央设备将发出请求,以与具有特定连接参数的广告设备建立连接(链接)。
    ●外围设备:建立连接后,如果设备是广告商,则该设备将充当从设备;如果设备是发起方,则该设备将充当主机。
  • Generic Attribute Profile Layer(通用属性配置文件层)
    通用属性配置文件(GATT)层是一个服务框架,定义了所有使用属性协议(ATT)的子过程。它详细描述了如何通过BLE连接交换配置文件和用户数据。与定义与设备的低级交互的GAP相比,GATT仅处理实际的数据传输过程和格式。
    GATT还为SIG定义的所有基于GATT的配置文件提供了参考框架。
    通过有效涵盖配置文件的精确用例,可以确保不同供应商的设备之间的互操作性。因此,所有标准BLE配置文件均基于GATT,并且必须
    遵守它才能正确运行,这使GATT成为BLE规范的关键部分,因为与应用程序和用户相关的每个数据收集都必须根据其规则进行格式化,打包和传输。
    GATT为交互的BLE设备定义了两个角色:
    ●客户端:它将请求发送到服务器,接收响应以及服务器可能发起的更新。 GATT客户端事先不了解服务器的属性,因此必须首先通过执行服务发现来查询这些属性的存在和性质。
    完成服务发现后,它将开始读取和写入服务器中找到的属性,并接收服务器启动的更新。它对应于ATT客户端。
    ●服务器:它接收来自客户端的请求并发出响应。在配置为服务器时,它还会发送服务器启动的更新,并且它是负责存储用户数据并将其提供给客户端(按属性组织)的角色。每个出售的BLE设备都必须至少包括一个基本的GATT服务器,该服务器可以响应客户端请求,即使仅返回错误响应也是如此。它对应于ATT服务器。
    再次值得一提的是,GATT和GAP角色是完全独立的,但彼此同时兼容。例如,GAP中心和GAP外设都可以充当GATT客户端或服务器,甚至可以同时充当两者。
    GATT使用ATT作为设备之间数据交换的传输协议。此数据按称为服务的部分进行分层组织,这些服务将概念上相关的用户数据片段(称为特征)分组。

五、Protocol Stack(协议栈)

从架构的角度来看,类似于所有蓝牙设备,单模BLE设备分为三个部分:控制器,主机和应用程序。 每个基本构建模块都由几层组成,这些层使设备可操作,并紧密集成在所谓的协议栈中,如图2所示:

(一)Controller(控制器)

控制器包括BLE设备进行通信所需的所有较低级别的功能; 它由物理层(PHY),链路层(LL)和主机控制器接口(HCI)的控制器端组成。

1. Physical Layer (PHY)

在物理层(PHY)中,核心是1 Mbps自适应跳频高斯频移键控(GFSK)无线电,该无线电工作在未经许可的2.4 GHz工业、科学和医学(ISM)频段。

2. Link Layer (LL)

LL执行的许多计算在成本上都是昂贵的,因此通常在硬件中实现自动化功能,以避免使运行堆栈中所有软件层的中央处理器(CPU)过载,因此LL的实现是通过自定义组合实现的LL提供的功能通常包括前同步码,访问地址和空中协议成帧,CRC生成和验证,数据白化,随机数生成和AES加密,并且通常与协议栈的较高层保持隔离。隐藏这种复杂性及其实时要求的界面。
LL原则上控制设备的射频(RF)状态,并管理设备的连接方式,即设备与其他设备的连接方式。 BLE设备可以是主设备,从设备或两者,具体取决于用例和相应的要求。一个主节点可以连接到多个从节点,而一个从节点可以连接到多个主节点。通常,智能手机或平板电脑往往会充当主设备,而更小、更简单且受内存限制的设备(例如独立传感器)会充当从设备。设备只能处于以下五个状态之一:待机,通告,扫描,启动或连接,如图3所示:
图3:链路层状态
链路层定义了4种角色:
●Advertiser:发送广告包的设备。
●Scanner:扫描广告数据包的设备。
●Master:启动连接并在以后进行管理的设备。
●Slave:接受连接请求并遵循主机时序的设备。
从逻辑上讲,这些角色可以分为两对:Advertiser和Scanner(不在活动连接中时),
Master和Slave(在连接中时)。

3. Host Controller Interface – Controller side(主机控制器接口–控制方)

控制器侧的主机控制器接口(HCI)接口提供了通过标准化接口与主机进行通信的方式; 蓝牙规范将HCI定义为主机和控制器相互交互的一组命令和事件,以及数据包格式以及流控制和其他过程的一组规则。 此外,规范还定义了几种传输方式,每种传输方式都针对特定的物理传输方式(UART,USB,SDIO等)增强了HCI协议。

(二)Host(主机)

主机模块由一组层组成,每个层具有特定的角色和功能,这些层的协作使整个模块可操作。 如图2所示,这些层是逻辑链路控制和适配协议(L2CAP),属性协议(ATT),安全管理器(SM),最后是通用属性配置文件(GATT)和通用访问配置文件(GAP)。

1. Host Controller Interface – Host Side(主机控制器接口–主机方)

主机端的HCI接口提供了通过标准化接口与控制器通信的方式。与控制器端HCI相似,该层可以通过软件API或通过UART或SPI等硬件接口来实现。

2. Logical Link Control and Adaptation Protocol(逻辑链路控制和适配协议)

逻辑链路控制和适配协议(L2CAP)层向上层提供数据封装服务,从而允许使用数据传输进行逻辑端到端通信。从本质上讲,它充当协议多路复用器,该协议多路复用器从上层获取多个协议,并将其封装为标准BLE数据包格式,反之亦然。 L2CAP还负责封装的分段和重组。在此过程中,源自发送方上层的大数据包将装入BLE数据包的最大27字节有效负载大小。反向过程发生在接收端,在此,分段的较大的上层数据包由多个较小的BLE数据包重新组合,并向适当的上层实体向上游传输。
L2CAP层负责路由两个主要协议:属性协议(ATT)和安全管理器协议(SMP)。
此外,L2CAP可以创建自己的用户定义的通道来进行高通量数据传输,这一功能称为基于LE信用的流量控制模式。

3. Attribute Protocol(属性协议)

ATT层使BLE设备可以将某些数据(称为属性)提供给另一个BLE设备。 在ATT的上下文中,公开属性的设备称为服务器,而对这些属性感兴趣并使用它们的对等设备称为客户端。 设备的链路层状态(主设备或从设备)独立于设备的ATT角色。 例如,主设备可以是ATT服务器或ATT客户端,而从设备也可以是ATT服务器或ATT客户端。 设备也可能同时是ATT服务器和ATT客户端。
本质上,ATT是基于设备提供的属性的简单客户端/服务器无状态协议。客户端从服务器请求数据,服务器将数据发送到客户端。该协议是严格的,意味着在未决请求的情况下(即尚未收到针对已发出请求的响应),在接收到响应并进行处理之前,无法提交其他请求。在两个对等方同时充当客户端和服务器的情况下,这独立地适用于两个方向。
每个ATT服务都包含以属性形式组织的数据,每个属性都分配有一个16位的属性句柄,称为通用唯一标识符(UUID),一组权限以及最后一个值。
实际上,属性句柄仅仅是用于访问属性值的标识符。 UUID指定值中包含的数据的类型和性质。当客户端想要从服务读取属性值或向服务写入属性值时,客户端会使用属性句柄向服务器发出读取或写入请求。服务器将使用属性值或确认进行响应。在读取操作的情况下,由客户端根据属性的UUID解析值并了解数据类型。另一方面,在写操作期间,期望客户端提供以下数据:与属性类型一致的服务,如果不是这种情况,则服务器可以自由拒绝该操作。

4. Security Manager(安全管理)

安全管理器(SM)层定义了配对和密钥分发的手段,并为协议栈的其他层提供了功能,以安全地连接和交换与另一个BLE设备的数据。它包括一个协议和一系列安全算法,旨在为BLE协议栈提供生成和交换安全密钥的能力,以允许对等方通过加密链路安全地通信,以信任远程设备的身份。 如果需要可以隐藏公共蓝牙地址。

(三)Application(应用程序)

与所有其他类型的系统一样,应用程序位于最高层,并且负责包含与该应用程序实现的实际用例相关的所有内容的逻辑,用户界面和数据处理。 应用程序的体系结构高度依赖于每个特定的实现,并且在BLE中,它通常使用BLE配置文件提供的功能。

低功耗蓝牙协议栈的基本理解相关推荐

  1. java 协议栈_深入浅出讲解低功耗蓝牙(BLE)协议栈

    详解BLE连接建立过程 https://www.cnblogs.com/iini/p/8972635.html 详解BLE 空中包格式-兼BLE Link layer协议解析 https://www. ...

  2. 蓝牙:深入浅出低功耗蓝牙(BLE)协议栈

    深入浅出低功耗蓝牙(BLE)协议栈 BLE协议栈为什么要分层?怎么理解BLE"连接"?如果BLE协议只有ATT层没有GATT层会发生什么? 协议栈框架 一般而言,我们把某个协议的实 ...

  3. 低功耗蓝牙搜索广播的实现流流程介绍 /BLE scan flow ----- 蓝牙低功耗协议栈

    零. 概述 主要介绍下蓝牙协议栈(bluetooth stack)低功耗蓝牙搜索广播的流程以及协议栈的实现流程,BLE scan flow btsnoop以及流程在资料中的......\STM32_U ...

  4. 深入浅出低功耗蓝牙(BLE)协议栈

    深入浅出低功耗蓝牙(BLE)协议栈 BLE协议栈为什么要分层?怎么理解BLE"连接"?如果BLE协议只有ATT层没有GATT层会发生什么? 协议栈框架 一般而言,我们把某个协议的实 ...

  5. BLE广播流程介绍 蓝牙广播 低功耗蓝牙广播的实现流流程介绍 /BLE Advertising flow ----- 蓝牙低功耗协议栈

    零. 概述 主要介绍下蓝牙协议栈(bluetooth stack)低功耗蓝牙广播的流程以及协议栈的实现流程,BLE  Advertising flow btsnoop以及流程在资料中的......\S ...

  6. AliOS Things蓝牙协议栈及应用开发框架介绍

    摘要: AliOS Things从1.2.0版本开始支持蓝牙协议栈(BLE),及基于蓝牙协议栈的应用层开发框架.本文分为三部分对蓝牙组件进行介绍:蓝牙组件,蓝牙协议栈介绍及接口说明,和应用开发框架介绍 ...

  7. 蓝牙协议栈模组在linux ubuntu 跑蓝牙协议栈 --传统蓝牙搜索演示以及实现原理

    零. 概述 主要介绍下用Linux ubuntu虚拟机外接我们的蓝牙扩展版跑蓝牙协议栈的初始化以及搜索演示 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合 ...

  8. TI低功耗蓝牙(BLE)介绍

    TI低功耗蓝牙(BLE)介绍 本文档翻译和修改自参考资料:CC2540Bluetooth Low Energy Software Developer's Guide (Rev. B),部分图片直接引用 ...

  9. 【转载】传统蓝牙协议栈 串口协议SPP

    零. 概述 主要介绍下蓝牙协议栈(bluetooth stack) 串口协议(bluetooth SPP)Serial Port Profile 协议概念介绍. 一. 声明 本专栏文章我们会以连载的方 ...

最新文章

  1. 使用Pycharm给Python程序传递参数
  2. java 反射详解通俗易懂
  3. Redhat7 systemctl命令
  4. 怎么打开网卡rss_电脑任务栏右下角宽带图标提示网络电缆没插好怎么办?
  5. spark mllib源码分析之DecisionTree与GBDT
  6. html中的行内标签吗,HTML标签中行内元素和块级元素详解
  7. 动态瑜伽 静态瑜伽 初学者_瑜伽与编程有什么关系?
  8. pig---用户自定义函数(UDF)
  9. ASP脚本语言之vbscript用法
  10. 下班搜包被诉 苹果支付近3000万美元与加州门店员工和解
  11. OpenShift - 用CodeReady开发云原生应用(1)- 将可执行Quarkus应用部署到OpenShift
  12. android 5.1 内核版本号,最新的安卓5.1.1 ROOT教程(不需要刷第三方内核)
  13. Windows程序设计--起步
  14. webstorm软件使用汉化包
  15. Linux logviewer的功能,基于终端的日志工具logview
  16. word域转换html,word域代码转换html丢失解决办法.docx
  17. win10本地Docker搭建青龙面板
  18. SAP笔记MM (中文版学习)
  19. java 句柄无效_java.io.IOException: 句柄无效 异常是什么引起的
  20. TLV2333IDR的工作原理?

热门文章

  1. 利用二叉堆实现最小优先队列
  2. javac不是内部或外部命令,也不是可运行的程序怎么办?
  3. C++学习笔记(二)字符型变量、ASCII、转义字符、字符串型、布尔类型、数据输入、算术运算符、前后置递增减、赋值运算符、比较运算符、逻辑运算符
  4. 大量名片图片转excel表格文件怎么转?有什么好办法?
  5. python 遍历字典的item ,遍历字典的key 和 value
  6. 【Notion AI 功能试用】写作修改、润色、总结、翻译效果
  7. PHP - 异常/错误 - 学习/实践
  8. 《MATLAB 神经网络43个案例分析》:第30章 基于随机森林思想的组合分类器设计——乳腺癌诊断
  9. 第十篇:面向对象系列之三大特性(二)
  10. 2017年湖北一季度太阳能发电4.24亿千瓦时 增长185.61%