蓝牙BLE基础知识

目录

一、初识蓝牙BLE

1.课程介绍

2.为什么需要蓝牙技术

3.蓝牙发展历史

4.蓝牙技术优势

5.蓝牙技术简介

6.学习补充

二、物理层(Physical layer)

1.模拟调制

2.数字调制

3.射频信道

4.学习补充

三、链路层(link layer)

1.白化

2.链路层状态机

3.状态机详解

4.链路层数据包格式

5.知识补充

四、控制接口层(HCL)

1.物理接口

2.逻辑接口

3.HCI两种格式类型

五、L2CAP和属性

1.L2CAP介绍

2.L2CAP信道标识

3.学习收获


一、初识蓝牙BLE


1.课程介绍

  • 蓝牙BLE结构

2.为什么需要蓝牙技术

蓝牙和ziggbe技术更加的Low Power, 各个技术的使用场景不同, 各有优缺点。

3.蓝牙发展历史

4.蓝牙技术优势

比较于ziggbe, ble的传输速率更快。

5.蓝牙技术简介

        蓝牙技术是一种无线通信技术,可以通过短距离无线信号传输数据。它使用在2.4GHz频段的无线电波来传输数据,具有低功耗、低成本和短距离通信的特点。 蓝牙技术最初是由爱立信公司在1994年提出的,目的是解决移动设备之间的无线通信问题。蓝牙技术得名于丹麦国王哈拉尔德·布隆尼尔(Harald Bluetooth),他在10世纪时推动了丹麦和挪威两国的统一。 蓝牙技术的应用非常广泛,主要用于个人电子设备之间的短距离通信,比如手机、平板电脑、电脑、耳机、键盘、鼠标等。它也被广泛应用于汽车、家庭音频设备、医疗设备和物联网等领域。 蓝牙技术的特点包括简单易用、低功耗、广域覆盖、可靠性较高等。目前,蓝牙技术的版本不断升级,最新版本是蓝牙5.2,具有更广泛的覆盖范围、更高的传输速度和更低的功耗。 总之,蓝牙技术通过无线通信方式,使得各种设备之间可以方便地进行数据传输和通信,大大提高了设备的互连性和便利性。

6.学习补充

  • 蓝牙BLE(Bluetooth Low Energy)和蓝牙Mesh

蓝牙BLE(Bluetooth Low Energy)和蓝牙Mesh是两种不同的蓝牙通信技术,其主要区别如下: 
​
1. 功能:蓝牙BLE主要是用于设备之间低功耗的点对点通信,适用于诸如智能手表、健康传感器、蓝牙耳机等小型设备。而蓝牙Mesh则是为了支持大规模设备之间的多对多通信,适用于物联网场景中的照明控制、家庭自动化等应用。
2. 网络拓扑:蓝牙BLE采用主从设备的连接方式,即一个主设备可以与多个从设备进行通信。而蓝牙Mesh则是采用网状拓扑结构,其中每个设备都可以与其他设备直接通信,形成一个自组织、多对多的网络。
3. 数据传输方式:蓝牙BLE的数据传输较简单,通常是通过广播和连接的方式进行,适合小量数据传输。蓝牙Mesh则可以支持大规模设备之间的复杂数据传输,通过多跳技术将数据从一个设备传输到另一个设备。
4. 覆盖范围:蓝牙BLE的覆盖范围相对较近,通常在几十米的范围内进行通信。而蓝牙Mesh可以通过多跳技术扩大网络范围,支持更大的覆盖范围。
5. 应用场景:蓝牙BLE常用于个人设备和低功耗设备的通信,如智能手表、健康传感器等。蓝牙Mesh则适用于大规模设备之间的互联和控制,如智能家居、工业自动化等。
​
总之,蓝牙BLE和蓝牙Mesh是两种不同的蓝牙通信技术,应用于不同的场景和设备。蓝牙BLE主要用于低功耗的点对点通信,而蓝牙Mesh则用于多对多、大规模设备之间的互联和控制。
  • 为什么uart发送AT指令可以控制uart模块工作

二、物理层(Physical layer)


  • 物理层

无论是数据的发送还是数据的接收, 数据都是一层一层的转发的。物理层实现的是基本的高频信号的无线电波通信

