蓝牙学习一(简介)

news2024/12/23 8:19:04

1.简介

        蓝牙分为经典蓝牙BT-Bluetooth)和低功耗蓝牙BLE-Bluetooth Low Energy),本次主要学习BLE。

        BLE分了很多个版本,现在用的比较多的就是4.25.X。那4.2到5.0之间有哪些升级呢?首先,4.2版本传输速度只有1Mbps,广播包最大长度为31字节。而5.0版本开始,传输速度就已经增加到2Mbps了,并且广播包的最大长度也增加为254字节。除此之外,5.X版本还增加了Mesh的功能,且通讯距离也增加至300米以上。

2.架构

        蓝牙里把蓝牙协议的实现代码称为协议栈(protocol stack),BLE协议栈就是实现低功耗蓝牙协议的代码,理解和掌握BLE协议是实现BLE协议栈的前提。        

        每个厂商提供的SDK中包含的BLE协议栈都会有些许不同。这里主要以NordicRTL两个厂商来进行分析。

        先看Nordic的架构

         再看RTL的架构

        乍一看两者的区别很大。但是再定睛一看,区别还是很大。开玩笑,其实两者区别不大,只要搞懂底层基础的概念,这些东西就都是纸老虎。

        先看Nordic的架构,从上图可以看到。一个完整的BLE程序被分为了三层,分别是应用层主协议层控制层。这些层中分别还包含了各自的内容。其中的术语,这里大概解释一下。

        PHY层(Physical layer-物理层)。PHY层用来指定BLE所用的无线频段调制解调方式方法等。PHY层做的好不好,直接决定了整了BLE芯片的功耗、灵敏度等射频指标

        LL层(Link Layer-链路层)。LL层是整个协议栈的核心。也是BLE协议栈的难点和重点。像Nordic的BLE协议栈能同时支持20个Link连接,就是LL层的功劳。LL层要做的事情非常多,比如具体选择哪个射频通道进行通信。怎么识别空中数据包。具体在哪个时间点把数据包发送出去。怎么保证数据的完整性。ACK如何接收。如何进行重发。以及如何对链路进行管理和控制等等。LL层只负责把数据发送出去或者接收回来,对数据进行怎样的解析由GAPATT来负责。

        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概念,用来描述一条一条的数据。Attrubute除了定义数据,同时定义该数据可以使用的ATT命令,因此这一层被称为ATT层。

        GATT(Generic attribute profile-通用属性配置文件)。GATT用来规范attribute中的数据内容,并运用group(分组)的概念对attribute进行分类管理。没有GATT,BLE协议栈也能跑。但互联互通就会出问题,也正是因为有了GATT和各种各样的应用profile,BLE摆脱了Zigbee等无线协议的兼容性困境,成为了出货量最大的2.4G无线通信产品。

        ATT和GATT的关系就像车辆和交通规则一样。ATT就是车辆,而GATT就是规范车辆该如何行驶的交通规则。只有GATT存在的时候,多个ATT见面才知道该如何形式,到底是拐弯让直行还是坐车道超车。

        从上边的名字可以看到,主要分为protocolprofile。其中L2CAP、SMP、ATT属于protocol,而GAP和GATT属于profile

        profile和protocol有什么区别呢? 在蓝牙核心规范(Bluetooth Core Specification)中,profile的定义不同于protocol的定义Protocol被定义为各层协议。而Profile从使用蓝牙核心规范中各层协议的角度,定义蓝牙应用互操作性的实现Profile定义Protocol中的可用特性和功能,以及蓝牙设备互操作性的实现,使蓝牙协议栈适用于各种场景的应用开发

        在蓝牙核心规范中,Profile和Protocol的关联如下图

         

        Profile由红色矩形框表示,包括GAP、Profile#1、Profile#2和Profile#3。蓝牙核心规范中的Profile分为两种类型:GAP,途中红色矩形框所示的GAP;基于GATT的Profile,图中红色矩形框所示的Profile#123。

        可能初学者看完上述之后还是云里雾里的。没有关系,我们在后续的文章中,会对这些进行单独讲解,也会再重复提到。只要跟着走,后续这些问题都会弄清楚的。加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/14609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多肽标签X-press,DLYDDDDK

X-press Tag Peptide 是一种N-端前导肽,Anti-Xpress 抗体能够识别 Xpress 表位,因此,该多肽可用来纯化 X-press Tag 融合蛋白。X-press Tag Peptide is a tag peptide used for protein purification. X-press Tag is also an N-terminal lea…

【附源码】计算机毕业设计JAVA商院足球赛事管理

项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis Maven Vue 等等组成,B/…

CAPL语言编译的那些事

CAPL是类似于C语言的面向过程语言,这是众所周知的。C或C++代码在执行前需要编译成机器语言,也就是二进制语言,如此能够更快速运行。CAPL程序也是一样的,需要编译后执行 在CAPL Browser编辑器下,Home -> Compile/Compile All,Compile编译当前打开的CAPL文件,Compile A…

基于51单片机的可调节占空比四种三种波形发生器proteus仿真

简介: 该系统显示器为LCD1602,可实时显示波形的参数情况可显示四种波形,分别是正弦波 三角波方波以及锯齿波该系统可以通过按键调节波形的占空比波形输出通过仿真软件的示波器可以查看得到波形发生器的核心芯片是利用DAC0832产生运放LM324经…

Jenkins部署的Windows爬虫机如何配置

