一分钟读懂低功耗蓝牙连接数据包

一分钟读懂低功耗蓝牙(BLE)连接数据包 一分钟读懂低功耗蓝牙(BLE)连接数据包1.概述   BLE 连接过程中有三个重要的数据包:SCAN_REQ, SCAN_RSP 和 CONNECT_REQ。   SCAN_REQ: 扫描请求,由主设备(MASTER DEVICE)向从设备(SLAVE DEVICE)发出,目的是为了获得从设备的响应以得到更多的从设备              广播数据信息(包括设备名字,或者服务UUID,及其它如... 阅读详情

1.概述
   BLE 连接过程中有三个重要的数据包:SCAN_REQ, SCAN_RSP 和 CONNECT_REQ。
   SCAN_REQ: 扫描请求,由主设备(MASTER DEVICE)向从设备(SLAVE DEVICE)发出,目的是为了获得从设备的响应以得到更多的从设备
              广播数据信息(包括设备名字,或者服务UUID,及其它如厂家特定格式的信息(如硬件版本,软件版本号,设备系列号等等)
   SCAN_RSP:  从设备对就主设备发起的SCAN_REQ的响应,作为广播包的补充,从设备可以给主设备更多的广播数据,比如说,有些设备在广播
              包里面没有设备名字,这个时候就可以把设备名字放在这个包里面发给主设备
   CONNECT_REQ:主设备向从设备发出连接请求。至此连接建立完成(从设备不会响应这个请求),如果从设备没有连接上面的问题的话,以后
              主从双方会开始相互交换有效数据(基于GAP,GATT及SMP协议)或者交换空包。
   以下对这三个数据包进行详细解读

2.关键字:Hollong BLE 侦听仪,低功耗蓝牙嗅探器, BLE 分析仪,BLE 数据抓取
  Keyword: Hollong BLE Sniffer, BLE Data Analyzer,BLE Capture

3.抓取连接数据包的准备工作
  * 硬件:一个BLE设备(从设备)及对应的主设备(如智能手机里面的相关应用程序,或者通用BLE 工具软件);
           一台HOLLONG BLE SNIFFER (Hollong BLE 侦听仪)
  * 软件:Hollong 蓝牙4.0/4.1 BLE协议监控分析仪 软件
    
4. SCAN_REQ 包
   1)完整包

扫描请求完整包.png 

  2) 存取地址 (Access Address)   对于广播包,这是一个固定长度(4个字节)及固定内容(0x8e89bed6)的主从设备识别广播包的存取地址。
SCAN_REQ_ACCESS_ADDRESS.png 

  3)  头信息 (Header Info)   固定为2个字节:分解为16个位来使用
   位[0:3]:P广播包(PDU) 类型,总共有6个类型:

        PDU Type
        b3b2b1b0 Packet Name
        0000 ADV_IND: 可连接通用连接广播
        0001 ADV_DIRECT_IND:可连接定向连接(指定设备)广播
        0010 ADV_NONCONN_IND:不可连接通用广播
        0011 SCAN_REQ:扫描请求
        0100 SCAN_RSP:扫描响应
        0101 CONNECT_REQ:连接请求
        0110 ADV_SCAN_IND:可扫描通用广播
        0111-1111 Reserved

   位[4:5]:保留
   位[6]:RxAdd
   位[7]:TxAdd
   位[8:13]:广播数据长度 (最大为37 字节)
   位[14:15]:保留
SCAN_REQ_header_info.png 

  4) 主设备地址
SCAN_REQ_master_address.png 

  5)从设备地址
SCAN_REQ_slave_address.png 

  6)CRC
SCAN_REQ_crc.png 


4. SCAN_RSP 包
    1)存取地址
          定义同上
SCAN_RSP_access_address.png 

    2)头信息
          定义同上
SCAN_RSP_header_info.png 

    3)从设备地址
         固定6个字节的从设备地址(MAC ADDRESS)
