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

    文章

    80

    浏览量

    29521
  • GAP
    GAP
    +关注

    关注

    0

    文章

    15

    浏览量

    8714
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    零碳园区的智能化管理平台的应用层具体有哪些功能?

    零碳园区智能化管理平台应用层的核心定位,是“场景化、实操化、协同化”——以零碳目标为导向,贴合园区不同场景(工业生产、商业办公、住宅生活)的需求,将抽象的数据分析结果转化为具体的管理动作,实现“碳可
    的头像 发表于 05-07 11:29 100次阅读
    零碳园区的智能化管理平台的<b class='flag-5'>应用层</b>具体有哪些功能?

    FPGA实现CNN卷积的高效窗口生成模块设计与验证

    卷积神经网络(CNN)可以分为卷积、池化、激活、全链接结构,本篇要实现的,就是CNN的卷积中的window窗。
    的头像 发表于 04-15 10:35 289次阅读
    FPGA实现CNN卷积<b class='flag-5'>层</b>的高效窗口生成模块设计与验证

    S32K344如何配置 MCAL 和应用层模型?

    我想使用 S32DS 配置工具 simulink(MBD) 开发 CAN Receive 项目S32K344。我在 MBDT 中尝试了这个例子,但经过编程,它并没有实现我想要的功能。您能否建议我应该如何配置 MCAL 和应用层模型?我将不胜感激详细步骤。
    发表于 04-01 06:38

    无线通信的“隐形骨架”:一文读懂OSI七模型

    我们每天都在用手机聊天、刷视频、远程操控设备,但海量数据究竟是如何在空中穿梭的?背后离不开一套被称为“OSI七模型”的隐形框架。本文作为WiMi-net协议栈系列的开篇,用最通俗的快递系统比喻
    的头像 发表于 03-16 09:41 498次阅读
    无线通信的“隐形骨架”:一文读懂OSI七<b class='flag-5'>层</b>模型

    从8到30:AI服务器PCB层数进阶,PCle 5.0高速传输需求成关键

    行业深度分析报告显示,当前 AI 服务器 PCB 层数已实现大幅跨越,普遍达到 16-40 ,胜宏科技针对下一代服务器研发的 10 阶 30 PCB 已进入关键阶段。要知道,传统服务器 PCB
    的头像 发表于 02-26 17:02 1020次阅读

    PCB阻焊与助焊的本质区别

    在Altium Designer(AD)中设计PCB时,我们经常在层叠管理器里看到 Solder Mask 和 Paste Mask 这两。它们到底是什么?为什么总是成对出现?简单来说,可以把它们理解为PCB在生产和组装过程中,为了完成不同任务而穿的 “两件不同的衣服”
    的头像 发表于 01-06 18:50 3292次阅读
    PCB阻焊<b class='flag-5'>层</b>与助焊<b class='flag-5'>层</b>的本质区别

    基于以太网芯片的应用层方案

    聚焦于以沁恒微电子以太网芯片(如CH394/CH395及集成型MCU CH32V317等)为基础构建的多种高效应用层方案,阐述其如何以简化的硬件与低成本,实现丰富的网络功能。
    的头像 发表于 12-09 14:47 788次阅读
    基于以太网芯片的<b class='flag-5'>应用层</b>方案

    不止于4!华秋PCB 6板爆款重磅上线

    4之后,再看6上月,华秋PCB推出了4板爆款,以“真香”价格引爆市场。今天,华秋PCB怀着更大的诚意,为您带来承诺中的下一站——「华秋PCB6板爆款」正式登场!不止于降价,我们
    的头像 发表于 11-12 07:33 746次阅读
    不止于4<b class='flag-5'>层</b>!华秋PCB 6<b class='flag-5'>层</b>板爆款重磅上线

    应用层外设进行数据传输,是否应该调用rt_device_create,rt_device_register等函数呢?

    假如我要在应用层用一个新的usart2串口传输数据,那我应该是怎么做? 1.在工程未编译前将usart2加上,即定义宏BSP_USING_UART2,利用RT-Thread在硬件初始化
    发表于 10-11 06:29

    使用罗德与施瓦茨CMX500的吞吐量应用层测试方案

    5G NR(New Radio)吞吐量应用层测试是评估5G网络性能的一个重要方面,它主要关注的是在实际应用条件下,用户能够体验到的数据传输速率。这种测试通常包括了对下行链路和上行链路的吞吐量进行测量,以确保网络可以满足各种应用场景的需求,比如高清视频流、虚拟现实、增强现实
    的头像 发表于 09-02 13:56 8261次阅读
    使用罗德与施瓦茨CMX500的吞吐量<b class='flag-5'>应用层</b>测试方案

    多层板的历史、特点和关键技术

    多层板的制作方式是在绝缘基板或传统板件(双面板、多层板)表面交替制作绝缘、导电间连接孔,通过多次叠加形成所需层数的多层印制板。
    的头像 发表于 08-15 16:38 2014次阅读

    混合压PCB板的成本如何控制?

    RO4350B),非关键区域使用FR-4,可降低40%材料成本6。 ‌ 铜箔厚度动态调整 ‌ 电源局部使用2oz厚铜,其他区域保持1oz,节省铜材用量50%的同时确保性能6。 二、设计阶段降本 ‌ 层数精简 ‌ 通过优化布线将8
    的头像 发表于 08-15 11:33 1130次阅读

    如何从PCB焊盘移除阻焊和锡膏

    使用焊盘属性中 Solder Mask Expansion 的 “ Tented ” 选项:该选项会移除所有阻焊,导致焊盘顶层 / 底层的阻焊无开口(即完全覆盖)。阻焊扩展值为正值时表示向外扩展,若需要阻焊
    的头像 发表于 07-22 18:07 5669次阅读
    如何从PCB焊盘移除阻焊<b class='flag-5'>层</b>和锡膏<b class='flag-5'>层</b>

    基于SM4的文件加密解密功能实现(ECB模式)

    : ​​ 相关技术实现思路如下: 一、SM4加密解密 大部分的代码官网都有,我这里先介绍一下我的开发中踩坑的记录 如果看官方文档里的代码,你会发现,他对于加密
    发表于 06-29 13:21

    感知、传输应用层一体化:工控一体机厂家聚徽详解集成技术方案

    过程的全面智能化与高效化。本文将深入探讨工控一体机中感知、传输应用层一体化的集成技术方案,剖析其工作原理、技术优势以及实际应用案例。 一、工控一体机概述 工控一体机是一种专为工业环境设计的计算机设备,具备高可
    的头像 发表于 05-27 14:35 1537次阅读