官网下载:

协议层 功能
GAP:通用访问规范 发现设备和连接设备
GATT:通用属性规范 提供服务,服务的类别及由哪些属性构成
ATT:属性协议 提供属性,GATT将这些属性组合起来构成服务
L2CAP:逻辑链路控制及自适应协议 收发各方(channel)数据
HCI:主机控制接口层 主机与控制器的接口(串口、USB等);分段、合并(数据量很大时)
LL:链路层 确定是广播包还是数据包,加上地址(多个设备)
GAP:通用访问规范 发现设备和连接设备
PHY:物理层 无线收发器,运输,调频

ATT(Attribute protocol)层:

设备中的 ATT 是服务器,手机中的 ATT 是客户端;
设备中ATT定义了属性,定义了数据格式(电量、特性声明、主服务声明等数据);手机中ATT定义了方法,定义了怎么去获取属性、读写属性;
ATT中定义了请求、响应、命令、通知、指示、确认等机制;

ATT协议是为了允许设备读写保存在Server上的数据值。每个存储值就是一个属性。
ATT定义了属性的内容,规定了访问属性的方法和权限。平时我们的BLE设备就是通过属性进行数据收发的。

ATT定义了两种角色:Client和Server。
Server:存储属性,接收Client的ATT请求,命令和确认。
Client:接收Server的应答,指示和通知。

GATT(Generic Attribute Profile)层:

GATT将ATT中的属性进行组合构成服务(电量监测服务等)
手机 GATT 层中定义了如何发现服务,读写服务中的特性(比如如何获取电量值)
手环 GATT 层定义了如何主动通知手机,某个值发生了变化
GATT层定义服务,实现服务,提供访问服务的方法
GATT严重依赖ATT,它只是在属性的基础上综合,提供一种服务。

GATT是建立在ATT之上的。为传输数据建立通用操作和框架。
GATT也定义了两种角色: Server和Client。
GATT Client也是一个ATT Client,GATT Server也是一个ATT Server,所以GATT角色不需要去专门绑定ATT角色。
Server:一般就是进行广播,被连接的设备。
Client:一般就是进行扫描,然后主动去连接的设备
GATT还指定了GATT Server上包含的数据格式。由属性协议传输的属性被格式化为服务和特征。来看看下图:

L2CAP
手机要读取某个属性,他需要ATT这一层发出一个请求,这个请求数据就经过 L2CAP(收发室)传递至设备端的 ATT;
同时,L2CAP使用channel标记数据来源,APP、ATT以及L2CAP的数据等,根据channel信息决定数据发到不同的层

LL
决定将数据发送至某个设备
重要概念:访问地址

PHY
蓝牙频率:2.4GHz左右(自然界中没有准确的东西)
将2.4GHz频段划分为40个信道
37,38,39为广播信道
0——36为数据信道

名词介绍

Bonding(绑定),配对过程中会生成一个长期密钥(LTK,long-term Key),如果配对双方把这个LTK存储起来放在Flash中,那么这两个设备再次重连的时候,就可以跳过配对流程,而直接使用LTK对蓝牙连接进行加密,设备的这种状态称为bonding。如果paring过程中不存储LTK(不分发LTK)也是可以的,paring完成后连接也是加密的,但是如果两个设备再次重连,那么就需要重走一次paring流程,否则两者还是明文通信。在不引起误解的情况下,我们经常把paring当成paring和bonding两者的组合,因为只paring不bonding的应用情况非常少见。在不引起混淆的情况下,下文就不区分paring和bonding的区别,换句话说,我们会把paring和bonding两个概念等同起来进行混用。

SM(security manager),蓝牙协议栈的安全管理层,规定了跟蓝牙安全通信有关的所有要素,包括paring,bonding,以及下文提到的SMP。

SMP(security manager protocol),安全管理协议,SMP着重两个设备之间的蓝牙交互命令序列,对paring的空中包进行了严格时序规定。

OOB(out of band,带外),OOB就是不通过蓝牙射频本身来交互,而是通过比如人眼,NFC,UART等带外方式来交互配对信息,在这里人眼,NFC,UART通信方式就被称为OOB通信方式。

Passkey,又称pin码,是指用户在键盘中输入的一串数字,以达到认证设备的目的。低功耗蓝牙的passkey必须为6位。

Numeric comparison(数字比较),numeric comparison其实跟passkey一样,也是用来认证设备的,只不过passkey是通过键盘输入的,而numeric comparison是显示在显示器上的,numeric comparison也必须是6位的数字。

