低功耗蓝牙和经典蓝牙概述

低功耗蓝牙和经典蓝牙概述 https://www.cnblogs.com/iini/p/8692541.html

为了区分所谓的低功耗蓝牙和经典蓝牙,蓝牙4.0发布之初,SIG还特意将Bluetooth low engery对外宣传为Bluetooth smart,而“Bluetooth”继续用来指代经典蓝牙,Bluetooth smart ready则用来表示双模蓝牙(即同时支持经典蓝牙和低功耗蓝牙),所以市面上有很多关于Bluetooth smart,Bluetooth,Bluetooth smart ready的宣传材料,但是这些名字不仅没有起到传播Bluetooth品牌的作用,还让众多消费者和开发者感到混淆,所以后来SIG不再频繁使用Bluetooth smart等名字,更多的是与蓝牙4.0规格对齐,直接使用LE,BR,EDR等名字进行宣传,对外也不再宣传低功耗蓝牙和经典蓝牙的不同,并将两者统一到“Bluetooth(蓝牙)”这个大品牌下面一起宣传。

深入浅出低功耗蓝牙(BLE)协议栈 https://www.cnblogs.com/iini/p/8969828.html

如上图所述,要实现一个BLE应用,首先需要一个支持BLE射频的芯片,然后还需要提供一个与此芯片配套的BLE协议栈,最后在协议栈上开发自己的应用。可以看出BLE协议栈是连接芯片和应用的桥梁,是实现整个BLE应用的关键。那BLE协议栈具体包含哪些功能呢?简单来说,BLE协议栈主要用来对你的应用数据进行层层封包,以生成一个满足BLE协议的空中数据包,也就是说,把应用数据包裹在一系列的帧头(header)和帧尾(tail)中。具体来说,BLE协议栈主要由如下几部分组成:

  • PHY****层(Physical layer物理层)。PHY层用来指定BLE所用的无线频段,调制解调方式和方法等。PHY层做得好不好,直接决定整个BLE芯片的功耗,灵敏度以及selectivity等射频指标。
  • LL****层(Link Layer链路层)。LL层是整个BLE协议栈的核心,也是BLE协议栈的难点和重点。像Nordic的BLE协议栈能同时支持20个link(连接),就是LL层的功劳。LL层要做的事情非常多,比如具体选择哪个射频通道进行通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保证数据的完整性,ACK如何接收,如何进行重传,以及如何对链路进行管理和控制等等。LL层只负责把数据发出去或者收回来,对数据进行怎样的解析则交给上面的GAP或者GATT。
  • HCI(Host controller interface)。HCI是可选的(具体请参考文章: 三种蓝牙架构实现方案(蓝牙协议栈方案)),HCI主要用于2颗芯片实现BLE协议栈的场合,用来规范两者之间的通信协议和通信命令等。
  • GAP****层(Generic access profile)。GAP是对LL层payload(有效数据包)如何进行解析的两种方式中的一种,而且是最简单的那一种。GAP简单的对LL payload进行一些规范和定义,因此GAP能实现的功能极其有限。GAP目前主要用来进行广播,扫描和发起连接等。
  • L2CAP****层(Logic link control and adaptation protocol)。L2CAP对LL进行了一次简单封装,LL只关心传输的数据本身,L2CAP就要区分是加密通道还是普通通道,同时还要对连接间隔进行管理。
  • SMP(Secure manager protocol)。SMP用来管理BLE连接的加密和安全的,如何保证连接的安全性,同时不影响用户的体验,这些都是SMP要考虑的工作。
  • ATT(Attribute protocol)。简单来说,ATT层用来定义用户命令及命令操作的数据,比如读取某个数据或者写某个数据。BLE协议栈中,开发者接触最多的就是ATT。BLE引入了attribute概念,用来描述一条一条的数据。Attribute除了定义数据,同时定义该数据可以使用的ATT命令,因此这一层被称为ATT层。
  • GATT(Generic attribute profile )。GATT用来规范attribute中的数据内容,并运用group(分组)的概念对attribute进行分类管理。没有GATT,BLE协议栈也能跑,但互联互通就会出问题,也正是因为有了GATT和各种各样的应用profile,BLE摆脱了ZigBee等无线协议的兼容性困境,成了出货量最大的2.4G无线通信产品。