1.模拟调制

采取不同的幅度和不同的频率来区分不同的数据

  • 模拟调幅

  • 模拟调频

2.数字调制

3.射频信道

物理层将蓝牙的通信频段分成了很多, 为了支持频率跳变技术, 防止干扰。

4.学习补充

  • 蓝牙协议的物理层的具体的功能

蓝牙协议的物理层主要负责将数字信号转换为物理信号,以进行蓝牙设备之间的无线通信。具体来说,蓝牙的物理层干了以下几件事情:
​
1. 调制与解调:物理层负责将数字信号转换为模拟信号,并将其调制成载波信号。这样,数字数据就能通过载波信号在空中传输。接收端则将接收到的模拟信号解调为数字信号。
​
2. 频率跳变:为了避免与其他无线设备干扰,蓝牙物理层通过频率跳变(Frequency Hopping)技术,在不同的载波频率上进行传输。蓝牙设备每隔一段时间就会跳转到不同的频率上发送数据,因此能够抵御干扰。
​
3. 信道管理:蓝牙物理层将频率划分为多个信道,用于传输数据。物理层通过频率跳变技术在这些信道之间切换,使得多个蓝牙设备能同时进行通信,而不互相干扰。
​
4. 发射功率控制:物理层负责控制蓝牙设备的发射功率,以确保通信距离适中。发射功率的控制也有助于延长设备的电池寿命。
​
总之,蓝牙协议的物理层负责将数字信号转换为物理信号,并通过调制、解调、频率跳变、信道管理和发射功率控制等技术提供可靠的无线通信。

  • 为什么uart发送AT指令可以控制uart模块工作

三、链路层(link layer)


链路层解决的问题是通信双方的连接和数据的传输, 一些组装, 校验等等

1.白化

白化这项技术也是为了解决数据传输和接收的问题

2.链路层状态机

3.状态机详解

什么是就绪态?就绪态是一种等待状态,等待上级下发指令从而进行指令的执行,做个比方,联欢会上你准备唱首歌,你和后台打好招呼,只要一招收就开始放伴奏,那么这个背后的操作人员就处于就绪态,等待你的指示形式,那么在蓝牙BLE的链路层,就绪态就是一种非活动的中间状态,它的重要之处就是听话,无时无刻在等待你得之灵形式,当你想让设备查看周围是否存在其他蓝牙设备时,可以告诉它帮我看看周围有没有可连接的设备,此时链路层就会从就绪态切换到扫描态扫描其他信息从而上报给你,如上图所示,任何的一种状态在处理完成之后都需要回到就绪态来继续等待指令,从就绪态可以前往扫描态、广播态和发起态三种状态。

扫描态即如同我们的耳朵,能够搜集周围的音频信息,蓝牙则是搜寻2.4G且符合蓝牙标准的数据信息,来告知我们周围是否存在其他设备,在蓝牙BLE中扫描态被分为两种形式

扫描态又分为主动扫描和被动扫描, 自动扫描自动的拿取设备的更多的信息。

连接态又分为两种分别是主连接和从连接。

4.链路层数据包格式

5.知识补充

  • 蓝牙协议中的链路层具体干了什么

/*
在蓝牙协议中,链路层是蓝牙通信的最底层,负责提供可靠的数据传输和连接管理。具体来说,链路层在蓝牙设备之间进行以下操作:
​
1. 连接管理:链路层负责建立、维护和关闭蓝牙设备之间的物理连接。它处理设备之间的连接请求、连接确认和连接断开操作。
2. 数据传输:链路层通过数据链路层协议(例如ACL协议,Asynchronous Connection-Less)来传输数据,可进行可靠或不可靠的数据传输,具体取决于所选择的链路层服务类型。
3. 数据帧封装:链路层将来自上层(例如L2CAP协议)的数据进行封装成链路层数据帧,添加必要的控制信息(如帧同步、地址和误码检测)。
4. 分组与重组:链路层根据需求将链路层数据帧进行分组,使其适应蓝牙物理层的传输,然后再在接收端进行重组以还原数据帧。
5. 误码检测与纠正:链路层负责检测和纠正传输过程中的数据传输错误。它使用如CRC(循环冗余检测)等技术来检测和纠正数据错误,以确保传输的数据的可靠性。
​
需要注意的是,链路层只负责设备之间的数据传输和连接管理,并不处理更高级别的协议内容,如数据传输的语义和语法。这些更高级别的操作将由上层协议(如L2CAP、RFCOMM等)来处理。
*/
  • host控制uart模块的原理理解