SCAN_RSP_slave_address.png 

    4)响应数据(广播数据)
        格式同广播数据格式(详见文“1分钟读懂低功耗蓝牙广播数据”), 在这个包里面,数据为0(没有数据)
SCAN_RSP_data.png 
    
    5)CRC
    固定为3个字节
SCAN_RSP_crc.png 

5. CONNECT_REQ 包
     1)存取地址
      固定4个字节和内容(0x8e89bed6)的存取地址,BLE 芯片使用这个固定的地址作为广播通道的BLE数据接收。
CON_REQ_access_address.png 

    2)头信息
      二个字节的头信息(解析格式同上)
CON_REQ_header_info.png 

    3)主设备地址
    CON_REQ_master_address.png 

     4)从设备地址
    CON_REQ_slave_address.png 

     5)存取地址
          在此指定连接后使用的存取地址(BLE 数据通道),这个地址是由内部指定的非确定的4个字节长度的地址,不像广播数据通道使用固定内容的存取地址。
      CON_REQ_data_access_address.png 

     6)CRC INIT
          初始化的CRC 值,以后被使用于数据CRC 校验
      CON_REQ_crc_init.png 

     7)窗口时间 (Win Size)
          CON_REQ_win_size.png 

     8) 窗口偏移
          CON_REQ_win_offset.png 

     9)数据间隔时间 (CONNECTION INTERVAL)
          发送两个数据包(或者空包)的间隔时间。
          计算公式为:24 (0x18) * 1.25ms = 30ms, 在抓取的数据包中可以看到,每两个包之间的间隔是30MS。 下载此数据包需要注册。
          CON_REQ_conn_interval.png 

      10)时延(Latency)
          CON_REQ_latency.png 
     
       11) 中断连接最大时延(TIME OUT)
          当主从双方有一方在大于此时间后没有接收到任何数据包或者空包,则由连接状态转为非连接状态(主设备可以重新开始
扫描, 从设备也可以重新开始广播,具体做什么由应用程序决定)。
          计算方法: 最大时延 = TIME_OUT * 10MS, 在此为:72 (0X48) * 10 = 720 MS, 也就是说,如果双方在0.72秒期间没有收到任何数据包或者空包,则视为连接中断,由连接状态转为非连接状态,开始做应用程序要求做的事情。
          CON_REQ_timeout.png 

       12)跳频通道图(CHANNEL MAP)
         这个跳频图是由BLE 芯片根据周围环境中可以使用的BLE 通道而制定出来,根据扫描测试的环境不同(指被占用的频谱资源不同)而不同,当这个图(表)通过CONNECT_REQ 包发送给从设备后,主从双方都会根据这个图来同步跳频(HOPPING),低功耗蓝牙设备通过这个方法能够有效避开拥堵的频道,使用比较“干净”,无(少)干扰的频道来交换数据,从而大幅提升传输数据的稳定可靠性。
       CON_REQ_channel_map.png 
       由于这个是在比较干净(周围几乎没有任何BLE 设备或者其它工作在2.4G频段,类似频道的强信号设备)的环境下面工作的主从设备,所以可以看出,它使用了所有频道(除了广播专用频道37,38,39)作为跳频图。
     
      13) HOP 及CLOCK
       0xAF (10101111)
       HOP: 10101
  CLOCK: 111 => 对应晶体精度 为0-20PPm  
       一个字节的前5个位指定HOP(跳频)算法中需要的数据(HOPINCREMENT),另外三个位指定晶体的精度等级(可以有多少PPM的误差)
       SCA masterSCA, 三个位对应的晶体精度等级如下:       000: 251 ppm to 500 ppm
       001: 151 ppm to 250 ppm
       010: 101 ppm to 150 ppm
       011: 76 ppm to 100 ppm
       100: 51 ppm to 75 ppm
       101: 31 ppm to 50 ppm 
       110: 21 ppm to 30 ppm
       111: 0 ppm to 20 ppm
       
CON_REQ_hop_clock.png 

     14)CRC 
      同上

