BLE

2017/11/20

蓝牙4.0 BLE

一 概述

1. 无线网络数据传输协议对比

  1. 传统蓝牙,ZigBee,IEEE 802.11b工作在2.4GHz频段。
  2. ZigBee协议是一种短距离无线传感器网络与控制协议,传输速率低,主要用于传输控制信息,数据量相对小,适用于电池供电的系统。实现成本较低。
  3. 以下2个图是对无线传输协议的对比。

传输协议对比图 传统蓝牙,ZigBee, IEEE 802.11b对比图

2. 短距离无线网络分类

  1. 无线局域网WLANs——这是有限局域网的扩展。
  2. 无线个域网WPLANs——在POS(Personal Operating Space,以无线设备为中心半径)范围内提供一种高效、节能的无线通信方法。根据传输速率不同,分为三种:
    • HR-WPLANs —— HighRate WPLANs —— 802.15.3(通信协议)
    • MR-WPLANs —— MediumRate WPLANs —— BlueTooth
    • MR-WPLANs —— LowRate WPLANs —— 802.14.4
  3. 蓝牙4.0:将传统蓝牙、高速蓝牙和低功耗蓝牙三种规范合而为一。可以组合使用也可单独使用,核心是低功耗技术(Low Energy)。

2.1 蓝牙4.0BLE特点

  1. 高可靠性:传输过程中的内在不确定性,在射频、基带协议、链路管理协议中采用了可靠性措施,包括:差错检测和见证、进行数据编解码、差错控制、数据加噪等。使用自适应跳频技术,最少与奇他2.4GHz ISM频段无线电波的串扰。
  2. 低成本,低功耗
    • 两种部署方式:双模式和单模式。
    • 双模式中低功耗蓝牙集成在现有的经典蓝牙控制器中,或在现在经典蓝牙技术(2.1+EDR / 3.0+HS)芯片上增加低功耗堆栈,整体架构基本不变,成本增加。
    • 单模式面向高度集成、紧凑的设备,使用一个轻量级链接层(Link Layer)提供超低功耗的待机模式操作。
    • 低功耗设计:
      • 传统蓝牙待机耗电大的原因之一是采用了16——32个频道进行广播;低功耗蓝牙使用3个广播频道。传统蓝牙广播事射频的开启时间为22.5ms,低功耗蓝牙减少到了0.6~1.2ms。
      • 传统蓝牙 空闲状态;低功耗蓝牙 深度睡眠状态。深度睡眠状态下,主机(Host)长时间处于超低的负载循环(Duty Cycle)状态,只在需要运作时由控制器来启动。主机比控制器消耗的能源多。
  3. 快速启动,瞬间连接——蓝牙2.1启动连接需要6s, 蓝牙4.0需要3ms,几乎是瞬间连接。
  4. 传输距离提高:传统蓝牙传输距离 2~10ms,蓝牙4.0可达60~100m。
  5. 高安全—— 使用AES-128 CCM加密算法进行数据包加密和认证。

2.2 蓝牙4.0BLE协议

  1. 协议栈定义了GAP(Generic Access Profile)和GATT(Generic Attribute)两个配置文件。
  2. 协议栈中的GAP层负责设访问模式和进程,包括设备发现、建立连接、终止连接、初始化安全特性和设备配置。
  3. 协议栈中GATT层用于已连接的蓝牙设备之间的数据通信。

2.4 蓝牙4.0BLE通信信道

  1. 不同电波对应不同频谱。
  2. IEEE 802.15.4规定了27个信道:
    • 2.4GHz频段,有16个信道,信道通信速率为250kbps。(全球通用的ISM频段)
    • 915MHz频段,有10个信道,信道通信速率为40kbps。(北美)
    • 896MHz频段,有1个信道,信道通信速率为20kbps。(欧洲)

信道分布图

2.5 蓝牙4.0BLE拓扑结构图

  1. 星型网络拓扑。
  2. 广播组拓扑。

拓扑图

五 BLE协议栈

  1. 数据在协议栈里是如何流动的。
  2. 如何调用协议栈提供的发送函数。
  3. 如何使用协议栈进行数据的接收。
  4. 如何理解协议栈。
  5. 协议栈分层结构,每层的功能是什么。
  6. 如何利用协议栈提供的函数来实现基本的低功耗应用程序开发。
  7. 系统硬件对协议提供了哪些支持。
  8. 协议栈和协议是什么关系。

1. 协议栈

  1. 协议是定义通信标准,通信双方需按照这一标准进行正常的数据收发。
  2. 协议栈是协议的具体实现形式,通俗讲就是用代码实现的函数库。

1.1 协议栈的构成

  1. 包含2部分:主机和控制器。
  2. 分层思想:
    • 控制器包括:物理层,链路层,主机控制接口层。
    • 主机包括:逻辑链路控制及自适应协议层,安全管理层,属性协议层,通用访问配置文件层,通用属性配置文件层。
    • 上层调用下层提供的函数来实现需要的功能。
  3. 各层介绍
    • 物理层:1Mbps自适应跳频的GFSK射频,工作于免许可证的2.4GHz ISM(工业、科学和医疗)频段。
    • 链路层:控制设备的射频状态,设备将会处于五种状态之一:等待、广告、扫描、初始化、连接。发起连接的设备称为主机,接受连接请求的设备称为从机。
    • 主机控制接口层:为主机和控制器之间提供标准通信接口。这一层是软件API或硬件接口如UART、SPI、USB。
    • 逻辑链路控制及自适应层:为生层提供数据封装服务,允许逻辑上点对点数据通信。
    • 安全管理层:定义了配对和秘钥分配防晒衣,并为协议栈其他层与另一设备之间的安全连接和数据交换提供服务。
    • 属性协议层(Attribute protocol):允许主机向从机展示一块特定的数据,成为“属性”。主机和从机可能是ATT Server或Client。
    • 通用属性配置文件层(Generic Attribute profile):定义了ATT服务框架。GATT规定了配置文件(profile)的结构。

协议栈结构图

1.2 协议栈开发平台配置

2. OSAL(Operating System Abstraction Layer)

  1. 蓝牙4.0BLE协议栈内加入了OSAL,为了管理协议规定的函数集。BLE协议栈、profiles以及所有应用程序都是建立在OSAL上。

2.1 基础

  1. 资源Resource
  2. 共享资源 Shared Resource
  3. 任务 Task —— 即线程
  4. 多任务运行 Multi-task Running:CPU调度
  5. 内核 Kernel:为线程分配CPU时间,任务调度,任务间通信、切换等。
  6. 互斥 Mutual Exclusion——多任务通信的最常用办法共享数据结构
    • 保护共享资源常用的办法:关中断,使用测试并置位指令(T&S指令),禁止任务切换,使用信号量。
    • 蓝牙4.0BLE协议栈内嵌OS常用的是关中断。
  7. 消息队列 Message Queue——任务间传递消息,即同步的信息。
    • 任务注册、初始化和启动;
    • 任务间的同步、互斥;
    • 中断处理;
    • 存储器分配和管理;
    • 提供定时器功能。

2.2 运行原理

  1. OSAL产生:需要一个机制实现任务切换、同步与互斥。支持多任务运行的系统资源分配机制。
  2. 事件与任务的事件处理函数

二 IAR集成

三 CC2540开发板硬件资源

四 基础实验

六 BLE无线网络技术

七 PC端调试开发工具

  1. https://www.jianshu.com/p/6637369d02e7)

文内导航