蓝牙nRF51288系列之二 协议名词介绍

nRF51288蓝牙协议的分层为:应用层、主协议层、控制层

应用层:主要为各种应用:比如血压测量、心率测量、电池测量等等

主协议层:GAP、GATT、ATT、SMP、L2CAP

控制层:主机控制器(HCI)、链路层(LL)、物理层

当然这些只需要大概了解,初学者看起来比较抽象,并且不需要费劲去搜这些名词的意思,跟着我,去理解这些名词。

1、应用层就不多说了,就是在产品上利用呗,很简单的理解。

2、主协议层主要介绍GAP,GATT。

GAT全称为:Generic Access Profile,通用访问规范。GAP是应用层能够直接访问BLE协议栈(就是上面说的三层)的最底层,它包括管理广播(后面文章会介绍)和连接事件(后面文章会介绍)的有关参数。GAP模块代表了所有蓝牙设备的共用基础功能,如传输、协议或者应用规范所使用的模式和访问过程。

GAP的服务包括设备发现,连接方式,安全,认证,关联模型和服务发现等。我们会在后面专门写一篇文章进行介绍。

角色:为了创建和维持一个 BLE 连接,引入了“角色”这一概念。一个 BLE 设备不是集中器角色就是外围设备角色,这是根据是谁发起这个连接来确定的。集中器设备总是连接的发起者,而外围设备总是被连接者。集中器和外围设备的关系就像链路层中的主机和从机的概念。蓝牙核心规范还定义了观察者角色和广播者角色,观察者角色监听空中的事件,广播者角色只是广播信息而不接收信息。观察者角色和广播者角色都只广播而并不建立连接。

广播:集中器能够与外围设备建立连接,外围设备必须处于广播状态,它每经过一个时间间隔发送一次广播数据包,这个时间间隔称为广播间隔,它的范围是 20ms 到 10.24s。广播间隔影响建立连接的时间。集中器发送一个连接请求来发起连接之前,必须接收到一个广播数据包,外围设备发送一个广播数据包之后一小段时间内只监听连接请求。一个广播数据包最多能携带 31 字节的数据,它通常包含用户可读的名字、关于设备发送数据包的有关信息、用于表示此设备是否可被发现的标志等类似的标志。当集中器接收到广播数据包后,它可能发送请求更多数据包的请求,称为扫描回应,如果它被设置成主动扫描,外围设备将会发送一个扫描回应做为对集中器请求的回应,扫描回应最多可以携带 31 字节的数据。广播,包括扫描请求和扫描回应,出现在远离 WLAN 使用的 2.4G 频段之外的 3 个频率上,以防止被 WiFi 干扰。

扫描:扫描是集中器监听广播数据包和发送扫描请求的过程,它有 2 个定时参数需要特别注意:扫描窗口和扫描间隔。对于每一个扫描间隔,集中器扫描的时间等于一个扫描窗口,这就意味着如果扫描窗口等于扫描间隔,那么集中器将处于连续扫描之中。扫描窗口和扫描间隔之比为扫描占空比。

发起:如果集中器想建立一个连接,当扫描监听到广播数据包后它将采用相同的过程:当要发起连接时,集中器接收到一个广播数据包之后将会发送一个连接请求。

连接:集中器和外围设备第一次交换数据定义为连接状态。在一个连接状态中,集中器将会在一个特定定义的间隔从外围设备请求数据,这个间隔称为连接间隔,它由集中器决定并应用于连接,但是外围设备可以发送连接参数更新请求给集中器。根据蓝牙核心规范,连接间隔必须在 7.5ms 到 4s 之间。如果外围设备在一个时间帧内没有回应集中器的数据包,称为连接监管超时,连接被认为丢失。可以通过在每一个连接间隔中传输多个数据包以获得更高的数据吞吐量,每一个传输数据包最多可以携带 20 个字节的应用数据。但是如果电流消耗是重点,同时外围设备也没有数据要发送,它可以选择忽略一定数量的连接间隔,这个忽略连接间隔的数目称为从机延时(slave latency)。在一个连接中,除了广播信道,设备间在频带的所有信道中进行通信。当然对于应用层,这是完全透明的。

GATT全称为:Generic Attribute Profile,通用属性配置文件。GATT层是传输真正数据所在的层。包括了一个数据传输和存储框架以及其基本操作。GTTA 定义了两类角色:服务器(server)和客户端(client),GATT 角色无需和 GAP 角色绑定,但是可能由更高层的规范进行指定。

属性:一个属性包含句柄、UUID、值,句柄是属性在 GATT 表中的索引,在一个设备中每一个属性的句柄都是唯一的。UUID 包含属性表中数据类型的信息,它是理解属性表中的值的每一个字节的意义的关键信息。在一个 GATT 表中可能有许多属性,这些属性能可能有相同的 UUID。

特性:一个特性至少包含 2 个属性:一个属性用于声明,一个属性用于存放特性的值。所有通过 GATT 服务传输的数据必须映射成一系列的特性,可以把特性中的这些数据看成是一个个捆绑起来的数据,每个特性就是一个自我包容而独立的数据点。例如,如果几块数据总是一起变化,那么我们可以把它们集中在一个特性里。

描述符:任何在特性中的属性不是定义为属性值就是为描述符。描述符是一个额外的属性以提供更多特性的信息,它提供一个人类可识别的特性描述的实例。然而,有一个特别的描述符值得特别地提起:客户端特性配置描述符(Client Characteristic Configuration Descriptor,CCCD),这个描述符是给任何支持通知或指示功能的特性额外增加的。在 CCCD 中写入“1”使能通知功能,写入“2”使能指示功能,写入“0”同时禁止通知和指示功能。S110 SoftDevice 协议栈中,对任何使能了通知功能或是指示功能的特性,协议栈将自动加入这个类型的描述符

服务:一个服务包含一个或多个特性,这些特性是逻辑上相关的集合体。GATT 服务一般包含几块具有相关的功能,比如特定传感器的读取和设置,人机接口的输入输出。组织具有相关的特性到服务中既实用又有效,因为它使得逻辑上和用户数据上的边界变得更加清晰,同时它也有助于不同应用程序间代码的重用。GATT 基于蓝牙技术联盟(SIG)官方而设计,SIG 建议根据它们的规范设计自己的 profile。

Profile (数据配置文件):一个 profile 文件可以包含一个或者多个服务,一个 profile 文件包含需要的服务的信息或者为对等设备如何交互的配置文件的选项信息。设备的 GAP 和 GATT 的角色都可能在数据的交换过程中改变,因此,这个文件应该包含广播的种类、所使用的连接间隔、所需的安全等级等信息。需要注意的是一个 profile 中的属性表不能包含另一个属性表。

这些均是从网上粘贴过来的,看完之后,你会发现,在蓝牙协议上你会懂得不少。

©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页