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

原创 2016年08月30日 10:57:07

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

我用的外设芯片是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,表示更新参数成功。

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



低功耗板子测试功耗的方法

在蓝牙、wifi、ZigBee等低功耗组网通信和智能电子设备开发过程中,功耗的调试是至关重要的一部分, 怎样简易的测试功耗以方便我们对功耗的调试呢,介绍一种万用表测试整体功耗的方法。 如图...

DA14580 --- 连接参数

1.目的      分析代码程序是如何执行开启广播的 2.分析 3.平台: 协议栈版本:DA1458x_SDK 编译软件:keil 4.72 硬...

DA1458x使用之第一篇——GPIO

最近刚做完一个DA14580的项目,对这个芯片的使用也是有了一些心得,现在打算写出来,分享给大家。从最简单的GPIO开始吧,打算一天写一篇,大家有问题可以留言或者评论,互相交流。  1.首先...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

全球最低功耗蓝牙单芯片(DA14580)系统架构和应用开发框架分析

笔者将对全球最低功耗蓝牙单芯片DA14580的系统架构和应用开发框架进行分析,之后再讲解如何进行应用开发。...

BLE 包结构及传输速率

蓝牙BLE的最大特点就是低功耗,而低速率和简单的交互协议是降低功耗的重要组成部分。因此BLE一般应用于低速率的近场控制和数据交互,如智能家电、运动手环等等,小数量的控制和交互对传输速度没有要求,每秒1...
  • tanyjin
  • tanyjin
  • 2016年12月08日 19:22
  • 1105

Android6.0蓝牙开发中获取附近低功耗蓝牙设备结果权限问题分析

问题描述: 近期做一个扫描附近低功耗蓝牙设备获取到rssi并进行一系列的相对的定位的功能。在开发前期一直使用低版本(Android6.0以下)的手机进行测试,没有任何问题。在运行到Android6....

全球最低功耗蓝牙单芯片DA14580的软件体系 -层次架构和BLE消息事件处理过程

网络罕见的蓝牙单芯片DA14580开发分享 -层次架构和BLE消息事件处理过程

全球最低功耗蓝牙单芯片DA14580的硬件架构和低功耗

本文分析全球最低功耗蓝牙单芯片DA14580的硬件架构和睡眠、唤醒技术。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:低功耗蓝牙设备DA1458x芯片开发之更新连接参数
举报原因:
原因补充:

(最多只允许输入30个字)