MITM(man in the middle),MITM是指A和B通信过程中,C会插入进来以模拟A或者B,并且具备截获和篡改A和B之间所有通信报文的能力,从而达到让A或者B信任它,以至于错把C当成B或者A来通信。如果对安全要求比较高,需要具备MITM保护能力,在SM中这个是通过认证(authentication)来实现的,SM中实现认证的方式有三种:OOB认证信息,passkey以及numeric comparison,大家根据自己的实际情况,选择其中一种即可。

LESC(LE secure connections),又称SC,蓝牙4.2引入的一种新的密钥生成方式和验证方式,SC通过基于椭圆曲线的Diffie-Hellman密钥交换算法来生成设备A和B的共享密钥,此密钥生成过程中需要用到公私钥对,以及其他的密码算法库。LESC同时还规定了相应的通信协议以生成该密钥,并验证该密钥。需要注意的是LESC对paring的其他方面也会产生一定的影响,所以我们经常会把LESC看成是一种新的配对方式。

Legacy paring,在LESC引入之前的密钥生成方式,称为legacy paring,换句话说,legacy paring是相对LESC来说的,不支持LESC的配对即为legacy paring(legacy配对)。

TK(Temporary Key,临时密钥),legacy paring里面的概念,如果采用just work配对方式,TK就是为全0;如果采用passkey配对方式,TK就是passkey;如果采用OOB配对方式,TK就是OOB里面的信息。

STK(short term key,短期密钥),legacy配对里面的概念,STK是通过TK推导出来的,通过TK对设备A和B的随机数进行加密,即得到STK。

LTK(long term key,长期密钥),legacy配对和LESC配对都会用到LTK,如前所述,LTK是用来对未来的连接进行加密和解密用的。Legacy paring中的LTK由从设备根据相应的算法自己生成的(LTK生成过程中会用到EDIV(分散因子)和Rand(随机数)),然后通过蓝牙空中包传给主机。LESC配对过程中,先通过Diffie-Hellman生成一个共享密钥,然后这个共享密钥再对设备A和B的蓝牙地址和随机数进行加密,从而得到LTK,LTK由设备A和B各自同时生成,因此LTK不会出现在LESC蓝牙空中包中,大大提高了蓝牙通信的安全性。

IRK(Identity Resolving Key,蓝牙设备地址解析密钥),有些蓝牙设备的地址为可解析的随机地址,比如iPhone手机,由于他们的地址随着时间会变化,那如何确定这些变化的地址都来自同一个设备呢?答案就是IRK,IRK通过解析变化的地址的规律,从而确定这些地址是否来自同一个设备,换句话说,IRK可以用来识别蓝牙设备身份,因此其也称为Identity information。IRK一般由设备出厂的时候按照一定要求自动生成。

Identity Address(设备唯一地址),蓝牙设备地址包括public,random static, private resolvable,random unresolved共四类。如果设备不支持privacy,那么identity address就等于public或者random static设备地址。如果设备支持privacy,即使用private resolvable蓝牙设备地址,在这种情况下,虽然其地址每隔一段时间会变化一次,但是identity address仍然保持不变,其取值还是等于内在的public或者random static设备地址。Identity Address和IRK都可以用来唯一标识一个蓝牙设备。

IO capabilities(输入输出能力),是指蓝牙设备的输入输出能力,比如是否有键盘,是否有显示器,是否可以输入Yes/No两个确认值。

Key size(密钥长度),一般来说,密钥默认长度为16字节,为了适应一些低端的蓝牙设备处理能力,你也可以把密钥长度调低,比如变为10个字节。

蓝牙服务解析

  1. Service – 服务
    简单理解就是提供某项服务或功能。比如心率,电池监测等都可以定义为一个服务。
    系统可以有两种service:主要(primary)和次要(secondary)
    primary: 提供设备的主要功能
    secondary:提供设备的附加功能

  2. Included services – 包含服务
    类似于包含头文件,就是将其他共用的服务包含进来。

  3. Characteristic – 特征
    可以理解为服务中的某个特性,比如心率服务,就会有个心率值,心率值就可以定义为一个Characteristic 。

  4. Properties – 属性
    这里的属性和上面的Attribute不一样。这里的属性定义的是Read / Write / Notify / Indicate等,用于声明Characteristic是否可读可写等属性。

  5. Value – 值
    用来保存数值的。

  6. Descriptor – 描述符
    用于描述Characteristic,让用户更能理解该Characteristic的作用和如何使用。

TI CC26xx协议栈下载

切换协议栈版本:

协议栈对应IDE的版本:

IAR8.50.9下载

[CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解 TI协议栈下载相关推荐

  1. 蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍

    原文链接:蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍 系列索引:蓝牙协议分析(1)_基本概念 蓝牙协议分析(2)_协议架构 目录 1. 前言 2. Why 3. How和What 4. Phy ...

  2. 蓝牙BLE5.0扩展广播介绍

    蓝牙BLE5.0扩展广播介绍 前言 广播包基本介绍 扩展广播包结构 总结 author :cbk 前言 在2016年12月更新的蓝牙Core_v5.0中,更新了LE Advertising Exten ...

  3. 吐血推荐历史最全的蓝牙协议栈介绍

    本文主要介绍蓝牙5.2协议栈,Bluetooth stack, 蓝牙5.2的架构,包含传统蓝牙/低功耗蓝牙的协议概述以及作用 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: ...

  4. (一)深入理解Bluez协议栈之蓝牙Mesh的支持(1/5)

    前言: BlueZ是Linux官方蓝牙协议栈.它是一个基于GNU General Public License (GPL)发布的开源项目,从Linux 2.4.6开始便成为Linux 内核的一部分.如 ...

  5. 蓝牙核心技术介绍(蓝牙协议、架构、硬件和软件笔记)

    原文地址:http://www.cnblogs.com/zjutlitao/p/4742428.html 声明:这篇文章是楼主beautifulzzzz学习网上关于蓝牙的相关知识的笔记,其中比较多的受 ...

  6. 一起学nRF51xx 23 -  s130蓝牙API介绍

    张十三 前言 通过前面的章节,我们学习了nrf51的蓝牙协议栈(S130)的基本使用,对S130协议栈的实现原理有了一定了解,也认识到了S130协议栈的强大,那么协议栈中的API接口具体是什么功能?各 ...

  7. Android蓝牙协议介绍

    蓝牙协议介绍 1.物理连接 一个蓝牙系统包括主机 和 适配器这两个硬件,主机可以是 PC 机.开发板,适配器可以是各种接口(USB.UART....)的 模块 可以使用四种连接方式中的一种进行连接,连 ...

  8. 蓝牙开发|蓝牙技术介绍

    蓝牙技术介绍 1. 蓝牙概述 蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术,能在包括移动电话.PDA.无线耳机.笔记本电脑.相关外设等众多设备之间进行无线信息交换.利用"蓝牙& ...

  9. 【STM32H7】第2章 ThreadX USBX协议栈介绍

    教程更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=108546 第2章   ThreadX USBX协议栈介绍 本章节介绍 Thr ...

  10. 低功耗蓝牙onscanresult 出来名字为空_浅析BLE5.0蓝牙模块在智能家居的运用

    随着物联网渗透到各个行业领域,也使得各个领域对无线模块BLE蓝牙模块的需求激增.BLE蓝牙模块作为无线通信模块的一种,目前在智能家居.智能穿戴.智慧医疗.蓝牙室内定位等领域已经得到广泛应用.今天,小编 ...

最新文章

  1. 华为、小米的新手机用了更多AI,到底谁更胜一筹?
  2. 开发者们,「Innovation 2021」网易应用创新开发者大赛正式开赛了!
  3. phpcms9-6-0 一键getshell工具
  4. matlab 三维图像配准,[转载]Matlab实现多种图像配准(转)
  5. python运维常用模块-运维常用python库模块
  6. 重新认识访问者模式:从实践到本质
  7. 无法删除所有指定的值_SQL-插入、更新、删除、创建
  8. 4月份SCCM/ConfigMgr的5大看点
  9. 安卓 获取rtsp流 截屏_华为手机这5种截屏方法,你都会用吗?现在知道也不亏...
  10. K8S学习之helm
  11. windows下删除不掉文件夹:找不到该项目无法删除文件夹?
  12. css 间隙,CSS间隙属性
  13. 关于monitor模式
  14. Guava学习笔记-Splitter
  15. 金戒指用计算机怎么算,大姐拿来一个金戒指,先卖后当有蹊跷,鉴定后发现有问题,假的...
  16. 倩女幽魂偃师技能攻略介绍:偃师技能怎么玩?
  17. Form表单校验_座机号、电话号码
  18. 《计算机组成原理》第二章数据信息的表示 部分课后习题答案 清华大学出版_秦磊华_谭志虎
  19. 自动刷新网页,自动刷新当前页面,JS调用
  20. 用Python分析《斗破苍穹》

热门文章

  1. Android 10.0 webview版本升级的方法
  2. 在传统软件公司十年深恶痛绝的感受
  3. Win10耳机插上没反应,外放正常怎么解决?
  4. 使用python制作时间戳转换工具
  5. 戴尔服务器重装系统识别不到硬盘,戴尔台式机重装系统(戴尔台式机重装系统找不到硬盘)...
  6. javaweb网上图书商城案例
  7. 河北省计算机对口试题,河北省对口计算机试题及答案.doc
  8. 基于区块链的隐私保护与访问控制云框架
  9. oracle 查询ddl记录,Oracle记录用户DDL操作脚本
  10. MYSQL没有id字段的坑