搜索
查看
编辑修改
首页
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
一文读懂FPC(10)- 材料涨缩的控制方法_fpc涨缩是什么意思
2
单一数字评估指标、迁移学习、多任务学习、端到端的深度学习_端到端迁移
3
时域统计特征介绍_时域特征有哪些
4
设置linux默认音频设备,ubuntu设置默认声音设备
5
Kernel中uart接口的bluetooth driver初始化分析_hci_uart_init驱动加载
6
ICCV 2021超分辨率(super-resolution)方向上接收论文总结_amrsr
7
html js更新数据不刷新页面,用javascript实现无刷新更新数据
8
输电线路绝缘子闪络、破损等缺陷检测数据集_绝缘子内部断裂检测
9
二分查找算法细节与查找左右侧边界_二分查找边界
10
python Seq2Seq模型源码实战,超详细Encoder-Decoder模型解析实战;早期机器翻译模型源码demo_encoder decoder模型
当前位置:
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
鸿蒙
运行
让添加配置,
鸿蒙
DevEco
Studio
在
工程
中添加
Module
方法...
Module
是HarmonyOS应用的基本功能单元,包含了源代码、资源文件、第三方库及应用清单文件,每一个
Module
都...
赞
踩
article
使用pyhton将
文件
夹内多个
excel
表格
合并
成总表_
python
如何
合并
多个
excel
文件
...
python
、将多个
excel
文件
、
合并
成一个
excel
_
python
如何
合并
多个
excel
文件
python
如何
合并
多个...
赞
踩
article
细读《
深入
理解
Android
内核设计思想》(五)
Binder
机制 [下]
_
binder
_
get
...
对冗余挑拣重点,对重点
深入
补充,输出结构清晰的精简版
深入
binder
驱动内部
binder
_
ioctl
binder
_
g...
赞
踩
article
创维
E900
-S普通版-
MV100
纯净通
刷
固件
_
创维
900s
刷
机包
...
刷
了好多包就这这个包是好使的,开机华为LOGO,纯净版用起来挺流畅的
_
创维
900s
刷
机包
创维
900s
刷
机包
...
赞
踩
article
android
手机无
root
拷贝
数据
...
2019独角兽企业重金招聘Python工程师标准>>> ..._安卓8免
root
复制根目录dat...
赞
踩
article
HarmonyOS
/
OpenHarmony
应用开发-
ArkTS
语言声明式UI描述_
arkts
定义参...
HarmonyOS
/
OpenHarmony
应用开发-
ArkTS
语言声明式UI描述_
arkts
定义
参数
arkts
定义参...
赞
踩
article
(一)
Python
+
GDAL
实现
BSQ
,
BIP
,
BIL
格式的相互转换...
Python
+
GDAL
实现
BSQ
,
BIP
,
BIL
格式互转(一)
Python
+
GDAL
实现
BSQ
,
BIP
,
BIL
格式的相互...
赞
踩
article
如何在
PDF
中
搜索
并准确
找到
您要查找的
文本
内容_
pdf
搜索
...
您是否需要在冗长的
PDF
文档中快速查找单词或短语?没有什么比打开一个只有
文本
墙的大型
PDF
文档更令人沮丧的了。或...
赞
踩
article
鸿蒙
Js实战
,
计算器
功能
开发
_
鸿蒙
系统
计算器
...
开发
计算器
最主要的是连续计算
,
连续计算需要添加计算优先级逻辑
,
后续考虑通过遍历来判断里面的计算。
计算器
界面
开发
通过常用组...
赞
踩
article
强制
浏览器
Edge
、
GoogleChrome
、
Firefox
中
强制
启用黑色
模式
_
强制
网页暗色...
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂...
赞
踩
article
android
文件
读写...
数据的存储有多种方式,比如数据库存储、SharedPreferences存储、
文件
存储等;这里我们将要介绍最简单的
文件
存...
赞
踩
article
人工智能
学习
路线图
(超
详细
、超全面)...
人工智能
学习
路线图
由于
人工智能
领域涵盖的范围非常之大、所涉及的理论知识非常的复杂,并且对你的代码能力,实战操作能力都...
赞
踩
article
语音
识别-
语言
模型
_
拼音
语意对比
模型
...
发布于2017-04-27 由AILEMON统计
语言
模型
:从中文
拼音
到文本前言:自然
语言
是信息的载体,记录和传播着信息,...
赞
踩
article
Pandas
读取某
一
列
(特定
列
,指定
列
)为
列
表_
pandas
提取某
一
列
...
pandas
读取某
一
列
为
列
表
pandas
读取指定
列
为
列
表
pandas
读取特定
列
为
列
表_
pandas
提取某
一
列
pandas
...
赞
踩
article
torch
.
unique
() 去
重
_
torch
去
重
...
这个方法的参数在官方解释文档中有这么几个:
torch
.
unique
(input, sorted=True, return...
赞
踩
article
关于
MySql
自定义
函数
的自我见解_
mysql
function
参数
varchar
...
关于数据库
函数
的部分个人见解_
mysql
function
参数
varchar
mysql
function
参数varcha...
赞
踩
article
Win10
下
adb
连接到华为
Mate10
Pro
手机
_hdb
interface
...
这里假设你已在
Win10
下安装好
adb
驱动,按照以下步骤进行
adb
连接操作:1. 打开开发人员选项打开
手机
的“设置”...
赞
踩
article
蓝牙
协议
栈
rfcomm
数据读写流程
_
android
rfcomm
源码
过程...
android
11
蓝牙
协议
栈
rfcomm
数据读写流程图。上为读,下为写。
_
android
rfcomm
源码
过程an...
赞
踩
article
Transformer简介_
transformer
encoder
...
transformer
模型简介,包括编码器(
encoder
)、解码器(decoder)、训练以及模型训练中的tips。_...
赞
踩
article
Android
系统中如何得到各种
格式
的
文件
正文
(
office
文件
,PDF,邮件,
html
,zip等)...
在
Android
平台下,办公系统,ERP,CRM等开发过程中,需要对Doc, docx, xls, xlsx, ppt,...
赞
踩
相关标签
鸿蒙运行让添加配置
python
excel
android
binder
移动开发
数据库
java
开发语言
图像处理
GDAL
GIS
RS
pdf
windows
文档资料
音视频
编辑器
javascript
intellij idea
harmonyos
鸿蒙系统
鸿蒙
edge
firefox