蓝牙5.1的ble那些事儿

2023-05-16

既然要说5.1的那些事儿,那么必须的聊聊蓝牙4.0.本文就不在此长篇大论班门弄斧了,要了解4.0的同学请出门左拐直接去参考蜗窝科技大佬的文章.本人觉得对于想入门全面了解4.0的同学,此文章是不二选择的经典.在此只有膜拜的份了(不是广告哈哈).

这里主要对差异做一点对比和分析.个人水平有限,如有不当,恳请指正.

 本文主要从physical layer来分析,host层和4.0变化不大请自行参阅之前说明.

 在5.1中主要是物理特性增强了.传输距离,传输数据包大小,传输速率都大大增加.这些都是纯硬件特性.

在软件层面,5.1多了一种状态Synchronization State变成5中状态.

我习惯把5.1人为分为3中状态,非连接状态,连接状态,同步状态.

此篇就从非链接状态讲述.

非链接状态最主要的就是广播状态.广播的PDU增加了ADV_EXT_IND• AUX_ADV_IND• AUX_SYNC_IND
• AUX_CHAIN_IND四种.这里PDU前面如果有AUX表示辅助PDU,辅助的PDU不在37.38,39信道传输数据.
为什么要如此增加辅助PDU了?主要是为了传输更多的数据,比如同步信息数据,寻向信息等等.

至于广播事件如下• a connectable and scannable undirected event• a connectable undirected event
• a connectable directed event• a non-connectable and non-scannable undirected event• a non-connectable and non-scannable directed event• a scannable undirected event• a scannable directed event.这里广播事件和PDU一定不要混淆起来,它俩像是兄弟,但是没有血缘关系.那到底有啥关系了,看这里.

一个event可能包含很多的PDU,一个PDU也可能被很多事件引用.他们之间并没有必然联系.只是SIG在这里定义了这样一种俗语,而且名字都很相似,搞得它俩很亲一样.

 其中除了connectable and scannable undirected event不能包含新加入PDU,其他都可以包含.

 connectable undirected event事件可以包含ADC_EXT_IND和AUX_ADV_IND.

这里所有的过程就叫做connectable and scannable undirected event,主信道包含ADC_EXT_IND的PDU,然后辅助信道包含ADC_EXT_IND的PDU.这里ADC_EXT_IND不能携带数据,只能指向辅助信道,然后辅助信道PDU携带数据或者ADC_EXT_IND指向空.

这两个PDU如何知道自己是一伙的了,原来在他们的PDU结构中有ADI这个字段.如果一致表示我们认识.

ADC_EXT_IND和带AUX的PDU(除了AUX_SCAN_REQ和AUX_CONNECT_REQ)都有统一的格式如下:

其中Adc_Mode表示

然后ExTended Header如下

其中Adc_Mode,ExTended Header和当前的event对应,这样就知道那些字段需要填写.如果要使用ExTended Header就在ExTended Header Flag相应的位域标记即可.

这里CTEINFO的结构如下

CTEINFO主要应用寻向功能,如果此字段存在那么CONSTAND TONE EXTENSION也存在,后者的位置在所有数据最后最后追加.

ctetime表示CONSTAND TONE EXTENSION的长度.

ctetype表示寻向的类型.目前有aoa,aod和1us的slot,aod和2us的slot三种.

CONSTAND TONE EXTENSION的结构如下

CONSTAND TONE EXTENSION主要用于寻向数据IQ的采样.采样发生在reference period和后面的sample lots.每一微妙采样一次。CONSTAND TONE EXTENSION位16us到160us.

接着AdcDataInfo就是ADI用来同步主信道和辅助信道的标志.

然后AuxPtr如图

此字段主要用来表示指引辅助信道的信息,如果有,告诉peer你应该什么时间在什么地点和我约会.

channel index表示信道索引,告诉peer你应该在哪个辅助信道索引来找我.

CA表示时钟精度.

offset units和Aux Offset表示在主信道发送数据后,第一次,多久后在辅助信道发送信息

AUX PHY表示使用哪一个物理介质传输有1M/S,2M/S, LL CODE.

最后是SyncInfo字段如下:

此字段的存在主要用来表示只是同步状态的信息.

其中sync packet offset ,offset units,offset adjust告诉第一次同步的时间

chm表示同步的地点信道

interval表示两次event的辅助同步数据包之间的时间

sca,aa,crcinit和校验纠错有关

 

到这里我们基本上对一个新的广播包有了一个大致的认识.广播完成以后,peer如何回应了,回应什么了,接下来我们再看.

