0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GAP层和GATT层,SM层完成应用层数据交互和加密解密!

丫丫119 来源:未知 作者:肖冰 2019-09-20 10:59 次阅读

实验用到的工具:

蓝牙主机:TI BTool + CC2540 dongle

蓝牙从机:CC2541模块

抓包工具:TI Sniffer + CC2540 dongle

手机工具:BLE调试工具箱 (无线技术联盟微信公众号关联的蓝牙测试工具)

01

连接请求

TI的Btool是个非常好用的PC主机小工具,其部分界面如下所示,在Discover/Connect界面,可以配置不同的连接参数,选择扫描以及根据扫描到的广播设备有选择性的进行连接。多说一句whitelist,什么是whitelist?这个和微信公众号的白名单一样,是得到主机授权的从机设备,当选择只扫描whitelist的设备时(前提是已经在主机上添加了whitelist设备),主机只会扫描过滤在whitelist里面的设备。

从下图截获的控制数据包可以看到,主机端在广播扫描之后发出一条CONNECT_REQ的指令,附带LL data,开启了主从设备连接的过程的第一步。TI的工具做的比较人性化,可以从该条语句的注释可以看到

Adv PDU Header Type的值为5,对应Spec的值是CONNECT_REQ。

在指令后面标注出发起端(主机)和从机端的Mac地址,然后是LL data。

这一条指令严格来说也是属于广播范畴,其数据格式说明可以参考上一篇文章。

展开CONNECT_REQ包,其数据包格式可分为前导,接入地址,数据包,CRC效验,详细规范如下:

PDU数据包分可分为两个部分,Header部分是指令(CONNECT_REQ),payload是详细LL data,拉出LL Data来看,如下图所示:

下面对LL Data格式详细说明:

AA:连接中的两设备的接入地址,如下图所示,

CRCInit:CRC 初始化

WinSize:主机发送第一包数据的时间窗口

Winoffset:主机发送第一包数据的偏移时间

WinSize和Winoffset是配和使用,主机在发起CONNECT_REQ开始的Winoffset+1.25ms内准备和从机建立连接,这段时间被称为连接建立准备时间,WinSize是主机第一包数据发送的时间窗口范围。

Interval:蓝牙连接间隔时间。

Latency:连接延迟,主多次请求才唤醒从机交互一次数据。

Timeout:超时断开连接。

ChM:跳频表,主机根据信道情况给出一张跳频表,约定和从机可用的信道(0-36信道),0表示该信道不可用,1表示该信道可用。

Hop:跳频阶跃,hop是一个5~16的值。

SCA:休眠时钟校正范围。

跳频算法介绍:

跳频算法用于数据连接时候,数据信道为37个,跳频公式如下: unmappedChannel = (lastUnmappedChannel + hopIncrement) mod 37

fn+1=(fn+hop) mod 37

hop是一个5~16的值,每次调频之后中心频率加hop值 mod 37。因为都是正整数,这个表达式在软件中非常容易实现,软件中通过求余运算便能完成运算,协议规定第一次连接事件中fn=0,fn+1=(0+hop) mod 37,也就是hop信道编号。

02

连接事件

连接请求发出之后,开始进入连接状态,空中数据包如下所示,由绿色部分转变为黄色部分。

进入蓝牙连接状态,连接状态的数据包格式如下所示,PUD数据包包含两个部分,头字说明和数据包,头字说明里面有几种类型,分别在LLID里面详细规定,NESN和SN控制主从发送的数据包是否被正确接收。

LLID:数据包类型格式

NESN:下一个数据包序列

SN:数据包序列

NESN和SN是配合使用,他们的作用是来标识主从是否正确交互。如主从交互所示,主发心跳包或者数据时,标记NESN和SN给从机,从机在接收到主机标识的NESN和SN之后,回传NESN和SN+1给主,主接收到和之前发送的相差1表示之前数据正确传输,如果主机接收到的回传值是非(NESN和SN+1),表示数据可能在空中存在都是,此时需要重传。

03

数据交互

从机发起了MTU更新:

可以发现该LL Data出现橙黄色部分,抓包工具对数据进行的解析,橙黄部分表示从机要求更新MTU的大小,然后和主机相互约束一个MTU的值,后面数据包的格式及按照新约定的MTU大小来传输数据。

总结

用一张图作为总结,整个链路层的连接的流程图如下所示:

所以要想连接一个蓝牙设备,主设备只需要做几个动作,自身初始化,扫描周边设备,对特点设备发出连接请求,开始交换数据。

到此低功耗蓝牙就相互连接上了,后面应用层数据交互和加密解密就要交给GAP层和GATT层,SM层来完成,我们下次再讲解。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SMS
    SMS
    +关注

    关注

    0

    文章

    76

    浏览量

    28552
  • GAP
    GAP
    +关注

    关注

    0

    文章

    15

    浏览量

    8298
