• BLE控制器之链路层一


    BLE 协议之链路层介绍

    链路层是低功耗蓝牙体系里面最复杂的部分,它负责广播、扫描、建立和维护连接、以及确保数据包按照正确的方式组织、正确的计算校验值以及加密序列等。

    链路层包含三个基本概念;信道、报文、过程

    信道

    首先来说信道,信道包含广播信道和数据信道。

    低功耗蓝牙使用40个信道,所以其信道宽度比经典蓝牙的72个信道所使用信道宽度宽,为2MHz,而经典蓝牙信道宽度为1MHz。

    广播信道

    未建立连接的设备使用广播信道发送数据,总共3个,为37,38,39. 各个广播信道之间的频点相差至少24MHZ,这是为了提供抗干扰性而设计的。基本上和wifi等1,6,12等错开,

    外设通过广播信道进行广播,通告自身为可连接或可发现的,并且执行扫描或者发起连接。

    数据信道

    连接后的设备则通过数据信道来进行数据传输。

    跳频算法主要应用在数据信道中,跳频的简单理解为:

    自适应调频能够将一个已知的坏信道映射到一个已知的好信道,从而减少其他设备对数据
    报文传送的干扰,为了实现这一点,连接中的两个设备都要记录好、坏信道的映射关系,如
    当前信道是一个好信道,则将其映射到好信道的集合中去。举例说明如下:
    假设一个低功耗蓝牙设备处于使用wifi 1信道连续通信的wifi接入点和设备的干扰范围之内,
    低功耗会将编号为0-8的链路层数据信道标记为坏信道。这意味着当两个设备通信的时候,它们
    会循环切换这些坏信道,并将其映射到好信道之上。

    自适应调频冲映射实例如下:

    信道的重映射保证了低功耗蓝牙面对严重干扰时依然能够传输数据,这一机制能让设备迅速应对新的干扰。

    在这两个信道上的数据发送均为小数据包,封装了发送者给接受者的少量数据,无论是广播信道还是数据信道,基本的数据包的格式相同,所不同的就是内容而已。每一个数据包包含有最少80比特的地址、报头和校验信息。

    报文结构

     对报文结构进行解析一下。

    1,传输顺序

    传输时候是从低字节的低位开始传输的,比如:传输0x2513,其对应二进制为: 00100101     0001 0011, 则传输的时候是: 11001000 10100100,   即低字节3的低位开始。

    2,前导字节

    前导部分为01010101或者10101010 序列,取决于第一个bit是0还是1,用于接收者同步比特计时和设置自动增益控制。

    接收机可以通过前导来检测信号强度以及0、1比特所使用的频率,从而确定自动增益控制来调整增益到一个合适的范围之内。

    3,接入地址

    32bit 接入地址在广播信道中为固定值:0x8e8dbed6, 而在数据信道数据包是完全随机的私有值。

    广播接入地址主要在广播报文中使用。

    为什么要选择0x8e8dbed6, 因为实际使用中发现其相关特性非常好,能够更大的抗干扰。

    4,报头

    8bit的包头字段描述数据包中的内容。包括报文类型,

    对于广播报文来说,其类型有7种:

          

    • ADV_IND: 通用广播
    • ADV_DIRECT_IND 定向连接广播
    • ADV_NONCONN_IND 不可连接广播
    • SCAN_REQ 扫描请求
    • SCAN_RSP 扫描响应
    • CONNECT_REQ 连接请求
    • ADV_SCAN_IND 可扫描广播

    数据报文的报头为:

    广播报文和数据报文的长度域有所不同。这一设计的主要原因是,广播报文除了最多31个字节的数据外,还要包含6个字节的广播设备地址,6个字节加31个字节导致报文长度最多为37个字节,因此需要6bit的长度域,而数据报文长度不是那么关键,多数待传的数据只有几个字节,因此达到最大长度的报文很少用到。但是如果报文被加密,则需要包含4字节的消息完整性检查域,实际的净荷数据减少到最多27个字节,因此为了简化,即使不加密的报文净荷也不允许超过27个字节的限制。以减低链路层的复杂度。

    5,长度

    另一个8bit的长度的字段描述载荷的长度。要注意的是长度最大不超过37,所以8bit可以完全满足长度描述

    数据部分就位变长的有效数据部分,包含了双方相互数据传输的有用信息。

    可以发送的最短报文是空报文,时长为80us,满载时的最长报文时长376us。(因为物理层1us传输1个bit),大部分广播报文只有128us,而大部分数据报文时长为144us

  • 相关阅读:
    PyQT5速成教程-4 Qt Designer实战[上]
    使用Qt Designer进行布局
    PyCharm+QT Designer整合
    Qt Designer 的使用
    Python | 一行命令生成动态二维码
    Python 标准库、第三方库
    Python list列表的常用操作方法
    Python+Selenium 自动化测试获取测试报告内容并发送邮件
    ”Tomcat version 5.5 only supports J2EE 1.2, 1.3, and 1.4 Web modules“解决方案
    linux查找符合条件的文件并删除
  • 原文地址:https://www.cnblogs.com/yunxiangworld/p/7994523.html
Copyright © 2020-2023  润新知