低功耗蓝牙设备DA1458x芯片开发之更新连接参数

本文详细介绍了低功耗蓝牙设备与手机连接过程中的抓包方法及连接参数更新流程,包括从设备如何发起连接参数更改请求以及主设备如何响应这一请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天将详细的讲解下低功耗蓝牙设备和手机连接时的抓包,以此帮助我这样的小白,并积累经验~

我用的外设芯片是DA14580芯片,协议栈是Dialog的IP蓝牙协议栈,和手机相连,利用sniffer packet抓包~欢迎指导交流

首先来了解下理论知识,更新参数即在蓝牙主从设备建立连接之后,主设备或从设备发起的对连接过程中参数的更改的行为,下面我们进行的是从设备发起连接参数更改请求,主设备接收请求并更改参数:


从上图可以很清楚的看出从机发起连接时,和主机的交互流程。

然后进行操作,将Dongle和低功耗蓝牙开发板连上电脑,开发板中的程序运行起来~走起
  


进入到sniffer packet中(sniffer packet不会的请自行百度啊),单击上图中的三角形,运行抓包工具,如下,可以看到很多广播数据包
 

出现如下图所示的InitA,即进行连接


上图不清楚,下面用表格将图中的关键参数列出来~

 



上图中的参数为:
Channel:0x25,广播信道,转化为十进制为37;低功耗蓝牙的广播地址为37/38/39中的任意一个;
InitA:连接发起者的蓝牙设备地址,长度为6字节;
AdvA:广播者的蓝牙设备地址,长度为6字节;
AcessAddr:接入地址,在两个低功耗设备建立连接之前,master设备负责生成接入地址,类似于一个四个字节的随机数,当连接建立之后,master和slave都使用该地址进行通信;连接断开后,接入地址自动失效。
CRCInit:CRC初始值,是master和slave用来验证数据包的完整性的。
WinSize:定义了设备每次开启收发机的窗口时间,无论是master还是slave,都遵循WinSize的定义。

WinOffset:定义了在CONNECT_REQ命令之后的一个通信窗口的偏移量,在slave设备接收到请求命令后,设备需要占用一些时间,根据LLData参数进行一些相关的配置。


在CONNECT_REQ之后,第一个由master发送到slave的数据帧,称为“锚点”,因为之后的所有的连接事件都以该时刻为基准。
ConnInterval的取值范围在7.5ms至4s之间,因此,确定锚点之后,master和slave将按照ConnInterval确定的时间间隔进行数据交互。
ConnInterval = Interval*1.25ms
对低功耗蓝牙技术,为了实现低功耗特性,不需要每次ConnInterval都产生连接事件,因此引入参数Latency,可以有效减少连接事件的产生,ConnSlaveLatency = Latency,这个参数定义了slave设备可以忽略多少个连续的连接事件,这表示slave不需要在每个连接事件产生的时刻都唤醒并打开射频接收机进行帧听,从而减少slave设备的功耗。
Timeout:定义了连接超时的长度,connSupervisionTimeout = Timeout*10ms,其值再100ms到32s之间。
注意:connSupervisionTimeout必须大于(1+ ConnSlaveLatency)*ConnInteral*2。否则,slave设备在Lantency状态,也会被认为是连接超时而导致连接断开。

ChM和Hop:跳频相关的,当连接建立以后,master和slave按照预先设定的信道图谱,和跳频跨度进行跳频工作。信道图谱来自ChM参数,每跳跨度来自Hop参数。Hop的取值范围在5—16之间。

我进行了外设发起连接参数更新的请求,手机端判断是否接受该请求并更新参数。下面是外设发起更新参数的过程


从上图可以看出,外设给出了最小Interval和最大Interval,SlaveLatency为0,Timeout时间延长。ATT将数据传输到LL层,粉色的LL层给出详细参数请求。

之后,土黄色的L2CAP层收到来自手机端的应答,其Result为0x0000,表示更新参数成功。

至此,低功耗蓝牙外设发起参数更新的过程结束啦~撒花~



DA1458x软件平台开发手册 DA1458x software platform Reference 3.2如何使用此文档 本文档的重点是作为参考,即开发人员不需要通读整个文档;读者的关键是熟悉本文中描述的概念,以便在开发过程中能够使用软件开发人员的指南,以获得所需的结果。 嵌入式,是新的和/或芯片对话框的da1458x系统软件开发平台(SOC)建议审查的内容,然后通过阅读从3.1节到4.8节,然后11节熟悉开发环境的支持。然后建议阅读和使用文档[ 15 ]。如果有人需要更好的理解,并且想深入研究某个特定的主题,他/她可以回到这个文档中,在这个引用中涉及这个主题的特定章节。为了更深入的分析,这个参考文件指向附录或其他文档中更深入的技术说明。 更详细地叙述具体的主题。 这个参考文档不打算提供对蓝牙低能耗的透彻理解,它既不包括内部数据的组织方式,也不涉及蓝牙设备如何相互通信以及设计支持的设计和应用时可能需要的关键设计决策和权衡。 它打算但是提供给软件开发商足够的理解对话的da1458x平台高级API的方法为BLE及其外围设备以及信心如何使发展更快、更好的应用程序时,使用da1458x SoC。蓝牙低能耗技术(2010)是蓝牙专用兴趣小组(SIG)发布的蓝牙4版核心规范的一部分。从4版本开始,蓝牙标准支持两种不同的无线技术系统:蓝牙低能量和基本利率(BR),通常被称为基本速率/增强数据率(BR / EDR)。 在蓝牙低功耗设计的早期阶段,SIG致力于以最小的功耗开发低复杂度的无线标准,并提供低带宽。 优化,从而使低成本应用。在这种情况下,蓝牙低能量被设计用来每次传输非常小的数据包,而消耗的功率明显少于 类似的BR / EDR设备。此外,它的设计还支持高效率的实现,具有严格的能源和硅预算,促进应用程序使用一个单一的硬币电池延长了一段时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值