BLE client/server(C/S) 架构

BLE采用了client/server (C/S) 架构来进行数据交互,C/S架构是一种非常常见的架构,在我们身边随处可见,比如我们经常用到的浏览器和服务器也是一种C/S架构,这其中浏览器是客户端client,服务器是服务端server,server比如淘宝服务器,提供商品信息,广告,社交等服务,而浏览器就是客户端,比如微软的IE,就可以用来请求这些服务,并使用server提供的服务。BLE与此类似,一般而言设备提供服务,因此设备是server,手机使用设备提供的服务,因此手机是****client。比如蓝牙体温计,它可以提供 “体温” 数据服务,因此是一个server,而手机则可以请求“体温”数据以显示在手机上,因此手机是一个client。

服务是以数据为载体的,所以说server提供服务其实就是提供各种有价值的数据。

低功耗蓝牙ATT/GATT/Profile/Service/Characteristic规格解读:

低功耗蓝牙ATT/GATT/Profile/Service/Characteristic规格解读 https://www.cnblogs.com/iini/p/12334646.html

GATT

GATT:https://blog.csdn.net/u013378580/article/details/52891462

GATT(Generic Attribute Profile)通用属性配置文件,

定义了属性类型并规定了如何使用,包括了一个数据传输和存储的框架和一些基本操作。

GATT定义了两种角色:

​ 1) Server:指提供数据的设备。

​ 2) Client:指通过GATT的服务器获取数据的设备。

GATT使用场景:智能穿戴设备,手环,汽车,家用电子等。

Profiles

一个服务有多个characteristic组成的,service是一个独立的服务单元,也可以称作为profile,比如:心率/HID/体温/都是标准蓝牙服务。

在蓝牙程序和对应的app应用中总会涉及Profiles、Services、characteristic。这三个单词是一种对应包含的关系,在Profiles下面有Services,在Services下面有characteristic。

蓝牙Profile?是所有的Bluetooth产品都无须实现全部 的Bluetooth规范。为了更容易的保持Bluetooth设备之间的兼容,Bluetooth规范中定义了Profile。Profile定义了设备如何实现一种连接或者应用,你可以把Profile理解为连接层或者应用层,也可以将其理解为“应用场景、功能、使用方式” 。蓝牙中有很多的Profile, 而且Profile之间也并非平行的关系,他们是相互依赖组合构成的,存在明显的层级关系的。生活中比常见的为A2DP、AVRCP、HSP、HFP、OPP 、GATT等。

蓝牙profile简介 https://www.jianshu.com/p/8bed221be010

低功耗蓝牙ATT/GATT/Profile/Service/Characteristic规格解读

service

service可以理解为一个服务,在ble从机中,通过有多个服务,例如电量信息服务、系统信息服务等,每个service中又包含多个characteristic特征值。每个具体的characteristic特征值才是ble通信的主题。比如当前的电量是80%,所以会通过电量的characteristic特征值存在从机的profile里,这样主机就可以通过这个characteristic来读取80%这个数据

Characteristic(特征数据)

Server是通过characteristic来表示数据的,虽然一条数据最有价值的部分是它的值(value),但是仅有

value是不够的,比如,27 表示27温度还是27%湿度,同时每个value还应该有读写属性及权限属性,

一个characteristic包含三种条目:characteristic 声明,characteristic的值,以及characteristic的描述符(可以多个描述符)

Characteristic value 就是数据值了

