蓝牙4.0 BLE
一 概述
1. 无线网络数据传输协议对比
- 传统蓝牙,ZigBee,IEEE 802.11b工作在2.4GHz频段。
- ZigBee协议是一种短距离无线传感器网络与控制协议,传输速率低,主要用于传输控制信息,数据量相对小,适用于电池供电的系统。实现成本较低。
- 以下2个图是对无线传输协议的对比。
2. 短距离无线网络分类
- 无线局域网WLANs——这是有限局域网的扩展。
- 无线个域网WPLANs——在POS(Personal Operating Space,以无线设备为中心半径)范围内提供一种高效、节能的无线通信方法。根据传输速率不同,分为三种:
- HR-WPLANs —— HighRate WPLANs —— 802.15.3(通信协议)
- MR-WPLANs —— MediumRate WPLANs —— BlueTooth
- MR-WPLANs —— LowRate WPLANs —— 802.14.4
- 蓝牙4.0:将传统蓝牙、高速蓝牙和低功耗蓝牙三种规范合而为一。可以组合使用也可单独使用,核心是低功耗技术(Low Energy)。
2.1 蓝牙4.0BLE特点
- 高可靠性:传输过程中的内在不确定性,在射频、基带协议、链路管理协议中采用了可靠性措施,包括:差错检测和见证、进行数据编解码、差错控制、数据加噪等。使用自适应跳频技术,最少与奇他2.4GHz ISM频段无线电波的串扰。
- 低成本,低功耗
- 两种部署方式:双模式和单模式。
双模式
中低功耗蓝牙集成在现有的经典蓝牙控制器中,或在现在经典蓝牙技术(2.1+EDR / 3.0+HS)芯片上增加低功耗堆栈,整体架构基本不变,成本增加。单模式
面向高度集成、紧凑的设备,使用一个轻量级链接层(Link Layer)提供超低功耗的待机模式操作。- 低功耗设计:
- 传统蓝牙待机耗电大的原因之一是采用了16——32个频道进行广播;低功耗蓝牙使用3个广播频道。传统蓝牙广播事射频的开启时间为22.5ms,低功耗蓝牙减少到了0.6~1.2ms。
- 传统蓝牙 空闲状态;低功耗蓝牙 深度睡眠状态。深度睡眠状态下,主机(Host)长时间处于超低的负载循环(Duty Cycle)状态,只在需要运作时由控制器来启动。主机比控制器消耗的能源多。
- 快速启动,瞬间连接——蓝牙2.1启动连接需要6s, 蓝牙4.0需要3ms,几乎是瞬间连接。
- 传输距离提高:传统蓝牙传输距离 2~10ms,蓝牙4.0可达60~100m。
- 高安全—— 使用AES-128 CCM加密算法进行数据包加密和认证。
2.2 蓝牙4.0BLE协议
- 协议栈定义了GAP(Generic Access Profile)和GATT(Generic Attribute)两个配置文件。
- 协议栈中的GAP层负责设访问模式和进程,包括设备发现、建立连接、终止连接、初始化安全特性和设备配置。
- 协议栈中GATT层用于已连接的蓝牙设备之间的数据通信。
2.4 蓝牙4.0BLE通信信道
- 不同电波对应不同频谱。
- IEEE 802.15.4规定了27个信道:
- 2.4GHz频段,有16个信道,信道通信速率为250kbps。(全球通用的ISM频段)
- 915MHz频段,有10个信道,信道通信速率为40kbps。(北美)
- 896MHz频段,有1个信道,信道通信速率为20kbps。(欧洲)
2.5 蓝牙4.0BLE拓扑结构图
- 星型网络拓扑。
- 广播组拓扑。
五 BLE协议栈
- 数据在协议栈里是如何流动的。
- 如何调用协议栈提供的发送函数。
- 如何使用协议栈进行数据的接收。
- 如何理解协议栈。
- 协议栈分层结构,每层的功能是什么。
- 如何利用协议栈提供的函数来实现基本的低功耗应用程序开发。
- 系统硬件对协议提供了哪些支持。
- 协议栈和协议是什么关系。
1. 协议栈
- 协议是定义通信标准,通信双方需按照这一标准进行正常的数据收发。
- 协议栈是协议的具体实现形式,通俗讲就是用代码实现的函数库。
1.1 协议栈的构成
- 包含2部分:主机和控制器。
- 分层思想:
- 控制器包括:物理层,链路层,主机控制接口层。
- 主机包括:逻辑链路控制及自适应协议层,安全管理层,属性协议层,通用访问配置文件层,通用属性配置文件层。
- 上层调用下层提供的函数来实现需要的功能。
- 各层介绍
- 物理层: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)
- 蓝牙4.0BLE协议栈内加入了OSAL,为了管理协议规定的函数集。BLE协议栈、profiles以及所有应用程序都是建立在OSAL上。
2.1 基础
- 资源Resource
- 共享资源 Shared Resource
- 任务 Task —— 即线程
- 多任务运行 Multi-task Running:CPU调度
- 内核 Kernel:为线程分配CPU时间,任务调度,任务间通信、切换等。
- 互斥 Mutual Exclusion——多任务通信的最常用办法共享数据结构。
- 保护共享资源常用的办法:关中断,使用测试并置位指令(T&S指令),禁止任务切换,使用信号量。
- 蓝牙4.0BLE协议栈内嵌OS常用的是关中断。
- 消息队列 Message Queue——任务间传递消息,即同步的信息。
- 任务注册、初始化和启动;
- 任务间的同步、互斥;
- 中断处理;
- 存储器分配和管理;
- 提供定时器功能。
2.2 运行原理
- OSAL产生:需要一个机制实现任务切换、同步与互斥。支持多任务运行的系统资源分配机制。
- 事件与任务的事件处理函数
二 IAR集成
三 CC2540开发板硬件资源
四 基础实验
六 BLE无线网络技术
七 PC端调试开发工具
- https://www.jianshu.com/p/6637369d02e7)