基于 BLE 5.1 协议 Core Spec。

1、状态机

根据 《BLUETOOTH CORE SPECIFICATION Version 5.1 | Vol 6, Part B》叙述,BLE 设备状态机包含下列状态:

• Standby State--------------------等待业务状态
• Advertising State-----------------广播状态
• Scanning State--------------------扫描状态
• Initiating State----------------------发起态(用于连接指定设备)
• Connection State -----------------连接态
• Synchronization State-----------同步态(用于周期性广播的数据同步)

在同一时刻,BLE 设备只能处于上述状态中的一种(当然,BLE 支持多连接,可以在建立连接后,再次发起其他的链接,不过呢,同一时空中,只能处于一种状态,对于上层来说,BLE 在Connection 同时在 Initiating,对于实际的物理设备,其实是分时复用的)。这几种状态的状态机转换图为:

具体的描述,等到专门讲各个状态的时候,在细致的描述状态之间的转换关系,这里可以暂时先有一个大致的印象即可。

2、角色

BLE 设备的角色的概念,只出现在 Connection 状态,类似于 USB/SPI/I2C 等数据传送,角色的定义有两个:

• Master Role
• Slave Role

由 Initiating State 主动发起连接的一方,并最终建立连接后,我们称之为 Master Role,另一方由 Advertising State 被连接后,成为 Slave Role。这里也只是先有这个概念即可,后面分析完 Advertising 和 Initiating 后,这些玩意,自然了然于胸。

3、字节序

既然是数据传送,咱们就需要关系传送的字节序 (BIT ORDERING)。BLE 协议规定,空中数据传送都使用  little-endian format,即  Least Significant Bit (LSB) 。还是解释一下:

比如:b0b1b2 = 110,传送的时候,在空中,先传输 1,在传输 1,最后是 0;

4、设备地址

在同一时刻,空气中弥漫了诸多蓝牙设备,那,咱哥如何才分辨不同的设备呢?当然是给每个 BLE 一个 ID,这个 ID 就是 BLE 的 Device Address,也叫 BD Address;

设备地址有 48 bits 构成,用于区分不同的 BLE 设备。

设备地址呢,又分为两大类:

  • Public device address
  • Random device address

4.1 Public device address

Public device address 的地址由 company_assigned [24 bits] 和 company_id [24 bits] 构成

这种地址呢,需要到蓝牙组织那里去申请(花钱买),防止冲突

4.2 Random device address

这种用得更为广泛,Random device address 又细分为两类:

• Static address
• Private address.

4.2.1 Static address

Static address 也是需要遵循标准的 48 bits,除了这个以外,还需要遵循以下规则:

1)最高两bit恒定为 11
2)上电的时候随机生成,并且在一个上电周期内保持不变
3)除开最高两位,剩余的46bits是一个随机数,不能全部为0,也不能全部为1。
4)下一次上电的时候可以改变。但不是强制的,因此也可以保持不变。

4.2.2 Private address

私有地址呢,根据地址是否加密,又分为了两类(过场真多):

• Non-resolvable private address-----不加密,但定时更新
• Resolvable private address-----------加密,且定时更新

4.2.2.1 Non-resolvable private address

当然,这个 Non-resolvable private address 也是 48 bits 的,Non-resolvable private address和Static Device Address类似,不同之处在于,Non-resolvable private address会定时更新。更新的周期称是由GAP规定的,称作T_GAP(private_addr_int) ,建议值是15分钟。要求如下:

1)最高两bit恒定为 00
2)除开最高两位,剩余的46bits是一个随机数,不能全部为0,也不能全部为1。
3)以T_GAP为周期,定时更新。
4)此地址不能和 public device address 冲突。

4.2.2.2 Resolvable private address

这种地址也称 RPA 加密地址,只能被拥有相同 Identity Resolving Key (IRK) 的设备扫描到,可以防止被未知设备扫描和追踪。

• 最高两位是 10
• 至少在 random part of prand 有一个 1
• 至少在 random part of prand 有一个 1

prand 除了最高两位以外,是一个随机数。

hash 部分是通过公式 hash = ah(IRK, prand) 计算出来的 hash 值。

当对 A 端发送 RPA 的时候呢,B 端接收到 RPA ,B 端会使用 A 的这个 prand 和 B 端的 IRK 进行同样的 hash 运算,并将计算的 hash 和 A 的 RPA 中的 hash 字段进行比较,相同的话,才证明这个才是他想要的,才可正常通信。

RPA 配合 RAL 才能发挥其过滤的作用(Resolvable address List)。是一种地址过滤策略,只有正确解析了以后,才能够进行后续动作,后面再详细聊。

综上所述,48bits 地址的最高两位 bits,用于表示地址的类型

5、物理信道

蓝牙 BLE 工作在 2.4GHz 的频段上,分为 40 个 RF 信道,每个信道 2M。同一时刻,只能用一个信道进行数据的传输/接收。

这 40 个 RF Channel 上,并不是平等的, SIG 把物理信道转换成为一个叫做 Channel Index 的玩意(其实就是简单的转换关系):

物理信道从 0 - 39 进行编号。Index 却是,PHY Ch0 对应 37,PHY Ch12 对应 38,PHY 39 对应 39。

在 BLE 4.2 时代,Advertising、Scanning、Initiating 状态只允许在 Ch Index 的 37/38/39 上执行数据的收发。Advertising 是为了让其他 BLE 设备发现本设备,Scanning 是为了扫描到其他设备。为了让发现设备和广播更容易不受诸如 WIFI 的干扰,专门将 Advertising、Scanning、Initiating 数据收发放到了 与 WIFI 频段隔离的部分,起到一定抗干扰作用:

