BLE开发入门

来源:互联网 发布:c语言编写的交易程序 编辑:程序博客网 时间:2024/04/28 14:21

摘要:介绍BLE入门知识


什么是BLE

蓝牙低能耗(BLE)技术是低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的2.4GHz ISM射频频段。它从一开始就设计为超低功耗(ULP)无线技术。它利用许多智能手段最大限度地降低功耗。

鲁棒是Robust的音译,也就是健壮和强壮的意思。它是在异常和危险情况下系统生存的关键。

BLE技术的工作模式非常适合用于从微型无线传感器(每半秒交换一次数据)或使用完全异步通信的遥控器等其它外设传送数据。这些设备发送的数据量非常少(通常几个字节),而且发送次数也很少(例如每秒几次到每分钟一次,甚至更少)。

蓝牙低能耗架构共有两种芯片构成:单模芯片和双模芯片。

  • 双模芯片可以在目前使用标准蓝牙芯片的任何场合使用(手机、PC、个人导航设备(PND)或其它应用)。
  • 单模芯片可以用单节钮扣电池(如3V、220mAh的CR2032)工作很长时间(几个月甚至几年)。

蓝牙4.0包含BLE, BLE是蓝牙4.0中的单模模式。


超低功耗和信道

信道

蓝牙低能耗技术的三大特性成就了ULP性能,这三大特性分别是最大化的待机时间、快速连接和低峰值的发送/接收功耗。

无线“开启”的时间只要不是很短就会令电池寿命急剧降低,因此任何必需的发送或接收任务需要很快完成。被蓝牙低能耗技术用来最小化无线开启时间的第一个技巧是仅用3个“广告”信道搜索其它设备,或向寻求建立连接的设备宣告自身存在。相比之下,标准蓝牙技术使用了32个信道。

这意味着蓝牙低能耗技术扫描其它设备只需“开启”0.6至1.2ms时间,而标准蓝牙技术需要22.5ms时间来扫描它的32个信道。结果蓝牙低能耗技术定位其它无线设备所需的功耗要比标准蓝牙技术低10至20倍。

值得注意的是,使用3个广告信道是某种程度上的妥协:这是在频谱非常拥挤的部分对“开启”时间(对应于功耗)和鲁棒性的一种折衷(广告信道越少,另外一个无线设备在选用频率上广播的机会就越多,就越容易造成信号冲突)。不过该规范的设计师对于平衡这种妥协相当有信心——比如,他们选择的广告信道不会与Wi-Fi默认信道发生冲突(见图1)

一旦连接成功后,蓝牙低能耗技术就会切换到37个数据信道之一。在短暂的数据传送期间,无线信号将使用标准蓝牙技术倡导的自适应跳频(AFH)技术以伪随机的方式在信道间切换(虽然标准蓝牙技术使用79个数据信道)。


设备状态

BLE有六种设备状态

  • 待机状态(standby):设备没有传输和发送数据,并且没有连接到任何设备
  • 广播状态(Advertiser):周期性广播状态
  • 扫描状态(Scanner):主动寻找正在广播的设备
  • 发起链接状态(Initiator):主动向扫描设备发起连接。
  • 主设备(Master):作为主设备连接到其他设备。
  • 从设备(Slave):作为从设备连接到其他设备。

工作状态

BLE有五种工作状态

  • 准备(standby)
  • 广播(advertising)
  • 监听扫描(Scanning)
  • 发起连接(Initiating)
  • 已连接(Connected)

其状态的切换如下图:
状态图


设备类型

BLE有四种设备类型

  • Cnetral主机(常作为client端):如手机,PC
  • Peripheral从机(常作为Service端):如心率计,血糖计
  • Observer观察者
  • Broadcast广播者

连接过程

Peripheral开启广播–>Central扫描从机广播–>Peripheral接收到Central的扫描请求,Peripheral向Central发送扫描回应数据–>Central向Peripheral发起连接–>开始通信。


协议栈

协议定义一系列通信标准,通信双方需要共同按照此协议才能正常数据收发。协议栈是协议具体的实现,通俗的理解为用代码实现的函数库,以便开发使用。
BLE协议栈

  • 物理层(Physical Layer,PHY):1Mbps自适应跳频的GFSK射频,工作与免许可的2.4GHz ISM(工业、科学和医疗)频段。
  • 链路层(Link Layer,LL):用于控制设备的射频状态,设备将会处于五种状态之一,详见前面的设备状态
  • 主机控制接口层(Host Controller Interface,HCI):为主机和控制器之间提供标准通信接口。这一层可以是软件API或者硬件接口,如UART、SPI和USB等等。
  • 逻辑链路控制及自适应协议层(Logical Link Control and Adaptation Protocol,L2CAP):为上层提供数据封装服务,允许逻辑上的点对点数据通讯。
  • 安全管理层(Security Manager,SM):定义了配对和密钥分配方式,并为协议栈和其他层与另一个设备之间的安全连接和数据交换提供服务。
  • 属性协议层(Attribute Protocol,ATT):允许设备向另一设备展示特定的数据,称为“属性”。
  • 通用属性配置文件层(Generic Attribute Profile,GATT):定义了使用ATT的服务框架。GATT规定了配置文件(Profile)的结构。在BLE中,所有被Profile或者服务用到的数据都称为了”特性“,两个建立连接的设备之间的所有数据通讯都是通过GATT子程序处理。应用程序和Profiles直接使用GATT层。 BLE 中所有的数据通信都需要经过 GATT。GATT负责处理向上与应用打交道,其关键工作是把为检索工作提供合适的Profile结构,而Profile由检索关键词。(characteristics)组成。
  • 通用访问配置文件层(Generic Access Profile,GAP):负责处理设备访问模式和程序,包括设备发现、建立连接、终止连接、初始化安全角色和设备配置。GAP直接与应用程序或配置文件(Profiles)通信的接口,处理设备发现和连接相关服务。另外还处理安全特性的初始化。对上级,提供应用程序接口,对下级,管理各级职能部门,尤其是指示LL层控制室五种状态切换,指导保卫处做好机要工作。

数据包

BLE 可以设置 5、10、15、20Byte的数据包大小。

BLE 发送数据时通常是20 字节一个包,那么为什么是 20 字节呢?
协议栈规定,payload 最大 27,刨去 L2CAP 的头,4 个字节,剩下的就 23 个字节 MTU。ATT 层会用掉上 1 个字节的 op code, 2 个字节的 attribute handle,就剩下 20了。这剩下的 20 字节就是我们常说的发送的 20 字节的数据。

1 0
原创粉丝点击