/*
host下发命令给控制器, 控制器接收命令做出处理回复主机这个过程叫做事件
​
我们发送的一些命令其实都是HCL层帮我们封装好的一些宏, 其实本质是一些数据
*/
  • 如何理解MAC地址

/*
注意, 在发送复位指令的时候, 可能因为发送了复位指令在消息队列中的消息就不见了
​
MAC地址(Media Access Control address,媒体访问控制地址)是用于唯一标识网络设备的硬件地址。在计算机网络中,每个网络接口卡(NIC)都被分配了一个唯一的MAC地址。
​
理解MAC地址可以从以下几个方面来考虑:
​
1. 唯一性:MAC地址是全球唯一的,并且由网络设备的制造商在生产过程中为每个设备分配。这样,每个网络设备都具有一个独特的MAC地址,用于识别和标识设备。
2. 硬件标识: MAC地址是与网络设备的物理硬件相关联的标识符。它通常由48位二进制数表示,分为六组,每组以冒号或破折号分隔。前三组称为组织唯一标识符(OUI),用于标识设备的制造商,后三组用于具体的设备标识。
3. 数据链路层:MAC地址在数据链路层起着重要作用。它用于在局域网(如以太网)中识别和定位物理设备。数据包通过包含源MAC地址和目标MAC地址的数据帧在网络中进行传输。
4. 不可更改性:通常情况下,MAC地址是固定的,不能修改。它是作为网络设备硬件的一部分而分配的,所以它唯一且不可更改。因此,MAC地址能够在网络中唯一地识别和标识设备。
​
总的来说,MAC地址是用于唯一标识网络设备的硬件地址,它由制造商分配,并且在数据链路层中用于定位和传输数据包。它的唯一性和不可更改性使得它成为网络中识别设备的重要标识符。
​
标识在局域网内部的一些特定的标识好的物理设备
*/

四、控制接口层(HCL)


1.物理接口

2.逻辑接口

因为逻辑接口面向的是将控制器和主机做在一起的这种方案设计的,所以在主机与控制之间通信就不需要硬件接口, 这种就叫做软件接口, 也就是逻辑接口

3.HCI两种格式类型

  • 数据包数据格式

  • 命令包格式

Reset类似的uart指令或者说是命令都是在芯片内部固化的程序进行解析的, 转换为对应的机器码, 指导硬件电路工作

五、L2CAP和属性


1.L2CAP介绍

2.L2CAP信道标识

3.学习收获

  • Elipese IDE

Eclipse IDE(Integrated Development Environment,集成开发环境)是一款开源的、跨平台的集成开发工具,主要用于软件开发和编程。它提供了丰富的功能和工具,包括代码编辑器、调试器、编译器、项目管理和版本控制等,可以用于开发多种编程语言,如Java、C++、Python等。
​
Eclipse IDE是一个非常受欢迎的开发工具,广泛用于企业级应用、Web开发、移动应用、科学计算和开源项目等各个领域。它的强大之处在于它的插件体系,允许开发者根据自己的需要安装各种插件,以扩展其功能和适应不同的开发需求。

  • 关于蓝牙的l2cap层的理解

