CC2541的BLE协议栈构成
协议定义的是一系列的通信标准, 通信双方需要共同按照这一标准进行正常的数据收发; 协议栈是协议的具体实现形式, 就是用代码实现的函数库, 以便于开发人员调用。
BLE 协议栈将各个层定义的协议都集合在一起, 以函数库的形式实现, 并给用户提供一些应用层 API, 供用户调用。
协议栈的每个例程都不是单独存在的, 蓝牙是为了能够通信, 想要通信就必须遵守一定的规则, Profile 就可以理解为相互约定的规则, 因为每个协议栈demo 都 会 有 一 个 Profile 与 之 对应, 例如SimpleBLExxx 对应的就是simpleGATTprofile, 大多数 profile 都是蓝牙组织 SIG 规定好的, 但是, 如果我们的项目不涉及到跟第三方的设备进行互联, 那么我 们 完 全 可 以 自 定 义 profile , 例 如 , TI 的 SimpleBLEPeripheral 从 机 和SimpleBLECentral主机工程, 就是自定义的profile , 0xfff1~0xfff5。
一、BLE 协议栈的构成
协议栈的实现方式采用分层的思想, 控制器部分包括: 物理层、 链路层, 控制接口层,主机部分包括: 裸机链路控制及自适应协议层、 安全管理层、 属性协议层、 通用访问配置文件层(GAP), 通用属性配置文件层(GATT)。 BLE 协议的构成如下图所示:
1.1、PHY层
物理层(PHY) RF 规格特性:
运行在 2.4GHz ISM band (此频段主要是开放给工业、 科学、 医学三个主要机构使用, 属于Free License, 无需授权许可, 只需要遵守一定的发射功率(一般低于1W), 并且不要对其它频段造成干扰即可)
GFSK 调制方式(高斯频移键控)
40 频道 2MHz 的通道间隙
3 个固定的广播通道
37 个自适应自动调频数据通道
1.2、LL 层
RF 控制层, 控制芯片工作在 standby(准备)、 advertising(广播)、 scanning(监听/扫描), initiating(发起连接)、 connected(已连接) 这五个状态中的一种。 五种状态的切换描述为: advertising(广播) 不需要连接就可以发送数据(告诉所有人, 我来了), scanning(监听/扫描) 来自广播的数据, initiator(发起人) 将携带 connection request(连接请求) 来响应广播者, 如果 advertiser(广播者) 同意该请求, 那么广播这和发起者都会进入已连接状态, 发起连接的设备变为 master(主机), 接收连接请求的设备变为 slave(从机)。
1.3、HCI 层
通信层, 向 host 和 controller 提供一个标准化的接口。 该层可以由软件 api 实现或者使用硬件接口 uart、 spi、 usb 来控制。
1.4、L2CAP 层
相当于快递, 将数据打包, 可以让客户点对点的通信。
1.5、SM 层
安全服务层, 提供配对和密钥的分发, 实现安全连接和数据交换。
1.6、ATT 层
ATT 环境中, 允许设备向另外一个设备展示一块特定的数据, 称之为“属性”, 展示“属性” 的设备称为服务器, 与之配对的设备称为客户端。 链路层状态(主机和从机) 与设备的 ATT 角色是相互独立的, 也就是说, 主机设备可以是 ATT 服务器, 也可以是 ATT客户端。 从机也一样。
1.7、GATT 层
从名字就能看出, GATT 是在 ATT 上面的一层结构, 定义了使用 ATT 的服务框架,GATT 规定了配置文件(鼎鼎有名的 profile) 的结构, 在 BLE 中, 所有被 profile 或者服务用到的数据块都称为“特性, characteristic” 两个建立连接的设备之间的所有数据通信都是通过 GATT 子程序处理, 应用程序和 profile 直接使用 GATT 层, 在后面具体的代码中, 我们会经常见到 GATT, 数据交互也是再GATT层。
以上各层, 全部封装在 lib 库中, 对外提供接口函数。 函数库的OSAL、 HAL、 Profile、APPS 等均是源码的形式提供。
CC2541的BLE协议栈构成相关推荐
- java 协议栈_深入浅出讲解低功耗蓝牙(BLE)协议栈
详解BLE连接建立过程 https://www.cnblogs.com/iini/p/8972635.html 详解BLE 空中包格式-兼BLE Link layer协议解析 https://www. ...
- 蓝牙BLE(协议栈、OSAL、蓝牙APP工具)
目录 蓝牙配对和绑定 蓝牙4.0 BLE 信道(RF Channel) BLE协议栈分层 PHY层(Physical layer 物理层) LL层(Link Layer 链路层) HCI层(Host ...
- 蓝牙:深入浅出低功耗蓝牙(BLE)协议栈
深入浅出低功耗蓝牙(BLE)协议栈 BLE协议栈为什么要分层?怎么理解BLE"连接"?如果BLE协议只有ATT层没有GATT层会发生什么? 协议栈框架 一般而言,我们把某个协议的实 ...
- BLE协议栈学习2——OSAL
OSAL简介 BLE 协议栈包含了 BLE 协议所规定的基本功能,这些功能是以函数的形式实现的,为了便于管理 这些函数集,BLE 协议栈内加入了实时操作系统(并非真正意义上的操作系统),称为 OSAL ...
- BLE协议栈 – SM
SM(Security Manager)安全管理层定义了BLE通信两端设备的配对方法和密钥分发的工作模式,提供了一系列加密算法,为BLE通信提供了加密.认证等安全保障.它与GAP层密切相关,关于安全需 ...
- 深入浅出低功耗蓝牙(BLE)协议栈,使用Ubertooth one扫描嗅探低功耗蓝牙
BLE协议栈为什么要分层?怎么理解BLE"连接"?如果BLE协议只有ATT层没有GATT层会发生什么? 深入浅出低功耗蓝牙BLE协议栈 1. 协议栈框架 2. 如何通过无线发送一个 ...
- BLE 协议栈(Master,Slave;Standby,Advertiser,Scanner,Initiator;连接流程,连接参数)
文章目录 1.BLE 协议栈的结构和配置(应用层,Host 主协议层,Controller 控制层) 2.BLE 物理层(PHY) 3.拓扑结构(星型拓扑) 4.设备状态(Master,Slave:S ...
- ble协议栈从零开始八(security manager 最细致分析上)
SIG BLE MESH 视频 教程https://edu.csdn.net/course/detail/27321 一.前言 ble协议栈最难的一章来了,我尽自己的努力把这一章写好.安 ...
- 蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍
原文链接:蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍 系列索引:蓝牙协议分析(1)_基本概念 蓝牙协议分析(2)_协议架构 目录 1. 前言 2. Why 3. How和What 4. Phy ...
最新文章
- 从前端框架到前端架构参考资料
- 过滤某一个时间段的日志----sed
- 怎么使用socket在云服务上通信步骤(可支持TCP或UDP)
- android 设置对话框的高度,如何控制Android中默认警报对话框的宽度和高度?
- 实现ftoa与itoa
- 电源模块怎么选?以下6点你都知道吗?
- ASP.NET MVC 在WebService中Token的使用方法
- java 手机视频_JAVA炫播手机视频
- [poj1410]Intersection
- python学了有什么用-python学来有什么用
- fdisk添加分区引起的Linux Error: 22: Invalid argument
- 虚拟麦克风音频输入_Au音频效果(合集)
- outlook企业邮箱服务器要多少钱,怎么把企业邮箱配置到outlook中
- 关于围棋的基本功(转)
- 2017年Go语言入门教程-徐培成-专题视频课程
- 实战SOHO接单的全过程
- 电脑(PC端)多开两个或多个微信
- 新版ideal2021配置Tomcat
- 手机网站新模式-3G门户HTML5概念版
- 如何理解java的回调函数?