BG22蓝牙——第三弹 蓝牙的一些入门知识,整理了大佬们的文章和链接相关推荐

  1. Android 蓝牙开发(三) -- 低功耗蓝牙开发

    Android 蓝牙开发(一) – 传统蓝牙聊天室 Android 蓝牙开发(三) – 低功耗蓝牙开发 项目工程BluetoothDemo 前面已经学习了经典蓝牙开发,学习了蓝牙的配对连接和通信,又通 ...

  2. 蓝牙(三)蓝牙协议的初始化

    介绍蓝牙协议的初始化之前首先要简单讲一下蓝牙一些常用协议以及各个协议的作用,同时还要讲以下Application的知识以便对蓝牙协议的初始化有一个更清晰的认识. 一.蓝牙协议 简介: HSP(手机规格 ...

  3. 【蓝牙开发】转发-信号强度(RSSI)知识整理

    来源: https://www.cnblogs.com/lele/articles/2832885.html 为什么无线信号(RSSI)是负值 答:其实归根到底为什么接收的无线信号是负值,这样子是不是 ...

  4. Android 蓝牙开发(一) -- 传统蓝牙聊天室

    Android 蓝牙开发(一) – 传统蓝牙聊天室 Android 蓝牙开发(三) – 低功耗蓝牙开发 项目工程BluetoothDemo 一.蓝牙概览 以下是蓝牙的介绍,来自维基百科: 蓝牙(英语: ...

  5. Unity 一些有用的碎片知识整理 之 三(之 四 更新中...)

    -- 系列文章链接 Unity 一些有用的碎片知识整理 之 一 点击可跳转链接 Unity 一些有用的碎片知识整理 之 二 点击可跳转链接 Unity 一些有用的碎片知识整理 之 四 点击可跳转链接 ...

  6. 蓝牙连接每次弹出确认框问题的排查及解决

    一周前客户提交了一个Bug. 具体的问题是这样的, 客户的一台设备坏了, 临时换了一台设备后发现,新换的设备不像老设备那样每次进行蓝牙连接时都提示要确认配对.这个问题确实是不对比不知道,一直以来谁都没 ...

  7. 蓝牙配对不弹配对框_配对编程在工作场所的好处和陷阱

    蓝牙配对不弹配对框 Pair programming is two programmers working together at one workstation. 结对编程是指两个程序员在一个工作站 ...

  8. win10在设备管理器里找不到蓝牙的三种解决办法

    一些使用win10的小伙伴在设备管理器控制面板中找不到蓝牙,导致无法进行相应的实际操作.那win10在设备管理器里找不到蓝牙怎么回事呢?下面小编为这个问题带来了解决方法,一起来看看吧. win10在设 ...

  9. nrf52832 学习笔记(三)蓝牙从机广播

    nrf52832 学习笔记(三)蓝牙从机广播 蓝牙从机要想被主机连接,首先需要发送广播信息,周围主机通过扫描广播信号,根据从机的广播信息,判断是否连接. 蓝牙协议栈初始化 不管是主机还是从机,要想使用 ...

最新文章

  1. P3项目全球模板狗血设置之一 --- 发货到成本中心需要输入Customer
  2. C++/CLI Winform中调用DLL的三种方法
  3. python中字符串(str)的常用处理方法
  4. 3.2 Hadoop生态
  5. java实现秒杀系统_Java秒杀系统--4.实现秒杀接口
  6. java反射——构造方法
  7. 多台欧姆龙PLC通过智能网关实现HTTP协议对接MES系统
  8. 小趣味:js编写斗地主规则(完整代码)
  9. (上)苹果有开源,但又怎样呢?
  10. 【实现方案】拼夕夕订单超时未支付自动关闭!
  11. 惠普笔记本苹果w10双系统_苹果macbook pro安装win10双系统的方法
  12. python中 r'', b'', u'', f'' 的含义
  13. OCR证件识别技术的功能特点
  14. el表达式ne什么意思_el表达式中的比较eq ne gt lt
  15. 学习java23种设计模式自我总结
  16. 金蝶容器Apusic中重新部署war包
  17. 本次云栖大会上,阿里开源了哪些顶级项目?
  18. 基于JAVA远程教育系统计算机毕业设计源码+系统+lw文档+部署
  19. AIGC生产工艺流程之games生产流程
  20. 怎么用PS软件图层样式制作图标

热门文章

  1. 小猪的Android入门之路 Day 8 part 3
  2. 算法训练-二进制加法
  3. 迅为10.1寸人机界面工业HMI安卓电容屏定制生产供应商
  4. 前端小练————天猫国际登录页
  5. 微服务开放平台接口设计
  6. 一拖再拖,刁肥宅个人主页终上线!
  7. c++程序设计基础(第五版)(上) 习题与解答
  8. 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
  9. java写zip后无法读取
  10. 服务器的内存和硬盘哪个更重要,[内存与硬盘区别] 内存和硬盘哪个重要