极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2114|回复: 0

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

[复制链接]
发表于 2018-10-31 15:26:24 | 显示全部楼层 |阅读模式
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
      同上
125433298sxz89sg88g8b9.png
110239gbgljnh7jwmw1bff.png
1254347ddyfkdm767kx778.png
1102586bgd9dos4hg0hof6.png
1102550s46yi8ywzy8pd6i.png
1102465tfasifnjnl03l0c.png
110241owv3roo36eolmr63.png
110243t2sthstt4s242f22.png
110245pt2pm9rr2928w9o5.png
110248xg75riz7ya2an59n.png
110249rt8edgu00o8gpyrc.png
110250yvwv7ibpwvbnn9f7.png
110251rbpsbz15iqzlsju0.png
110253eepmzr55fuszsseu.png
110254qi49i9zcdvznbsce.png
110259qoqmf0dnafp7znl5.png
110301dgcspcgku0qkmkd2.png
110302b97nb0nuub7z334c.png
110303egu0nz7egezyekxc.png
110307vsgktjd5ga8daydd.png
110308xxxmzvxualay4uxo.png
110311yopooqpaxy2yqqht.png
110312lf1052vrr0023g5n.png
1102423kcjlqelkpr3x2kl.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2019-12-10 19:28 , Processed in 0.048762 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表