蓝牙BLE之系统学习

Posted while(1)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝牙BLE之系统学习相关的知识,希望对你有一定的参考价值。

参考文章:

  1. 蜗蜗科技

1 蓝牙BLE简介

蓝牙BLE英文为Bluetooh Low Energy,即低功耗蓝牙。

2 蓝牙BLE概述

2.1 ISM Band 2.4GMHz

下图是对Bluetooth Core的一个概述,从RF的Physical Channel,到Baseband的Physical Link、Logical Link、LMP、L2CAP等概念,都有一些粗略的介绍。

3 蓝牙BLE协议架构


如上图所示,BLE的协议可分为Bluetooth Application和Bluetooth Core两大部分,而Bluetooth Core又包含BLE Controller和BLE Host两部分。

3.1 Physical Layer

任何一个通信系统,首先要确定的就是通信介质(物理通道,Physical Channel)。在BLE协议中,“通信介质”的定义是由Physical Layer 负责。 在Physical Layer 中,BLE物理信道RF使用2.4GHz ISM(Industrial Scientific Medical) 频段,频率范围是2.400-2.4835 GHz。 其信道划分频点分别是‘f=2402+k*2 MHz, k=0, … ,39’,带宽为2MHz”的40个RF Channel。

3.2 Link Layer

在Physical Layer中定义了通信所需的物理通道,即40个RF Channel(后面统一使用Physical Channel指代)。至此,Link Layer主要功能是在这些Physical Channel上收发数据,与此同时,不可避免的需要控制RF收发相关的参数。因此Link Layer 还需解决如下问题:

  • Physical Layer仅仅提供了有限的40个Physical Channel,而BLE中参与通信的实体的数量,肯定不是这个数量级。Link Layer需要解决Physical Channel的共享问题;

  • 通信是两个实体之间的事情,对这两个实体来说,它们希望看到一条为自己独享的传输通道(就是我们所熟悉的逻辑链路,Logical Link)。这也是Link Layer需要解决的;

  • Physical Channel是不可靠的,任何数据传输都可能由于干扰等问题二损毁、丢失,这对有些应用来说,是接受不了的。因此Link Layer需要提供校验、重传等机制,确保数据传输的可靠性;

  • ……

3.2.1 Physical Channel 的共享

BLE系统只有有限的40个Physical Channel,怎么容纳多个通信实体呢?其解决方法如下,Link Layer将BLE的通信场景分为两类:

  • 数据量比较少、发送不频繁、对时延不是很敏感的场景
    例如一个传感器节点(如温度传感器),需要定时(如1s)向处理中心发送传感器数据(如温度)。 针对这种场景,BLE的Link Layer采取的处理方式是广播通信: 从40个Physical Channel中选取3个,作为广播通道(advertising channel),在广播通道上,任何参与者都可以随意收发数据,且共享同一个逻辑传输通道(广播通道)。当然该方法存在较多的问题,如不可靠、不高效、不安全等。
  • 数据量较大、发送频率较高、对时延较敏感的场景
    这种场景下,BLE的Link Layer会从剩余的37个Physical Channel中,选取一个,为这种场景里面的通信双方建立单独的通道(data channel),这就是 连接(connection) 的过程。同时,为了增加容量,增大抗干扰能力,连接不会长期使用一个固定的Physical Channel,而是在多个Channel(如37个)之间随机但有规律的切换,这就是BLE的跳频(Hopping)技术。

3.2.2 状态(state)和角色(role)的定义

基于上面“3.2.1 Physical Channel 的共享”小节的思路,BLE协议在Link Layer抽象出5种状态:

  • Standby State

  • Advertising State

  • Scanning State

  • Initiating State

  • Connection State
    注1:从横向看,协议的每个层次(如这里的Link Layer)都可以当做可相互通信的实体。这里的状态,就是指这每一层实体的状态。因此,在协议的多个层次上,都可能有状态定义,甚至名字也一样,我们阅读协议栈的时候,一定要留意,不要被绕晕了。

以上是关于蓝牙BLE之系统学习的主要内容,如果未能解决你的问题,请参考以下文章

蓝牙BLE之DA1469x的应用

Android BLE与终端通信——Google API BLE4.0低功耗蓝牙文档解读之案例初探

实战BLE蓝牙之数据收发

蓝牙协议分析(11)_BLE安全机制之SM

微信小程序之蓝牙 BLE 踩坑记录

Android BLE低功耗蓝牙开发极简系列(二)之读写操作