收藏 人收藏

    评论

    相关推荐

    OSI七模型中的数据封装过程

    数据能够在不同网络之间顺利传输,按层次将数据添加相应的协议头和尾的过程。每一在传输数据时,会在接收到的
    的头像 发表于 11-24 11:11 244次阅读

    详解KiCad中的

    “  不同EDA对于PCB中物理的定义基本相同,比如信号、丝印、阻焊、助焊等。但对于工艺(辅助)的定义会略有不同,比如Altium Designer没有专门的板框
    的头像 发表于 11-12 12:21 184次阅读
    详解KiCad中的<b class='flag-5'>层</b>

    PCM2707C是否支持Android系统?PCM2707C Android应用层怎么写?

    有如下两个问题,帮忙看看,谢谢! 1,PCM2707C是否支持Android系统 2,PCM2707C Android应用层怎么写?如何获取USB上的音频数据
    发表于 10-30 07:46

    Linux应用层控制外设的两种不同的方式

    众所周知,linux下一切皆文件,那么应用层如何控制硬件,同样是通过 文件I/O的方式来实现的,那么应用层控制硬件通常有两种方式。
    的头像 发表于 10-05 19:03 323次阅读
    Linux<b class='flag-5'>应用层</b>控制外设的两种不同的方式

    神经网络中的卷积、池化与全连接

    在深度学习中,卷积神经网络(Convolutional Neural Network, CNN)是一种特别适用于处理图像数据的神经网络结构。它通过卷积、池化和全连接的组合,实现了
    的头像 发表于 07-11 14:18 4724次阅读

    反向传播神经网络分为多少

    层数可以根据具体问题和数据集来确定,但通常包括输入、隐藏和输出。 输入 输入
    的头像 发表于 07-03 11:02 386次阅读

    在STM32F407官方LWIP例程中,怎样修改把需要发送的数据直接由应用层映射到数据链路层?

    STM32F407 以太网DMA数据发送问题,最近在做一个关于电网IEC61850通信项目,其中9-2SV协议要求应用层数据直接映射到数据链路层,不需经表示、会话
    发表于 04-29 06:21

    什么是PCB叠?PCB叠设计原则

    对于信号,通常每个信号都与内电直接相邻,与其他信号有有效的隔离,以减小串扰。在设计过程中,可以考虑多层参考地平面,以增强电磁吸收能力。
    的头像 发表于 04-10 16:02 2310次阅读
    什么是PCB叠<b class='flag-5'>层</b>?PCB叠<b class='flag-5'>层</b>设计原则

    华为显示面板专利公布,聚焦介质、平坦化、像素界定及电路设计

    该专利主要内容如下:显示面板由间介质、平坦化和像素界定有序堆叠而成;在显示面板非像素区的第一功能内置入内切结构和至少一个电极搭接结
    的头像 发表于 02-21 09:40 597次阅读
    华为显示面板专利公布,聚焦介质<b class='flag-5'>层</b>、平坦化<b class='flag-5'>层</b>、像素界定<b class='flag-5'>层</b>及电路设计

    rfid属于物联网的哪个

    交换,进而提高效率、减少人为干预、优化资源利用等。物联网的技术结构分为感知、传输应用层等几个层次,其中感知是构建物联网最基础和关键的一
    的头像 发表于 01-11 10:23 4155次阅读

    物联网结构之应用层

    物联网应用层利用经过分析处理的感知数据,为用户提供不同类型的特定服务,其主要功能包括对采集数据的汇集、转换、分析,以及用户呈现的适配和事件触发等。网络
    的头像 发表于 12-28 14:49 826次阅读
    物联网结构之<b class='flag-5'>应用层</b>

    OSI七模型如何帮助网络通信?

    OSI(开放系统互联)七模型是计算机网络体系结构的一种描述方式,它为不同系统之间的通信提供了统一的标准。这个模型从低到高分别是:物理数据链路层、网络、传输
    的头像 发表于 12-21 16:27 556次阅读

    板如何设置板层

    板是一种常用于电子产品中的印制电路板(PCB),具有四个层次或层面。在设计四板时,需要合理设置板层,以优化电路性能和信号传输。本文将详细介绍四板的板层设置方法。 四板概述 四
    的头像 发表于 12-21 11:26 1986次阅读

    电缆屏蔽的作用 电缆屏蔽的种类和使用场景

    电缆屏蔽的作用 电缆屏蔽的种类和使用场景 电缆屏蔽正确的接地做法 电缆屏蔽接地注意事项 电缆屏蔽是电缆结构中的一部分,具有重要的作
    的头像 发表于 12-11 15:05 2043次阅读

    为什么6板最好设计2个接地层?

    提到6板分层布局,一般业内主流会推荐这个设计方案:【电源层数1,地层数2,信号层数3】但从成本方面考虑,我们会希望板子布局越多线路越经济,即信号
    的头像 发表于 12-08 11:11 581次阅读
    为什么6<b class='flag-5'>层</b>板最好设计2个接地层?