上图告诉我们回应什么,至于怎么回应请看下面.我们还是以connectable undirected event事件为例子:

这里有几个概念.在很多情况下AUX是可以被覆盖的,广播了37,38,39信道后,才广播AUX数据包在辅助信道.

peer也必须使用aux的数据包在相应的信道进行回应.其他的概念和4.0如出一辙.

其他的广播EVENT和这里如出一辙,没有什么特殊的地方.至于scanner状态和initiator状态和广播状态是一一对应的,两两共存,男女搭配干活不累,孤独的活着没有任何意义.

下一盘文章我们再来讲讲连接建立后的那些事儿.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝牙5.1的ble那些事儿 的相关文章

  • [BLE]低功耗蓝牙之GAP、GATT

    一 开篇 本篇主要介绍一下关于BLE开发过程中必须了解的两个协议 xff1a GAP xff08 通用访问协议 xff09 GATT xff08 通用属性协议 xff09 两个协议都隶属于Host层 xff0c 直接关系到应用层开发 xff
  • BLE Mesh(二)BLE Mesh 基础

    Bluetooth Mesh Basics 1 Mesh vs Point to Point2 Devices and Nodes3 Elements4 Messages5 Addresses6 Publish Subscribe7 Sta
  • BLE Mesh(四)BLE Mesh 安全

    BLE Mesh Security 1 Mesh Security is Mandatory2 Mesh Security Fundamentals3 Separation of Concerns and Mesh Security Key
  • 蓝牙5.1的ble那些事儿

    既然要说5 1的那些事儿 那么必须的聊聊蓝牙4 0 本文就不在此长篇大论班门弄斧了 要了解4 0的同学请出门左拐直接去参考蜗窝科技大佬的文章 本人觉得对于想入门全面了解4 0的同学 此文章是不二选择的经典 在此只有膜拜的份了 不是广告哈哈
  • 蓝牙5.1的ble那些事儿

    到这里 对于非连接状态应该有一些新的认识了 接下来 顺其自然当然就是连接了 你谈对象 忙活半天 当然是想干点什么事情了 当然也有老司机翻车 连接上后 一端要主动向另一端发起问候 否则长时间不联系 那么就断开好了 主动问候的一端我们称之为ma
  • C和C++那些事儿

    1 new delete malloc free关系 delete会调用对象的析构函数 和new对应free只会释放内存 xff0c new调用构造函数 malloc与free是C 43 43 C语言的标准库函数 xff0c new del
  • ESP32-C3 学习测试 蓝牙 篇(四、GATT Server 示例解析)

    了解了蓝牙 GATT 相关概念 趁热打铁 分析一下官方示例 GATT Server 的应用程序架构 目录 前言 一 GATT Server 示例分析 1 1 初始化 1 2 回调函数 gatts event handler gap even
  • Telink泰凌微TLSR8258蓝牙开发笔记(一)

    一 开发环境搭建 1 1 软件开发环境 1 1 1 开发的IDE IDE下载链接 1 1 2 烧录工具 DBT下载地址 1 1 3 蓝牙SDK 蓝牙SDK下载地址 1 2 硬件开发环境 8258开发板 烧录工具一套 二 运行例程 并使能打印
  • 基于富芮坤fr8016 蓝牙5.0 芯片设计的BLE HID Joystick 游戏摇杆设备

    文章目录 ble hid 学习笔记 HID报告描述符与BLE HID profile之间关系 1 HID报告描述符 富芮坤fr8016 设计Joystick例子 1 描述X轴Y轴Z轴 2 描述按钮 3 Joystick 报告描述符 4 程序
  • BLE MESH组网(一)简介和基本概念

    BLE MESH组网 一 BLE MESH简介 BLE MESH来源 BLE MESH用处 BLE MESH的通讯方式 管理洪水 市场内蓝牙设备支持 安全性 BLE MESH协议栈模型 BLE MESH基本概念 节点 元素 模型和状态 地址
  • Dialog DA14585+Sensirion SHT3X+SGP30环境温湿度检测设计

    好记性不如烂笔头 既然不够聪明 就乖乖的做笔记 温故而知新 Phosphor IOT Module是以DA14585作为主控的用于环境监测的评估板 DA14585是符合Bluetooth 5 0标准 16M 32位ARM Cortex M0
  • ESP32-C3 学习测试 蓝牙 篇(七、GATT 数据通信 — 发送自定义数据)

    前面我们已经入门了 GATT 的开发 更进一步 进行想要的数据通信 目录 前言 1 通信问题思考 2 如何才能每次传输不同的数据 3 对 handle 的认识 4 继续尝试 5 测试成功 结语 前言 本来计划直接做一个蓝牙的小应用 首先得实
  • BLE低功耗的设置参数

    广播间隔 连接间隔 扫描间隔 扫描窗口 广播间隔 两个相邻广播事件之间的时间称为广播间隔 可以选择 20ms 10 28s 不等的间隔 通常 一个广播中的设备会每一秒广播一次 必须是 0 625ms 的整数倍 由于设备间的时钟会不同程度的漂
  • 解密蓝牙mesh系列

    转载自 蓝牙技术联盟 蓝牙mesh网络 低功耗 低功耗蓝牙 低功耗蓝牙 Bluetooth Low Energy 是一项相当成功的无线技术 如今已经很难找到不支持低功耗蓝牙的智能手机或平板电脑了 可以说它是可穿戴技术兴起的关键因素 在医疗设
  • BLE蓝牙笔记----数据包解析

    本文是参考一些博文和书籍做的笔记 如有不适联系删除 参考 https www cnblogs com iini p 8977806 html BLE4 0 低功耗蓝牙 协议 总结 目录 1 广播包 1 1 PDU Type 1 2 MAC地
  • BLE MESH组网(五)配置BLE MESH

    BLE MESH 五 配置BLE MESH 前言 概述 配置协议 供应程序 信标 邀请 交换公钥 前言 2017 年 5 月 全球最臭名昭著的勒索软件 WannaCry 在全球范围内积极攻击计算机 劫持用户数据索要赎金 这次攻击影响了 15
  • nRF52832 — 串口BLE例程逐行解析【转载】

    原文链接 http blog csdn net u011034150 article details 50617686 转载文章 若有不妥 通知后我会立即删除 本讲逐行代码解析官方串口BLE例程demo 主要分一下几个部分 1 Main函数
  • NRF52832学习笔记(1)—— 添加自有service(基于SDK15.3)

    前言 SDK版本15 3 评估板 pca10040 在uart的例程中添加battery service 添加之前 手机连上设备之后扫描到的service如下 一 分配ram空间 softdevice的flash code是确定 但ram是
  • Telink BLE MESH开发

    一 前言 官网资料介绍建议采用DMA传输 串口数据的接收是放到了fifo中 但是串口发送也是采用的DMA 问题在于串口发送并没有建立缓冲器 而是判断当前DMA是否忙 如果忙数据直接丢弃 这样做显然不合理 如果发送时DMA忙应该将数据放到缓冲
  • Android Ble 连接设备失败 onConnectionStateChange status 返回133

    Android Ble 连接设备失败时回调函数 onConnectionStateChange status 返回133 开始找问题 各种mac地址 权限 线程 找了个遍 结果就是返回纹丝不动 又因为 mBluetoothGatt mBlu