【通信协议解析】 BLE蓝牙数据包分析 ​ TYPE = 0xFF,厂商自定义的数据中,前两个字节表示厂商 ID,剩下的是厂商自己按照需求添加,里面的数据内容自己定义。 阅读详情

相关推荐

ble 空口包格式

ble 空口包数据格式简介

chenwh_cn的博客 2469

ble4.2扫描请求包详解(SCAN_REQ)

本文依照蓝牙核心规范Core_v4.2和核心规范补充Css_v10展开。 1、SCAN_REQ包PDU ScanA:扫描者的地址; AdvA:收到的广播者的地址。 2、SCAN_REQ整包结构 关于Preamble、Access Address、Header、CRC等字段可参考图解ble4.2空口包(air interface packets)一文。 3、SCAN_REQ抓包 可以看出扫描请求SCAN_REQ包的payload只有两个地址,与ADV_IND是不同的。扫描请求一般由主机发出,比如手机。

freemote的博客 2272

一分钟读懂低功耗蓝牙(BLE)MTU交换数据包

1.概述  * MTU: 最大传输单元(MAXIMUM TRANSMISSION UNIT) , 指在一个PDU (Protocol Data Unit: 协议数据单元,在一个传输单元中的有效传输数据)能够传输的最大数据量(多少字节可以一次性传输到对方)。  * MTU 交换是为了在主从双方设置一个PDU中最大能够交换的数据量,通过MTU的交换和双方确认(注意这个MTU是不可以协商的,只是通知对方...

viewtoolsz的博客 2万+

BLE数据包

在个人看来,accessAddress更多的是标识一个物理通道,通信双方约定好在哪个通道上碰头交换信息。因为整包数据传输工作在1Msybs 或者 2M sybs,所以在不包括CTE的情况下,整包数据传输需要44us~2128us时间。primary广播通道/Secondary广播通道以及周期广播通道上的packet使用广播通道Adv PDU;如果访问码b0是1,则Preamble取以0结束的值,即0xAA/0xAAAA;其中前4部分是强制的,最后一部分cte是可选的,用于AoA等用途。

shitailu2008的博客 2581

一分钟读懂低功耗蓝牙(BLE)广播数据包

一分钟读懂低功耗蓝牙(BLE)广播数据包 低功耗蓝牙 =》 BLE (Bluetooth Low Energy) 1. 怎样抓取BLE广播数据包    * 硬件:一个BLE设备(具有广播功能);          一台HOLLONG BLE SNIFFER    * 软件:Hollong 蓝牙4.0/4.1 BLE协议监控分析仪 软件         下载链接:         http://ww...

viewtoolsz的博客 1万+

一分钟读懂低功耗蓝牙连接数据包(Wireshark)

BLE 连接过程中有三个重要的数据包:SCAN_REQ, SCAN_RSP 和 CONNECT_REQ,本文将结合Wireshark的实际数据包进行分析。

迈微AI研习社 · 号主 3151

​一分钟读懂低功耗蓝牙(BLE)连接数据包

1.概述 BLE 连接过程中有三个重要的数据包:SCAN_REQ, SCAN_RSP 和 CONNECT_REQ。 SCAN_REQ: 扫描请求,由主设备(MASTER DEVICE)向从设备(SLAVE DEVICE)发出,目的是为了获得从设备的响应以得到更多的从设备 广播数据信息(包括设备名字,或者服务UUID,及其它如厂家特定格式的信息...

weixin_34355881的博客 221

windows BLE编程 net winform 连接蓝牙低功耗

winform 程序调用Windows.Devices.Bluetoot API 实现windows下BLE蓝牙设备自动连接,收发数据功能。不需要使用win10的UWP开发。 实际例子用vs2022编写,可直接编译运行

上一篇: 纬图 USB-CAN分析仪 中继 兼容ZLG CANopen DeviceNet J1939分析
下一篇: Hollong 蓝牙4.0/4.1/4.2 BLE协议监控分析仪
viewtoolsz
博客等级 码龄9年 105粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值