蓝牙低功耗(BLE)概述

 我来答
腾扬数码
2022-07-06 · TA获得超过2807个赞
知道小有建树答主
回答量:3679
采纳率:100%
帮助的人:195万
展开全部

Android 4.3(API Level 18)开始引入Bluetooth Low Energy(BLE,低功耗蓝牙)的核心功能并提供了相应的 API, 应用程序通过这些 API 扫描蓝牙设备、查询 services、读写设备的 characteristics(属性特征)等操作。

详细介绍 GATT 之前,需要了解 GAP(Generic Access Profile) ,它在 用来控制设备连接和广播 GAP 使你的设备被其他设备可见,并决定了你的设备是否可以或者怎样与合同设备进行交互 。例如 Beacon 设备就只是向外广播,不支持连接,小米手环就等设备就可以与中心设备连接。

GAP 给设备定义了若干角色,其中主要的两个是: 外围设备(Peripheral) 中心设备(Central)

在 GAP 中外围设备通过两种方式向外广播数据: Advertising Data Payload(广播数据) Scan Response Data Payload(扫描回复) ,每种数据最长可以包含 31 byte。

这里 广播数据是必需的 ,因为外设必需不停的向外广播,让中心设备知道它的存在。扫描回复是可选的,中心设备可以向外设请求扫描回复,这里包含一些设备额外的信息,例如设备的名字。

GAP 的广播工作流程如下图所示:

外围设备会设定一个广播间隔,每个广播间隔中,它会重新发送自己的广播数据,广播时间越长,越省电,同时也不太容易扫描到。

大部分情况下, 外设通过广播自己来让中心设备发现自己,并建立 GATT 连接,从而进行更多的数据交换。

也有些情况是不需要连接的,只要外设广播自己的数据即可。用这种方式主要目的是让外围设备,把自己的信息发送给多个中心设备。 因为基于 GATT 连接的方式的,只能是一个外设连接一个中心设备。 使用广播这种方式最典型的应用就是苹果的 iBeacon。广播工作模式下的网络拓扑图如下:

查看这篇博客

GATT 的全名是 Generic Attribute Profile,它定义两个 BLE 设备通过叫做 Service 和 Characteristic 的东西进行通信。GATT 就是使用了 ATT(Attribute Protocol)协议,ATT 协议把 Service, Characteristic以及对应的数据保存在一个查找表中,次查找表使用 16 bit ID 作为每一项的索引。

一旦两个设备建立起了连接,GATT 就开始起作用了,这也意味着,你必需完成前面的 GAP 协议。这里需要说明的是,GATT 连接,必需先经过 GAP 协议。实际上,我们在 Android 开发中,可以直接使用设备的 MAC 地址,发起连接,可以不经过扫描的步骤。这并不意味不需要经过 GAP,实际上在芯片级别已经给你做好了,蓝牙芯片发起连接,总是先扫描设备,扫描到了才会发起连接。

GATT 连接需要特别注意的是: GATT 连接是独占的。也就是一个 BLE 外设同时只能被一个中心设备连接 。一旦外设被连接,它就会马上停止广播,这样它就对其他设备不可见了。当设备断开,它又开始广播。

中心设备和外设需要双向通信的话,唯一的方式就是建立 GATT 连接。

下图展示了 GTT 连接网络拓扑结构。这里很清楚的显示, 一个外设只能连接一个中心设备,而一个中心设备可以连接多个外设。 Connected Topology一旦建立起了连接,通信就是双向的了,对比前面的 GAP 广播的网络拓扑, GAP 通信是单向的。如果你要让两个设备外设能通信,就只能通过中心设备中转。

GATT 通信的双方是 C/S 关系。 外设作为 GATT 服务端(Server),它维持了 ATT 的查找表以及 service 和 characteristic 的定义 。中心设备是 GATT 客户端(Client),它向 Server 发起请求。需要注意的是,所有的通信事件,都是由客户端(也叫主设备,Master)发起,并且接收服务端(也叫从设备,Slave)的响应。

一旦连接建立,外设将会给中心设备建议一个连接间隔(Connection Interval) ,这样,中心设备就会在每个连接间隔尝试去重新连接,检查是否有新的数据。但是,这个连接间隔只是一个建议,你的中心设备可能并不会严格按照这个间隔来执行,例如你的中心设备正在忙于连接其他的外设,或者中心设备资源太忙。

下图展示一个外设(GATT 服务端)和中心设备(GATT 客户端)之间的数据交换流程,可以看到的是,每次都是主设备发起请求:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式