随机推荐

  • 红黑树和二叉树有什么区别?

    红黑树和二叉树有什么区别 xff1f 什么是二叉树 xff1f 什么是红黑树 xff1f 二叉树 xff08 Binary Tree xff09 是指每个节点最多只有两个分支的树结构 xff0c 即不存在分支大于 2 的节点 xff0c 二
  • 什么是TCC?

    假设现在有一个电商系统 xff0c 里面有一个支付订单的场景 xff0c 那对一个订单支付之后 xff0c 我们需要做下面的步骤 更改订单的状态为 已支付 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货 业务场景有了 xff0c
  • Java 泛型机制介绍

    Java泛型这个特性是从JDK 1 5才开始加入的 xff0c 因此为了兼容之前的版本 xff0c Java泛型的实现采取了 伪泛型 的策略 xff0c 即Java在语法上支持泛型 xff0c 但是在编译阶段会进行所谓的 类型擦除 xff0
  • 云计算服务三层架构-IaaS-PaaS-SaaS解析

    IaaS 基础设施即服务 Infrastructure as a service 通即虚拟的硬件资源 xff0c 如虚拟的主机 存储 网络 安全等资源 用户无需购买服务器 网络设备和存储设备 xff0c 只需要通过网络租赁即可搭建自己的应用
  • Spring事务的传播属性和隔离级别

    事务传播行为 如果在开始当前事务之前 xff0c 一个事务上下文已经存在 xff0c 此时有若干选项可以指定一个事务性方法的执行行为 64 Transactional propagation 61 Propagation REQUIRED
  • MySQL有多少种常用的日志,有什么作用

    redo 重做日志 作用 xff1a 确保事务的持久性 xff0c 防止在发生故障 xff0c 脏读未写回磁盘 重启数据库会进入 redo log 执行 重做 xff0c 到达事务一致性 undo 回滚日志 作用 xff1a 保证数据的原子
  • 自动控制算法的学习笔记

    1 PID调试步骤 没有一种控制算法比PID调节规律更有效 更方便的了 现在一些时髦点的调节器基本源自PID 甚至可以这样说 xff1a PID调节器是其它控制调节算法的基础 为什么PID应用如此广泛 又长久不衰 xff1f 因为PID解决
  • stm32 应用实例—— USART 串口通讯

    stm32 应用实例 USART 串口通讯 1 基于寄存器 固件库编程的差异性2 完成STM32的USART窗口通讯程序4 重温C语言程序里全局变量 局部变量 堆 栈等概念 xff0c 并验证3 归纳出stm32的堆 栈 全局变量的分配地址
  • windows BDA driver (abstract)

    AVStream is a Microsoft provided multimedia class driver that supports video only streaming and integrated audio video s
  • 详细解读Python豆瓣电影Top250网页爬取(主要对re的运用&excel保存数据)//包括对库的简介

    python里面有很多操作都类似于c语言 xff0c 这里在爬取时主要需要注意用到的是for循环语句和各种库 个人认为python中主要还是对库的运用比较占大比例 xff08 这里的软件版本是PyCharm 2020 3 2 x64 xff
  • Unity3D 委托和事件的优点(一)

    上周接触到了委托 这周终于在自己的项目中用到了 现在准备用委托和事件的方案 替换掉之前的一些使用不足的解决方案 在此感谢前辈们的优秀文章 我是根据在网上阅读的文章 通过自己的见解 并在自己的项目中进行实践 得出了一些结论与大家分享 我认为这
  • 我的保研经历——中国科学院计算技术研究所

    忙碌了大半年的保研事情已经尘埃落定了 xff0c 心理也踏实下来了 xff0c 总想着把自己的这段保研经历记录下来 xff0c 希望能对小伙伴们有所帮助 能来到ZZ并且读软件工程这个专业并且阴差阳错的进了卓越班也算是老天注定吧 xff08
  • 无限循环:while True+if...break(打破循环) 用法

    span class token keyword while span True span class token punctuation span p span class token operator 61 span span clas
  • freertos的核心---线程与调度

    一 划重点 划重点 划重点 线程就是freertos运行管理的最小单位 一个线程有自己的生命周期 可以是一段时间也可以是forever 具体看开发人员对于线程的规划 几个线程 每个线程处理什么事情 先来看看线程长啥样 xff1f xff08
  • freertos通信---信号量与队列

    嘿嘿 又见面了 到这里 任务的调度和切换 你已经有了深刻的理解 接下来 自然而然就是任务间的通讯咯 把相关的任务串联起来 就形成了程序的基本架构 一 队列 为什么要先讲解队列了 因为信号量就是利用队列来实现的 走 一起瞅瞅 1 1队列的创建
  • freertos通讯---信号量与队列

    哈喽 又见面了 一 信号量 1 1创建二进制信号量 define xSemaphoreCreateBinary xQueueGenericCreate UBaseType t 1 semSEMAPHORE QUEUE ITEM LENGTH
  • 关于python调用C++

    关于python调用C C 43 43 查了很多相关资料 xff0c 可以通过ctypes模块 SWIG等一些方法 简单的类似单个头文件单个cpp文件都可以实现 xff0c 但是大恒给的C 43 43 包含驱动程序 xff0c 需要在属性里
  • freertos通讯-通知

    通知是什么 xff1f 其实我们之前就见过 它就在任务结构体中 再来回顾下 if configUSE TASK NOTIFICATIONS 61 61 1 volatile uint32 t ulNotifiedValue volatile
  • freertos软件定时器

    哈喽 这篇文章是freertos解析的最后一篇文章 我们将会讲解一个利用任务延时实现的软件定时器 1 创建 timer结构体和创建一目了然 看看初始化函数 是不是有点熟悉 timer的管理有点类似任务的管理 如果是第一次创建则初始化time
  • 蓝牙5.1的ble那些事儿

    既然要说5 1的那些事儿 那么必须的聊聊蓝牙4 0 本文就不在此长篇大论班门弄斧了 要了解4 0的同学请出门左拐直接去参考蜗窝科技大佬的文章 本人觉得对于想入门全面了解4 0的同学 此文章是不二选择的经典 在此只有膜拜的份了 不是广告哈哈