除了 37、38、39 这些频段,在 Connection 状态下使用了 其他的 37 个 Channel,通过跳频技术(Hopping),来减少数据干扰,增强系统的可靠性。

BLE(2)—— 基本特性(状态、角色、地址、信道)相关推荐

  1. 魔兽在副本里服务器维护了,魔兽世界11月19日维护服务器状态查询地址 6.2.3补丁上线更新一览...

    魔兽世界已于今日凌晨6点开始对所有服务器进行例行维护操作,维护预计时间8小时,想要提前了解开服的玩家可前往服务器状态查询地址进行查看.本次维护后6.2.3补丁将正式上线. 11月19日<魔兽世界 ...

  2. Oracle入门(三B)之11G新特性 SYSASM 角色用来管理ASM

    转载自 oracle 11G新特性--SYSASM 角色--用来管理ASM SYSASM 角色 自动存储管理 (ASM) 是在 Oracle 数据库 10g 中引入的,它在某种程度上打破了 DBA 和 ...

  3. 水星路由器wan口ip显示0_wan口状态ip地址为0.0.0.0

    问:路由器设置后,WAN口状态IP地址一直显示0.0.0.0,不能上网怎么办? 答:路由器设置后,出现WAN口状态IP地址全为0的问题,可能是以下几种原因引起的: 1.路由器连接错误: 2.路由器中上 ...

  4. ble mac地址 协议_让BLE设备的名称包含MAC地址

    对于研发和测试BLE来说,经常看到同名的设备,是极为不方便的,一大堆设备同时上电会让同事不知道哪一个设备才是自己真正想操作的目标.再说一下小米手环,家中有三支小米手环,打开设备搜索全是"MI ...

  5. 配置无状态IPv6地址自动配置基础实验

    实验描述 两台路由器设备相连,其中AR2的接口GE0/0/0能够自动获取IPv6地址,从而实现设备之间通信. 实验思路 为了能让AR2的接口GE0/0/0自动获取IPv6地址,该AR2的接口GE0/0 ...

  6. IPV6 DHCPV6 和 无状态 分配地址

    1 DHCPv6简介 1.1  DHCPv6概述 DHCPv6(Dynamic Host Configuration Protocol for IPv6,支持IPv6的动态主机配置协议)是针对IPv6 ...

  7. 三、数据特性计算(含信道通讯计算、码元速率计算、尼奎斯特定理、香农定理以及相应的练习题)——网络工程师成长之路

    含信道通讯计算.码元速率计算.尼奎斯特定理.香农定理等计算方式 数据通信的基本概念 信道宽带 模拟信道:W = f2 - f1 , (f2和f1 表示的是信道能够通过的最高/最低频率,单位是赫兹HZ) ...

  8. 使用Python提取Nmap特定状态IP地址

    版权 本文首发于soarli博客,转载请注明来源.传送门 由于一个细微的逻辑疏忽,导致折腾了半小时左右,问题已经得以解决. 代码 1.0版本 import os import ref1 = open( ...

  9. BLE 技术(三)--- 链路层七种状态与空口报文设计(Core_v5.2)

    文章目录 一.LE Link Layer States 二.Link Layer Packet format 2.1 Advertising physical channel PDU 2.1.1 Pr ...

  10. 认知BLE中多个MAC地址类型:Public Device Address、Random Device Address、Non-resolvable Private Address

    1. 前言 BLE设备有多种类型的设备地址,如Public Device Address.Random Device Address.Static Device Address.Private Dev ...

最新文章

  1. 腾讯产品经理的一天是啥样的?
  2. spring中AOP动态代理的两种方式
  3. 基于LAMP实现web日志管理查看
  4. 线程与线程池(一条龙详解)
  5. matlab如何将相近的数据,matlab新手,求帮助!主要是如何将数据和公式导入
  6. 机器学习在高德起点抓路中的应用实践
  7. 华为Python面试题
  8. arcgis api 3.X 几种查询方式比较
  9. antdesignpro 重定向到登录页面_Bluehost 域名解析和 301 重定向设置
  10. XenApp6.5启用3D功能
  11. 五笔字根表口诀的通俗易懂讲解
  12. 高项考试-信息化知识
  13. D1: elevater design
  14. 教你解决微信跳转appstore的困扰
  15. OpenGL入门示例8——图形平移、旋转、缩放
  16. Java网络爬虫(三)爬取网络小说
  17. 石英加速度计工作原理介绍
  18. 灵汐科技携类脑芯片KA200及类脑系列产品亮相国家“十三五”科技创新成就展
  19. Ubuntu 如何读取U盘内容
  20. 2020年浙江理工大学新生赛 E DD_BOND买赛博朋克2077

热门文章

  1. 土地估价师继续教育培训心得体会
  2. 大华摄像头网页端控制+web串口(适用任何浏览器,不能用来打我)通讯合集
  3. 即席和即兴_即席和即兴_新员工参加会议,即兴发言赢得好感
  4. 谷歌浏览器驱动_谷歌驱动的配置与测试
  5. 安装最新版本zlib
  6. 尚硅谷-微信小程序文档
  7. 各类排序算法汇总及动画演示(C语言)
  8. 9--《Method and apparatus for providing an e-bussiness audit trail in a distribu》
  9. 龚文祥自爆今日头条微博自媒体年收入仅1000元!
  10. 关于 watched variable changed 异常的详解