搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
笔触狂放9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
疯狂的程序员 71-80_母鸡会下蛋,但煎鸡蛋水平
2
hnu计算机与人工智能概论答案2.20
3
Rope软件AI单图变换视频合成最新蓝宝石版,支持N卡/AMD卡/CPU,免安装_rope cpu版本
4
linux下的find文件查找命令与grep文件内容查找命令_grep命令查找文件内容
5
DP动态规划入门(数字三角形、破损的楼梯、安全序列)
6
Android平台Qt开发入门教程
7
Linux 用户、组、权限操作
8
Android SharedPreferences 使用(详细版)
9
MySQL三种存储引擎的区别_oceanbase for mysql支持哪些存储引擎
10
AI大模型引领未来智慧科研暨ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的应用
当前位置:
article
> 正文
蓝牙协议栈基础学习笔记
作者:笔触狂放9 | 2024-03-26 17:43:24
赞
踩
蓝牙协议栈
蓝牙是近距离、低功耗的无线通讯标准,支持设备短距离通信(10m左右)。
采用分散式网络结构以及快跳频和短包技术,支持一对一或一对多通信,在2.4GHz频段工作,速率一般为1Mbps(蓝牙5.0可达2Mbps)
蓝牙协议栈的结构主要有两部分组成:控制器和主机。
总结各层作用:
(1)物理层(PHY)
:规定了BLE通信的基础射频参数,包括信号频率、调制方式等,使用1Mbps(蓝牙5.0还支持2Mbps)自适应跳频的GFSK射频,工作在2.4GHz频段(2400MHz~2480MHz)。
(2)链路层(Link Layer)
:用于控制设备的射频状态,设备处于以下5中状态之一:
等待、广告、扫描、初始化、连接
注意:
· 广播设备不需要建立连接就可以发送数据;
· 扫描设备收听广播设备发出的数据;
· 发起连接的设备通过发送连接请求来回应广播设备
(3)主机控制接口层(HCI)
:为主机和控制器之间提供标准通信接口。这一层可以是软件API或者硬件接口,如UART、SPI、USB。
(4)逻辑链路控制及自适应协议层(L2CAP)
:为上层提供数据封装服务,允许逻辑上的点对点数据通信。
(5)安全管理层(SM)
:定义了配对和密钥分配方式,并为协议其它层与另一个设备之间的安全连接和数据交换提供服务。
(6)属性协议层(ATT)
:允许设备向另一个设备展示一块特定的数据,称之为“属性”,实现两个连接设备之间的数据交互。在ATT环境中,展示“属性”的设备称为服务器,与之配对的设备称为客户端,链路层状态(GAP角色主机和从机)与设备的GATT角色是相互独立的。
(7)通用访问配置文件(GAP)
:规定了设备的角色,负责设备的访问模式和进程,包括设备发现、建立连接、终止连接、初始化安全特性和设备配置。设备总是作为下面四种角色之一:
·
广播者
:不可连接的广告设备;
·
观测者(扫描)
:扫描广播,但不建立连接;
·
外部设备
:可连接的广告设备,可以在单个链路层连接中作为从机;
·
集中器
:扫描广告设备并发起连接,在单个链路层或多链路层作为主机。
(8)通用属性配置文件层(GATT)
:定义了使用ATT的服务框架,GATT规定了配置文件(Profile)的结构。
BLE软件平台支持两种不同的应用开发配置:
(1)单一设备
(2)网络处理器
它们的
异同
是:单一设备是将 控制器、主机、配置文件(Profiles)和应用程序在一片芯片上实现。而网络处理器是将控制器和主机部分在一块芯片上执行,应用程序和Profiles在另一个设备(或者说处理器 )上执行,应用程序和Profiles通过厂商特定的HCI命令与蓝牙芯片通信,这一过程需要使用UART接口。
设备发现过程
:
在典型的蓝牙低功耗系统中,外部设备广告特定的数据,来使集中器知道它是一个可以连接的设备。集中器收到广告数据后,向外部设备发送扫描请求,然后外部设备将特定的数据回应给集中器,这过程称作扫描响应。集中器收到扫描响应Packet后,便能知道这是一个可以建立连接的外设,这就是设备的发现过程。
设备连接
:
发现了设备之后,集中器可以选择发起建立连接请求。连接请求包含一些连接参数:
(1)
连接间隔
:在两个BLE设备的连接中使用跳频机制,两个设备使用特定的信道收发数据,然后过一段时间后再使用新的信道(链路层处理信道切换),
即使没有应用程序的收发,两个设备仍通过交换链路层数据来维持连接,即发空包
。连接间隔就是连续两次交换数据的时间差,以1.25ms为单位,取值范围在 7.5ms~4s。
(2)
从机延迟
:这个参数用来使外部设备过滤掉前面若干交换数据,一般用于休眠唤醒。
(3)
管理超时
:两次数据交互的最大允许时间间隔,超过了就回到未连接状态。
外设可以通过向集中器发送“连接参数更新请求”改变连接设置,这个请求由协议栈的L2CAP层处理。这个请求包含4个参数:最小连接间隔、最大连接间隔、从机延迟、超时。当集中器收到请求后可以选择接受或者拒绝这些新的参数。
连接可以被主机或从机以任何原因自动终止。当一方发起终止连接时,另一方必须响应。
安全通信
:
蓝牙连接成功后,如果属性没有设置成认证读写,是可以被任何设备读写的,并且在空中传输的是明文;如果属性设置成加密认证读写,需要先进行配对,配对成功后成安全连接,此时在空中传输的数据是密文的。BLE的安全机制中有一项特性允许两个设备之间建立长期的安全密钥信息,称为Bond(绑定)。它允许两个设备重新连接时快速地完成加密认证,而不需要每次连接时执行配对的完整过程。
数据通信
:
两个设备应用数据的通信是通过协议栈的GATT层实现。从GATT角度来看,当两个设备建立连接后,它们处于下面两种角色之一:
(1)GATT服务器——提供数据服务
(2)GATT客户端——从服务器读写应用数据
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/笔触狂放9/article/detail/318644
推荐阅读
article
没有专业
背景
,
还有机会成为
机器
学习
工程师
吗?_无
背景
可以
学习
机器
学习
吗...
务必要在数据、统计学和数学方面下狠功夫
,
线性代数和多变量微积分对于
机器
学习
非常重要。_无
背景
可以
学习
机器
学习
吗无
背景
可以...
赞
踩
article
pytorch
中
dataloader
的
prefetch
_
factor
出错_
prefetch
fact...
可以看到报错信息是:
prefetch
_
factor
这个属性只有在num_workers大于0的时候才能被定义。但是我去看...
赞
踩
article
鸿蒙
和
安卓
的
对比
_
鸿蒙
源码
和
安卓
源码
对比
...
文章目录内核方面的
对比
运行速度的
对比
作为手机操作系统的
对比
连接其他设备的
对比
鸿蒙
会取代
安卓
吗?为什么要学习
鸿蒙
开发?开发...
赞
踩
article
李宏毅
机器
学习——对抗
生成
网络(
GAN
)
_
李宏毅
gan
...
李宏毅
机器
学习——对抗
生成
网络(
GAN
)
_
李宏毅
gan
李宏毅
gan
代码部分参考:
李宏毅
...
赞
踩
article
C++
实现
生产者
和
消费者
模型_c++
生产者
消费者
代码
实现
...
C++
实现
生产者
和
消费者
模型
C++
实现
生产者
和
消费者
模型1、
实现
细节1、单
生产者
-单
消费者
模型参考
C++
实现
生产者
和消...
赞
踩
article
Python自动化小技巧10——
excel
文件批量
多
sheet
表
合并
_
python
将多个
sheet
合...
pandas对
excel
文件批量
多
sheet
表
合并
,还可以写入不同的
sheet
表。目录下所有execl表一行代码
合并
_p...
赞
踩
article
35
.
注册
监听器
的两种方法(
View
.
OnClickListener
)...
1. 使用匿名类
注册
监听器
public class MainActivity extends AppCompatActi...
赞
踩
article
android
文件
读写...
数据的存储有多种方式,比如数据库存储、SharedPreferences存储、
文件
存储等;这里我们将要介绍最简单的
文件
存...
赞
踩
article
logcat
的
基本
使用
_
logcat
的
用法...
一、
logcat
命令介绍1.android log系统2.
logcat
介绍
logcat
是android中
的
一个命令行工具...
赞
踩
article
Linux
的
文件系统
结构
_
linux
的
文件系统
由两层
结构
组成
()...
1、硬盘
结构
磁盘
的
内部并不是真空
的
,只是空气很干净;利于散热
文件系统
结构
,理解
文件系统
,就得从文件存储说起磁盘
的
专业术语...
赞
踩
article
安卓系列机型永久去除
data
分区
加密
详细步骤解析_
解密
data
分区
的
密码...
安卓机型玩机搞机刷写第三方twrp存储出现乱码 存储不显示等情况都是没有
加密
data
分区
的
原因。用户需要在twrp里格式...
赞
踩
article
应用
商店
备案
登记
流程解析_
app
上架
苹果
商店
备案
详细流程...
。_
app
上架
苹果
商店
备案
详细流程
app
上架
苹果
商店
备案
详细流程 引言: 随着智能手机的普...
赞
踩
article
手机
QQ
文件
存储路径
_
qq
文件
在哪个
文件
夹...
安卓手机
QQ
接收的
文件
存储路径在:Android>data>com.tencent.mobile
qq
>Tencent>Q...
赞
踩
article
linux
命令行
操作(
一
)...
shutdown 命令可以安全地关闭或重启
linux
系统。它在系统关闭之前给系统上的所有登陆用户提示
一
条警告信息。该命令...
赞
踩
article
学习
人工智能
AI路线...
学习
人工智能
AI 的路线通常包括以下几个步骤:了解
人工智能
的基本概念和历史,包括机器
学习
、神经网络、深度
学习
等技术。学...
赞
踩
article
手机不
Root
,怎么查看
Andriod
的
数据库
文件:
通过
chrome
来查看(小白专用)_androi...
操作步骤目录: 1.导包 2.初始化 3.
通过
在谷歌浏览器输入
chrome
://inspect/#devices查看A...
赞
踩
article
Python实现查询一个
文件
中的
pdf
文件
中的
关键字
_
python
查找
pdf
关键字
和总
页数
...
要求,查询一个
文件
中的
pdf
文件
中的
关键字
,输出
关键字
所在PDF
文件
的
文件
名及对应的
页数
。为了方便且高效看论文。_pyt...
赞
踩
article
聊聊大厂都
在
用
的
JavaAgent
...
大家好,我是不才陈某~熟悉Spring
的
小伙伴们应该都对aop比较了解,面向切面编程允许我们
在
目标方法
的
前后织入想要执行...
赞
踩
article
【
Android
】
App
屏幕
适配
方案_安卓
app
是否会
自动
适应
屏幕
...
自
Android
智能手机于2008年10月发布至今,已有十几年的历史,在这十几年里,
Android
版本不断发生变化...
赞
踩
article
高数
————
思维
导图
(上岸必备)(
极限
与
连续
)_函数
极限
连续
思维
导图
...
该
思维
导图
为
高数
极限
与
连续
的大纲以及基本解题思路,内容较为详细。同时还附有考研必须掌握的基本课外知识点的
思维
导图
。该
思维
...
赞
踩
相关标签
机器学习
数据挖掘
自然语言处理
pytorch
人工智能
python
huggingface
报错
error
linux
操作系统
harmonyos
1024程序员节
生产者和消费者
pandas
excel表格合并
自动化办公
android
windows
data分区锁
解密data
服务器
https
经验分享