文章目录一 安装软件1. Python爬虫必备安装包2. Visual Studio Code3. Git3.1. 备选 - OneDrive4. Java5. 向日葵二 配置Chrome1. 查看Chrome版本2. 下载ChromeDriver3. 解压放入Python的Scripts文件夹有时候, 一台Windows只是用来部署一些任务, 例如爬虫任务. 这个时候需要简单…

【人见人爱报错系列】GIt常见问题解决大全

前言 在使用的github\gitlab各种hub的过程中,会遇到各种各样的小问题,这些会给程序员们带来五光十色的烦恼,本文总结使用git的各种问题并持续更新。 一、Git用户名邮箱设置 使用git过程中,会切换不同项目但是发现提交人都是一样…

M1 芯片 MacBook 结合 MAMP 集成环境配置 PHP 环境变量

MacOS Catalina 版本之后 shell 改为使用 zsh 。 可以使用 echo $SHELL 命令查看。 配置文件分为系统级(所有用户生效)和用户级(当前登录用户生效),可以自行了解,一般不经常切换用户的话,用户…

【Java多数据源实现教程】实现动态数据源、多数据源切换方式

前言 本文为 【Java多数据源实现教程】 相关知识,由于自己最近在做导师的项目的时候需要使用这种技术,于是自学了相关技术原理与实现,并将其整理如下,具体包含:多数据源的典型使用场景(包含业务复杂场景、读…

JavaWeb:JavaWeb技术架构演进

Java Web,是用 Java 技术来解决相关web互联网领域的技术栈。web 包括:web 服务端和 web 客户端两部分。Java 在客户端的应用有 Java Applet,不过使用得很少,Java 在服务器端的应用非常的丰富,比如 Servlet,…

【MySQL数据库笔记 - 进阶篇】(四)视图/存储过程/触发器

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:暂定 📝视频地址:黑马程序员 MySQL数据库入门到精通 📣专栏定位:这个专栏我将会整理 B 站黑马程序员的 MySQL…

将多张图片制作gif

如何将多张图片制作gif?gif其实也是一种比较常见的图片格式,不过gif和其它图片有很大区别,gif是一种动态图片,相信很多小伙伴都知道。我们每天几乎也会看到或者使用到gif动图,有些gif动图是由几张静态的普通图片合并而…

深入理解java虚拟机-1.自动内存管理

文章目录1、自动内存管理1.1 Java内存区域与内存溢出异常1.1.1 运行时数据区域程序计数器程序计数器为什么是私有的?java虚拟机栈本地方法栈虚拟机栈和本地方法栈为什么是私有的?Java堆创建的对象一定会放在堆中吗?方法区运行时常量池直接内存1.1.2 HotSpot虚拟机…

渗透测试之信息收集

信息收集1.域名信息收集1.1.whois查询1.1.1.whois解释1.1.2.whois收集  1.1.2.1.在线网站查询  1.1.2.2.工具查询1.2.反查1.3.备案信息查询1.3.1.备案信息收集1.4.子域名收集1.4.1.子域名解释1.4.2.子域名收集  1.4.2.1.在线网站收集  1.4.2.2.工具收集  1.4.2.3.Goo…

【教学类-13-03】20221118《数字色块图5*7*8-A4横板-横切》(大班主题《》)

效果展示(一张8个图,对半横切( 打印效果图、中间剪开成2分(白色废纸) 背景需求: 前期中3班制作5*7 *9张数字图,幼儿找出数字的人数更多 我还希望在大班进行数字图涂色练习。为了增加难度&#…

Wireshark TS | 访问网页失败

前言 访问网页失败也是日常比较常见的问题之一,导致问题的原因可能有很多种,像是客户端、浏览器、服务器或者网络等等,自然具体问题得具体分析。本篇以一个实际案例来说明下 TCP 连接相关的问题,该数据包仍然来自于 Wireshark sh…

视频m4v怎么转换成mp4?

在平时我们所使用的视频格式中除了常见的mp4,还有几十种不同的格式种类,不同的视频格式适用不同的播放设备,同时在画质,体积,编码,兼容性等方面都各具特色有所区别。其中m4v格式的视频就是适用于苹果系统的…

这波服装设计作品对女性美的诠释,十分到位

女性是温柔的、美丽的,多样的,莱佛士学生Xu Xinyi作品《Femininity&Softness》便是围绕女性展开创作。而Xinyi的作品想要传达的是:女性不应该被物化,她们是美丽且具有多样性的。 莱佛士服装设计专业学生作品在设计中&#xff…

海外直播公会Tik Tok,蓝海项目官方火热招募中

时过境迁,国内营销越来越成熟,国内公会(MCN机构)开始出现严重内卷。2022年国内公会/MCN公司已有40000多家;国内公会发展成熟,头部主播形成市场垄断;主播招墓难;孵化主播成本高。找她(HS3873)快速拿官方后台 有多少国内…

最短路径条数

在一个m行n列的网格中&#xff0c;每个网格的各边的长度均相等&#xff0c;求由A(x1,y1)点到达B(x2,y2)点的最短路径条数&#xff0c;其中1<m,n<30。输入保证x2>x1,y2>y1 如有下图网格&#xff0c;起点和终点分别是A(1,1),B&#xff08;2&#xff0c;3&#xff09;…

MySQL8.0优化 - 事务的状态

文章目录学习资料事务的状态活动的&#xff08;active&#xff09;部分提交的&#xff08;partially committed&#xff09;失败的&#xff08;failed&#xff09;中止的&#xff08;aborted&#xff09;提交的&#xff08;committed&#xff09;学习资料 【MySQL数据库教程天…