L2CAP(Logical Link Control and Adaptation Protocol)是蓝牙协议栈中的一个重要层,位于蓝牙核心协议栈中的传输层之上。它提供了在蓝牙设备之间建立逻辑连接的功能,并定义了数据的传输方式和协议。
​
L2CAP层主要负责以下几个方面的功能:
​
1. 提供逻辑连接:L2CAP层允许两台蓝牙设备之间建立逻辑连接,建立了一个可靠的端到端通信通道。这个逻辑连接可以用于传输数据、通信和控制信息。
2. 分段与重组:L2CAP层将上层应用的数据进行分段,然后发送给接收方进行重组。这样可以适应不同的数据包大小,并保证数据的完整性。
3. 数据包的可靠性:L2CAP层可以使用可靠的传输方式来发送数据包,确保数据的可靠传输。它使用错误检测和重传机制来处理数据包的丢失、错误或损坏。
4. 流量控制:L2CAP层还提供了流量控制机制,以确保发送方和接收方之间的数据传输速度协调一致。这可以防止数据发送方的过载,保证数据传输的平稳性。
​
总的来说,L2CAP层在蓝牙协议栈中扮演着重要的角色,负责建立逻辑连接、分段与重组数据、保证数据可靠性,以及控制数据传输的流量等功能。它为上层的应用提供了一个可靠的通信通道,并为蓝牙设备之间的数据传输提供了必要的支持。

  • 为什么uart发送AT指令可以控制uart模块工作

通过单片机的UART发送AT指令使蓝牙模块工作的原因主要有以下几点:

1. AT指令集:蓝牙模块内部集成了AT指令集的解析和执行功能。AT指令集规定了各种操作命令的格式和功能,通过发送合适的AT指令,可以对蓝牙模块进行配置和控制。

2. UART通信:蓝牙模块一般通过UART与单片机进行通信。UART是一种通信接口,通过串口通信,单片机可以发送数据到蓝牙模块并接收来自蓝牙模块的响应。

3. 数据传输:通过发送特定的AT指令,单片机可以向蓝牙模块发送数据,蓝牙模块将这些数据进行处理并传输给其他设备,实现了蓝牙通信。

4. 配置和控制:AT指令还允许单片机对蓝牙模块进行配置和控制。通过发送不同的AT指令,可以设置蓝牙模块的名称、波特率、工作模式、传输协议等参数。

总的来说,通过单片机的UART发送AT指令,利用了蓝牙模块内部的AT指令集和UART通信功能,实现了对蓝牙模块的配置、数据传输和控制。

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

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

相关文章

Jmeter 设置全局请求 重点cook

原因 在使用jmeter 过程中为了方便 ,会设置很多公众信心 比如请求头 请求cook 还会设置多个线程组 在同一个线程组中 我们只需要设置一个请求请求cook 就可以了 但是 有逆骨 就是喜欢多个线程组所以出现问题了 解决方案 设置一个全局变量 步骤 在测试计划中设…

图形用户界面(GUI)开发教程

文章目录 写在前面MATLAB GUI启动方式按钮(Push Button)查看属性tag的命名方式回调函数小小的总结 下拉菜单(Pop-up Menu)单选框(Radio Button)和复选框(Check Box)静态文本&#xf…

12.前端--CSS-背景属性

1.背景颜色 样式名称: background-color 定义元素的背景颜色 使用方式: background-color:颜色值; 其他说明: 元素背景颜色默认值是 transparent(透明)      background-color:transparent; 代码演示: 背景色…

硬件基础:组合逻辑电路

什么是组合逻辑电路 组合逻辑电路是由一些基本的逻辑门电路组成的,没有反馈,输出仅取决于输入。 组合逻辑电路是数字逻辑电路中一种重要的电路类型,它是由多个逻辑门(例如与门、或门、非门等)组成的电路。组合逻辑电路…

APUE学习之信号(Signal)

目录 一、信号 1、基本概念 2、用户处理信号的方式 3、查看信号 4、可靠信号和不可靠信号 5、信号种类 6、终止进程信号的区别 二、进程对信号的处理 1、signal()函数 2、sigaction()函数 3、代码演示 4、运行结果…

k8s---HPA 命名空间资源限制

