文章目录

  • 1、BLE 协议栈的结构和配置(应用层,Host 主协议层,Controller 控制层)
  • 2、BLE 物理层(PHY)
  • 3、拓扑结构(星型拓扑)
  • 4、设备状态(Master,Slave;Standby,Advertiser,Scanner,Initiator)
  • 5、BLE 连接状态流程图
  • 6、广播事件(Advertising)
  • 7、广播间隔(advInterval,Advertising Interval)
  • 8、扫描事件(Scan)
  • 9、发起连接(Initiate)
  • 10、连接参数(跳频增量,连接间隔,监督超时)
  • 11、连接事件(Connection Event)
  • 12、从机潜伏(Slave Latency)
  • 13、连接参数的设定(Connection Parameter)
  • 14、终止连接

1、BLE 协议栈的结构和配置(应用层,Host 主协议层,Controller 控制层)

1、协议栈有两部分组成:Controller 和 Host
2、Profiles和应用总是基于GAP和GATT之上
3、在单芯片方案中,Controller 和 Host,Profiles和应用层都在同一片芯片中

2、BLE 物理层(PHY)

1、RF规格特性

  1. 运行在2.4GHz ISM 频段
  2. GFSK 调制方式(高斯频移键控)
  3. 40个2MHz的通信间隙(其中,BLE有3个固定的广播信道(37/38/39),37个自适应自动跳频 数据信道

2、物理层可以和经典蓝牙RF,组合成双模设备
3、2MHz间隙,能更好地防止 相邻频道的干扰

3、拓扑结构(星型拓扑)

BLE是一种星型拓扑结构:

  1. 主设备(Master)管理着连接,并且可以连接多个从设备(Slave)
  2. 一个从设备(Slave)只能连接一个主设备(Master)

4、设备状态(Master,Slave;Standby,Advertiser,Scanner,Initiator)

作为一个BLE设备,有6种可能的状态:

序号 可能的状态 描述
1 待机状态(Standby) 设备没有传输和发送数据,并且没有连接到任何设备
2 广播状态(Advertising) 周期性 广播状态
3 扫描状态(Scanning) 主动地寻求 正在广播的设备
4 发起连接状态(Initiating) 主动向某个设备 发起连接
5 主设备(Master) 作为主设备,连接到其他设备
6 从设备(Slave) 作为从设备,连接到其他设备

5、BLE 连接状态流程图

6、广播事件(Advertising)

1、广播包的发送是单向的,不需要任何连接
2、设备发送广播包,进入广播状态

  1. 广播包 可以包含特定的数据定义,最大31个字节
  2. 广播包 可以直接指向某个特定的设备,也可以不指定
  3. 广播包 可以声明是 可被连接的设备,或者是不可连接的设备

3、在一次广播事件中,广播包 会分别在三个广播信道(37/38/39)中,被发送一次

7、广播间隔(advInterval,Advertising Interval)

1、广播间隔,是两次广播事件之间的最小时间间隔
2、广播间隔的取值范围是在 20ms~10.24s 之间
3、链路层 会在每次广播事件期间,产生一个随机广播延时 时间(0~10ms),这个延时被加在 广播间隔中,这样来避免 多设备之间的数据碰撞

8、扫描事件(Scan)

1、每次扫描设备打开Radio接收器去监听广播设备,称为一个扫描事件
2、扫描事件交替发生在三个特点的广播信道中:37/38/39
3、扫描频宽比(Duty Cycle),关于扫描的两个时间参数:

  1. 扫描间隔:扫描设备的扫描频度
  2. 扫描窗口:每次扫描事件持续时间

9、发起连接(Initiate)

1、除了扫描,设备也可以主动发起连接
2、发起状态的设备 和 扫描状态的设备,区别在于:
当它监听到一个可连接的广播,发起设备会发送一个连接请求,而扫描设备会发送一个扫描请求
3、连接请求包括一套为从机准备的连接参数,安排连接事件发生的信道和时间
4、如果广播设备接收了连接,两个设备就进入连接状态,发起方称为Master,广播方称为 Slave

10、连接参数(跳频增量,连接间隔,监督超时)

序号 可能的状态 描述
1 信道映射 指示 连接使用的频道
2 跳频增量 一个5~16之间的随机数,参与信道选择的算法
3 连接间隔(connInterval) 1.25ms的倍数,7.5ms~4.0s之间
4 监督超时(supervisionTimeout ) 10ms的倍数,100ms~32.0s之间,必须大于(1+slaveLatency)* connInterval
5 从机潜伏(slaveLatency) 0~499之间,不能超过((supervisionTimeout / connInterval) - 1)

11、连接事件(Connection Event)

1、所有的通信 都发生在 两个设备的连接事件期间
2、连接事件周期地发生,按照 连接参数指定的间隔(interval)
3、每个事件发生在某个数据信道(0~36),跳频增量参数 决定了下次连接事件发生的信道
4、在每个连接事件期间, Master 先发送, Slave 会在150us 之后做出回应
5、即使一个 连接事件 发生(或两者),双方都没有数据发送 (例外情况是 从机潜伏 使能) 。
这允许两个设备都承认对方仍然存在,并保持活跃的连接。

12、从机潜伏(Slave Latency)

1、潜伏(Latency): Slave 如果没有 数据发送,允许跳过连接事件
2、连接参数中的 Slave 的 潜伏值 ,是允许从机跳过的最大连接次数
3、在连接事件中,如果 Slave 没有对 Master 的包做出回应, Master 将会在后来的连接事件中重复发送,直到 Slave 回应
4、两个有效的连接事件之间的最大时间跨度(假设 Slave跳过了最大数目的连接事件跳过了最大数目的连接事件),称为“有效连接间隔”
5、从机的潜伏值范围是 0~499 ,但是有效的连接间隔必须 小于32.0s(监督超时时间:supervisionTimeout)

13、连接参数的设定(Connection Parameter)

1、短间隔的连接事件:

  1. 主从机 都会以高能耗运行
  2. 高数据吞吐量
  3. 发送 等待时间短

2、长间隔的连接事件:

  1. 主从机 都会以低能耗运行
  2. 低数据吞吐量
  3. 发送 等待时间长

3、低或者0 潜伏值:

  1. 从机 以高能耗运行
  2. 从机 可以快速收到来自主机的数据

4、高潜伏值:

  1. 从机 在没有数据发送的情况下,可以低功耗运行
  2. 从机 无法及时收到 来自主机的数据
  3. 主机 能及时收到 来自从机的数据

14、终止连接

1、Master 和 Slave 都可以 主动 断开连接

  1. 一边发起断开,另一边必须在在断开连接之前,回应这个断开请求

2、监视超时 而断开连接

  1. 监视超时 参数指定了两个数据包之间的 最大时间跨度
  2. 监视超时 时间必须 大于有效连接间隔,而且小于 32.0s
  3. Slave and Master 双方都维持着自己的监视超时计时器,在每次收到数据包时 清零 。
  4. 如果连接超时,设备会认为连接丢失,并且退出连接状态,返回广播,扫描或者待机模式。

BLE 协议栈(Master,Slave;Standby,Advertiser,Scanner,Initiator;连接流程,连接参数)相关推荐

  1. 【BLE】角色区分(master/slave, service/client)

    目录: 前言 Master/Slave Service/Client 总结 前言 在BLE开发中,为什么针对设备的角色有时候叫Master或Slave,有时候又叫Service或Client呢.这两种 ...

  2. 蓝牙BLE(协议栈、OSAL、蓝牙APP工具)

    目录 蓝牙配对和绑定 蓝牙4.0 BLE 信道(RF Channel) BLE协议栈分层 PHY层(Physical layer 物理层) LL层(Link Layer 链路层) HCI层(Host ...

  3. Bluetooth 蓝牙介绍(二):低功耗蓝牙BLE协议栈

    文章目录 Physical LAYER Link LAYER 角色 地址 物理信道 Air Interface Packet PDU Advertising physical channel PDU ...

  4. 蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍

    原文链接:蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍 系列索引:蓝牙协议分析(1)_基本概念 蓝牙协议分析(2)_协议架构 目录 1. 前言 2. Why 3. How和What 4. Phy ...

  5. CC2541的BLE协议栈构成

      协议定义的是一系列的通信标准, 通信双方需要共同按照这一标准进行正常的数据收发: 协议栈是协议的具体实现形式, 就是用代码实现的函数库, 以便于开发人员调用.   BLE 协议栈将各个层定义的协议 ...

  6. 蓝牙:深入浅出低功耗蓝牙(BLE)协议栈

    深入浅出低功耗蓝牙(BLE)协议栈 BLE协议栈为什么要分层?怎么理解BLE"连接"?如果BLE协议只有ATT层没有GATT层会发生什么? 协议栈框架 一般而言,我们把某个协议的实 ...

  7. 深入浅出低功耗蓝牙(BLE)协议栈

    深入浅出低功耗蓝牙(BLE)协议栈 BLE协议栈为什么要分层?怎么理解BLE"连接"?如果BLE协议只有ATT层没有GATT层会发生什么? 协议栈框架 一般而言,我们把某个协议的实 ...

  8. BLE协议栈 – SM

    SM(Security Manager)安全管理层定义了BLE通信两端设备的配对方法和密钥分发的工作模式,提供了一系列加密算法,为BLE通信提供了加密.认证等安全保障.它与GAP层密切相关,关于安全需 ...

  9. ble协议栈从零开始八(security manager 最细致分析上)

    SIG BLE MESH 视频 教程https://edu.csdn.net/course/detail/27321​​​​​​​ 一.前言 ble协议栈最难的一章来了,我尽自己的努力把这一章写好.安 ...

最新文章

  1. 如何在组件模板中选择元素?
  2. 达摩院 AI 进入中国科技馆,首张 AI 识别新冠 CT 成科技抗疫历史见证
  3. 高创新出GoTVbox多路电视解调器
  4. 配送交付时间轻量级预估实践
  5. Java 单例模式:懒加载(延迟加载)和即时加载
  6. (85)FPGA约束有哪些-面试必问(九)(第17天)
  7. java if函数的使用方法_java – 如何使用新的computeIfAbsent函数?
  8. nodejs基础 -- 全局对象
  9. Spring整合JavaMail
  10. C#匿名委托,匿名函数,lambda表达式
  11. 数据禾|2001年东四盟地区植被类型分布数据
  12. 笔记本新机全新安装XP时遇到问题的解决方案(针对新的Vista机型装xp的解决方案)...
  13. tab按钮样式 vue_vant 解决tab切换插件标题样式自定义的问题
  14. 弘辽科技:拼多多商品搜索热度如何提升?技巧分享
  15. 网站域名备案备注怎么写
  16. 公众号被关注后怎么发送多条自动回复消息?可以插入外链吗?
  17. Excel文档中字符型数据转化为数字类型
  18. ADSL拨号代理-构建IP代理池
  19. CTGU实验6_2-创建还书存储过程
  20. flex justify-content: space-around;和justify-content: space-evenly;的区别

热门文章

  1. python中slice是什么类型_在python中,slice是一个副本还是一个poin
  2. 基于MATLAB的路面裂缝检测识别算法仿真
  3. 安防视频流媒体服务器Easy NVR搭建之DASH直播平台的搭建需要具备哪些条件?
  4. 读余光中散文,看到一句诗(In me the tiger sniffs the rose),感觉很经典,摘录如下
  5. 阿里云CentOS8_x86_64_Haproxy代理gitlab及mantis
  6. 神经元网络算法的思想,神经元算法大全图解
  7. “房山的房子会升值”--摘自《北京晚报》
  8. 港版plus 6 sim卡显示无服务器,苹果6 plus显示无服务怎么办
  9. 6. 修改docker端口 (映射宿主机和docker容器中的端口)
  10. ATFX:5年期LPR利率大降15基点,USDCNH涨破年内高点