欢迎光临
奶茶妹都爱看的网站!

beacon间隔什么意思(间隔 是什么意思)

  蓝牙BLE(Bluetooth Low Energy),又称 Bluetooth Smart,是由蓝牙 SIG 提供的一个低功耗无线标准,其工作频带为2.4GHz ISM。下图展示了BLE 协议栈架构。

  BLE 协议栈可分为以下三部分:

  ▪ 控制器:它是一个物理器件,用于编码数据包,并把该数据包作为无线信号进行传输。作为接收端使用时,控制器对无线信号进行解码,并重新构建数据包。

  ▪ 主机:包括各种协议和配置文件(安全管理器、属性协议等),用于管理两个或多个器件间相互通信的方式。

  ▪ 应用:指的是一个使用场合,其通过使用软件协议栈和控制器执行特定功能。

  下面各节是对 BLE 协议栈中各层的简介,并使用了标准的心率和电池服务作为示例。

  1. 物理层(PHY)

  蓝牙BLE物理层使用了高斯频移键控(GFSK)调制方式在2.4GHz ISM 频带上发送和接收数据,数据速率为 1 Mbps。BLE 物理层将 ISM 频带分为 40个 RF 通道(通道间隔为 2 MHz),其中有37个数据通道,剩下为3个广播通道。

  2. 链路层(LL)

  链路层通过执行关键流程来建立一个可靠的物理链路(通过使用确认和基于流控的架构),并用于增强BLE协议安全性和降低功耗。下面列出的是链路层的几项功能:

  ▪ 广播、扫描、创建和保持连接,用以建立物理链路。

  ▪ 24 位CRC和128位AES加密,用于执行稳定安全的数据交换。

  ▪ 为低功耗操作创建快速连接和低占空比广播。

  ▪ 自适应跳频(AFH),它改变了用于数据包传输的通信通道,从而降低了其他器件的干扰。

  在链路层可定义两部分内容:

  ▪ 主设备:以智能手机为代表。

  ▪ 从设备:以心率监视设备为代表。

  链路层从设备将它的存在信息广播给另一个链路层主设备,该信息中可带少量自定义负载数据。链路层主设备会接收广播数据包,然后根据具体应用的要求选择需要连接的从设备。在心率监示器的应用中,心率监示器作为从设备使用,它将数据发送给作为主设备的智能手机。这时,智能手机APP将显示其接收到的心率数据。

  一般蓝牙BLE器件的硬件部分只执行链路层中对时间要求严格并且处理器密集型的任务,如广播、CRC以及AES加密,而链路层控制操作(如进入广播状态和启动加密)都是通过软件固件实现的。

  下图展示的是蓝牙BLE链路层数据包的结构以及链路层数据包中各字段的大小。链路层数据包将所有上层数据保存在其负载域内。它具有一个 4 字节的访问地址,可用于识别物理链路上进行的通信,并会忽略正在同一个射频通道中运行的相邻蓝牙BLE器件的数据包。其中,24位CRC校验保证了数据的可靠无误。

  3. 主机控制接口(HCI)

  HCI是主机与控制器间的标准定义接口。通过它,主机和控制器能够以不同的物理传输方式(如USB或UART)交换命令、数据和事件等信息。该层仅在控制器和主机为不同的器件时才需要进行真正的物理传输。而对于SoC器件,单芯片集成主机和控制器,HCI仅作为一个固件协议层用于控制器和主机间信息和事件的传输。

  4. 逻辑链路控制及适配协议(L2CAP)

  L2CAP为上层协议提供了协议复用、分段和重组服务。分段功能会将接收到的来自上层的数据包分为链路层可传输的更小的数据包,而重组功能会将接收到的来自链路层的小数据包结合成一个有意义的上层数据包。L2CAP层为属性协议(ATT)、安全管理器(SM)和 L2CAP控制提供三个协议通道,如下图所示。蓝牙4.2通过这些协议通道下的L2CAP所提供的定向连接进行直接的数据通信。

  5. 安全管理器(SM)

  SM 层定义了用于配对、加密和秘钥分配的方法。

  ▪ 配对是激活安全校验的过程。在该过程中,会验证两个器件,对其链接进行加密,然后交换加密密钥。这样可以通过BLE接口安全交换数据而不会被射频通道上的无线监听器窃听。

  ▪ 绑定是一个过程,其中密钥和识别信息在配对过程中被交换和保存。器件绑定完毕后,重新连接这些器件时不需要再次进行配对过程。

  蓝牙BLE使用了128位AES对数据进行加解密。

  6. 安全管理器(SM)

  SM 层定义了用于配对、加密和秘钥分配的方法。

  ▪ 配对是激活安全校验的过程。在该过程中,会验证两个器件,对其链接进行加密,然后交换加密密钥。这样可以通过BLE接口安全交换数据而不会被射频通道上的无线监听器窃听。

  ▪ 绑定是一个过程,其中密钥和识别信息在配对过程中被交换和保存。器件绑定完毕后,重新连接这些器件时不需要再次进行配对过程。

  蓝牙BLE使用了128位AES对数据进行加解密。

  7. 属性协议(ATT)/通用属性配置文件(GATT)

  为了了解ATT和GATT层,首先应该了解蓝牙BLE中GATT的两种使用场景:

  ▪ GATT服务器:指包含数据或信息的设备。它接收GATT客户端设备的请求,并提供数据进行响应。例如,心率监示器的GATT服务器包含心率信息,BLE HID 键盘的GATT服务器包含用户按键信息。

  ▪ GATT客户端:指向GATT服务器发送请求和/或接收数据的设备。例如,智能手机是接收心率服务器心率信息的GATT客户端,手提电脑是接收BLE键盘按键信息的GATT客户端。

  ATT构成了BLE通信的基础,其规定了在BLE中的最小数据存储单位,而 GATT规范则定义了如何用特性值和描述符表示一个数据,如何把相似的数据聚合成服务 (Service),以及如何发现对端设备拥有哪些服务和数据。该协议使得GATT客户端能够在GATT服务器中找到数据和属性并访问它。

  这里,属性包含的是ATT/GATT内的基本数据,它包含了以下内容:

  ▪ 属性句柄:一个16位的地址,用于寻址和访问某项属性。正如我们可以使⽤内存地址查找内存中的内容一样,ATT属性的句柄也可以协助我们找到相应的属性,例如第一个属性的句柄是0x0001,第二个属性的句柄是0x0002,以此类推,最大可以到 0xFFFF。

  ▪ 属性类型:用于指定在某项属性中储存的数据类型,该类型是应用层面的类型,而不是存储长度层面(比如整形、字符型或者浮点型)的类型。每个数据有自己需要代表的意思,例如表示温度、发射功率、电池等等各种各样的信息。蓝牙组织 (Bluetooth SIG)对常用的一些数据类型进行了归类,赋予不同的数据类型不同的标识码 (UUID)。例如0x2A09表示电池信息,0x2A6E表示温度信息。UUID可以是16比特的(16-bit UUID),也可以是128比特的(128-bit UUID)。

  ▪ 属性值:属性值是每个属性真正要承载的信息,其他3个元素都是为了让对方能够更好地获取属性值。有些属性的长度是固定的,例如电池属性(Battery Level)的长度只有1个字节,因为需要表示的数据仅有0~100%,而1个字节足以表示1~100的范围;而有些属性的长度是可变的,例如基于 BLE 实现的透传模块。

  ▪ 属性许可:每个属性对各自的属性值有相应的访问限制,比如有些属性是可读的、有些是可写的、有些是可读又可写的等等。拥有数据的一方可以通过属性许可,控制本地数据的可读写属性。

  下图展示的是一个器件名称属性结构示例。

  (1) 属性层次结构

  由于在某些时候一个数据可能并不只是单纯的数值,还会带有一些额外的信息:比如这个数据的单位是什么?是重量单位千克kg、温度单位摄氏度℃,还是其他单位;比如希望具体告知对方这个数值的名称,例如同为温度属性UUID下,希望告知对方该数据表示“主卧温度”,另一个数据表示“客厅温度”;比如在表示230000、460000等大数据时,可以增加指数信息,告知对方该数据的指数是10^4,这样仅需在空中传递23、46 即可。

  上述内容仅为清楚描述一个数据众多需求中的几个例子,实际应用中还可能出现其他以各种方式表达数据的需求。在此背景下,GATT规范引进了描述符的概念,每种描述符可以表达一种意思,用户可使用描述符,描述数据的额外信息。必须说明的是,每个数据和描述符并非一一对应,即一个复杂的数据可以拥有多个描述符,而一个简单的数据可以没有任何描述符。数据本身的属性值及其可能携带的描述符,构成了特性的概念。

  ▪ 特性(Characteristic):显示系统信息或有意义的数据的属性集。一个特性包括以下各属性:

  特性声明:其定义了一个特性的开始。

  特性值:其保存了实际数据。

  特性描述符:其是可选属性,提供了特性值的其他信息。

  “电池电量”是电池服务(BAS)中的一个特性示例,它以百分比的形式显示电池电量。

  下图展示的是一个特性结构,并以电池电量特性进行说明展示。

  特性的第一部分是特性声明(它表示特性的开始),例如上图中的电池电量指示特性声明。

  后面是实际的特性值或实际数据,在电池电量特性示例中表示当前电池的电量。电池电量按全量程的百分比形式显示,如“65”、“90”等。

  特性描述符提供了额外信息,用于描述特性值的意义。例如,电池电量的特性描述符指明电池电量被表示为一个百分比值。因此,读取“90”时,客户端会将其理解为90%,而不是90 mV或90 mAh。同样,有效范围特性描述符(未在上图中显示)表示电池电量的范围为0至100%。

  通常,一个客户端特性配置描述符(CCCD)也可作为特性描述符使用,这样通过GATT客户端可以配置GATT服务器的特性行为。当GATT客户端将0x01值写入到某个特性的CCCD内时,便能够使GATT服务器发送异步通知(将在下一部分进行描述)。在电池电量特性中,将0x01值写入到电池电量CCCD内会使电池服务定期通知它的电池电量或电池电量值发生的所有变化。

  蓝牙BLE协议中会把一些常用的功能定义成一个个的服务(Service),例如把电池相关的特性和行为定义成电池服务(Battery Service),把心率测试相关的特性和行为定义成心跳服务(Heart Rate Service),把体重测试相关的特性和行为定义成体重服务(Weight Scale Service)。

  ▪ 服务(Service):其定义了由GATT服务器所执行的功能,是一个特性集。其也可能包含其他服务。服务用于建立相关数据组并提供数据的层次结构。下面将以心率服务(HRS)为例进行说明。

  服务可分为两种类型:主要服务或辅助服务。主要服务显示了器件的主要功能,而辅助服务则提供了额外功能。例如,在心率监示器中,心率服务是主要服务,电池服务是辅助服务。

  一个服务还可以包含 GATT 服务器上存在的其他服务。所包含的全部服务组成新服务的一部分。

  蓝牙BLE中的“配置文件”(Profile)指的是一个服务集和这些服务共同执行某个特定终端应用时的行为。心率配置文件(HRP)是BLE配置文件的一个示例,该BLE配置文件定义了创建心率监示器所需要的所有服务。

  下图展示的是属性数据的层次结构,该数据层次结构使用了这里所定义的属性、特性、服务和配置文件。

  (2) 属性操作

  通过以下五种基本方法,能够访问前面所定义的属性:

  ▪ 读取请求:GATT客户端将该请求发送给GATT服务器以读取属性值。对于所有请求,GATT服务器会向GATT客户端回复一个响应。例如智能手机读取心率监示器的电池电量。

  ▪ 写入请求(Write Request):GATT客户端向GATT服务器发送该请求以写入一个属性值。GATT服务器会向GATT客户端回复响应,以表示是否成功写入了该值。例如智能手机会将数值0x01写入到表示电池电量特性的CCCD内,以使能通电量通知。

  ▪ 写入命令(Write Command):GATT客户端向GATT服务器发送该命令以写入一个属性值。对于该命令,GATT服务器不会回复任何响应。例如,BLE即时警报服务(IAS)中的IAS定位器(例如智能手机)使用写命令触发目标器件(例如密钥卡)上的警报(打开 LED、使蜂鸣器报鸣、驱动振动电机等)。

  ▪ 通知(Notification):GATT服务器将其发送给GATT客户端,从而通知属性新值。GATT客户端不会对一个通知回复任何响应。例如,将数值0x01写入到心率监示器的 CCCD 内时,该心率监示器会向智能手机发送心率测量通知。

  ▪ 指示(Indication):GATT服务器负责发送该类型的信息。GATT客户端始终会确认该信息。例如,BLE健康温度计服务(HTS)使用各种指示可靠地向健康温度计收集器(如智能手机)发送所测量的温度值。

  在了解了属性的层次架构和操作方法后,下面以心率监测设备为例展示GATT层上的客户端-服务器架构。该心率监示器提供了多项服务(HRS、BAS和器件信息服务)。每项服务都包含一个或多个带有特性值和描述符的特性,如下图所示。