目录 HPA相关知识 HPA(Horizontal Pod Autoscaling)Pod 水平自动伸缩,Kubernetes 有一个 HPA 的资源,HPA 可以根据 CPU 利用率自动伸缩一个 Replication Controller、 Deployment 或者Replica Set 中的 Pod 数量。 (1…

LTD261次升级 | 小程序支持抖音客服、支持抖音登录 • 短信发送需实名认证 • 表单提交成功收邮件提醒

1、 抖音小程序新增抖音IM客服功能; 2、 抖音小程序支持一键登录、支持快捷授权手机号 3、 表单新增发送邮件到提交者邮箱; 4、 表单支持配置不自动推送客户管理; 5、 短信发送需实名认证签署承诺书; 6、 其他已知问题修复与优化&…

安装 nvm

前言: nvm 即 node 版本管理工具 (node version manager),好处是方便切换 node.js 版本。 通过将多个 node 版本安装在指定路径,然后通过 nvm 命令切换时,就会切换我们环境变量中 node 命令指定的实际执行的软件路径。 使用场景…

数据结构笔记1

来自《Python数据结构学习笔记》(张清云 编著) 第一章 数据结构基础 1.逻辑结构 集合:结构中的数据元素除了同属于一种类型外,别无其他关系线性结构:数据元素之间一对一的关系树形结构:数据元素之间一对…

抖音向微信引流主要有哪几种方法-数灵通

近年来,随着智能设备的普及和信息技术的进步,短视频制作门槛逐渐降低,用户自创视频数量迅猛增长,用户规模持续扩大,有力推动了移动短视频的繁荣发展,市场规模也在不断扩张。作为当下炙手可热的短视频APP&am…

pycharm安装过程

1、安装包官网下载 PyCharm: the Python IDE for Professional Developers by JetBrains 点击下载 下拉选择社区版本 选择下载 下载完成后,双击exe安装。 安装完成,生成的桌面快捷方式 同意并继续 进入开发界面

网络安全学习 --- 小实验

题目 要求 1.防火墙线下使用子接口分别对应两个内部区域。 2.所有分区设备可以ping通网关。 过程 1.接口,区域配置完成。 2.配置SWL2 vlan 2 vlan 3 # interface GigabitEthernet0/0/1port link-type trunkport trunk allow-pass vlan 2 to 3 # interface Giga…

JavaWeb之JavaScript-Vue --黑马笔记

什么是JavaScript? JavaScript(简称:JS) 是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,它能使网页可交互。 JavaScript 和 Java 是完全不同的语言,不论是概念还是设计。但是基础语法类似。 …

java数据结构与算法刷题-----LeetCode667. 优美的排列 II

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 解题思路 题目要求我们返回一个数组长度为n的数组,必须含有1~n…

AI 欺诈事件频出,如何重塑身份认证的安全性?

据报告表示,生成式人工智能每年可为世界经济注入相当于 4.4 万亿美元的资金。预计到 2030 年,人工智能对全球财政的潜在贡献将达到 15.7 万亿美元。人们惊叹于 AI 强大工作效率,期待能帮忙节省不必要的劳动力,但事实上 AI 出现之后…

C++类的简单学习

C语言结构体中只能定义变量,在C中,结构体内不仅可以定义变量,也可以定义函数 之前在数据结构学习中,我们用C语言方式实现的栈,结构体中只能定义变量;现在以C方式实现,会发现struct中也可以定义函…

C++ Qt day1

提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数(要求使用C风格字符串完成) #include <iostream> #include <string.h> #include <array> using namespace std;int main() {string str;cout <<…

数据结构Java版(5)——链栈和链队列的实现

之前我们对链表进行了讲解&#xff0c;这次我们来用链表的方式来实现栈和队列两个接口&#xff0c;来加深我们对链表的理解。 一、链栈 栈的接口与顺序栈的接口相同&#xff0c;这里我们主要展示如何用我们自己写的链表来实现这个接口&#xff0c;代码展示如下&#xff1a; 接…

AI-数学-高中-8-函数奇偶性

原作者视频&#xff1a;函数】6函数奇偶性&#xff08;易-中档&#xff09;_哔哩哔哩_bilibili 示例&#xff1a; 已知奇偶性求解析式&#xff1a; 奇偶、单调函数综合示例&#xff1a;

黑马程序员——javase进阶——day01——匿名对象 , 继承 , 抽象类

目录&#xff1a; 面向对象回顾 面向对象的核心思想是什么?现有的类还是先有的对象?Java类的创建?类中的组成成分?创建对象所使用的关键字?创建对象的格式?调用对象的成员?定义构造方法的格式?定义构造方法的特点?构造方法的作用?面向对象三大特征是什么?封装的思想…