beacon间隔什么意思(间隔 是什么意思)

  在链路层级别建立BLE连接后,GATT客户端(最初并不了解已连接的BLE器件)会启动一个被称为“服务发现”的过程。作为服务发现过程的一部分,GATT 客户端会向GATT服务器发送多个请求,从而获取GATT服务器中包含了所有可用服务、特性以及属性的列表。服务发现过程完成后,GATT客户端将具有所需信息,从而通过使用前面章节所介绍的属性操作来修改或读取GATT服务器所具有的信息。

  8. 通用访问配置文件(GAP)

  GAP层提供了设备特定的信息,如设备地址、设备名称以及发现、连接、绑定的各种方法。配置文件(Profile)定义了一个设备的发现和连接方法、可用服务的列表,以及服务的使用方式。

  GAP可以按照下面四种方式之一进行操作:

  ▪ 广播员(Advertiser/Broadcaster):其作为一个发送器,用于发送数据。该功能不能实现BLE连接和进行数据交换(无请求/响应操作),它的工作原理类似于一个广播电台:它会不断发送数据,却无需关心是否有人收听,它进行的是单向数据通信。信标(Beacon)是GAP广播员的典型示例,它会不断播放信息而无需任何响应。

  ▪ 观察员(Observer):作为一个“听众”,它会扫描广播,但不会被连接到广播的设备。观察员角色与广播员角色完全相反,它的工作原理类似于一个无线收音机,可以一直收听信息而不会向信息源发送任何响应。智能手机中可连续监听各种信标的应用便是一个GAP观察器的典型示例。

  ▪ 外设(Peripheral):其起着广播作用,使设备能够连接至GAP中心。当广播者接受了观察者发来的连接请求后就会进入这种角色。当设备进入了这种角色之后,将会作为从设备 (Slave) 在链路中进行通信。例如,心率传感器会将所测量的心率报告给远程设备,使之作为一个GAP外设进行操作。

  ▪ 中心(Central):当观察者主动进行初始化,并建立一个物理链路时就会进入这种角色。其作为GAP使用,用于扫描广播和启动同外设间的连接。建立与外设的连接后,该GAP作为主设备(Master)运行。例如,智能手机作为GAP中心接收心率传感器外设的心率测量数据。

  上图展示的是一个通用蓝牙BLE系统,其中,开发套件作为外设,智能手机作为中心设备。该图还说明了各BLE协议层间的交互以及它们在中心设备和外设中所起的作用。

  上图展示了另一个示例,带有心率APP的智能手机作为中心设备,心率传感器作为外设。监示心率的设备将执行心率传感器的配置文件,而接收数据的智能手机会执行心率收集器的配置文件。

  在上述示例中,心率传感器配置文件实现了两项标准的服务。第一项是心率服务,它包含三项功能,分别为心率测量功能、身体感应位置功能和心率控制点功能。第二项是设备信息服务。在链路层上,心率测量器件作为从设备,智能手机作为主设备。

  点关注,不迷路,关注公众号: eeemaker小王子 获取更多

赞(0)
未经允许不得转载:学奶茶 » beacon间隔什么意思(间隔 是什么意思)