ESPC3入门16低功耗蓝牙广播

2023-10-27 来源:本站原创 浏览次数:

一、蓝牙协议栈

本文聚集于蓝牙广播,对蓝牙的整体协议栈并不做太多介绍。

1.协议栈图示

在这里插入图片描述

这里重点介绍一下LinkLayer。LinkLayer是蓝牙协议栈的第二层,它负责处理蓝牙设备之间的连接和通信。LinkLayer包括两个子层:LL层和LM层,其中:-LL层负责处理链路管理和数据包传输-LM层负责处理链路控制和链路维护。

在LL层中,蓝牙广播数据被封装在广播数据包中,并通过广播信道发送到周围的蓝牙设备。

2.广播

在蓝牙低功耗应用中,广播是一个重要的技术,可以用于实现设备发现、连接维护、位置服务等应用场景。

3.GAP

GAP(GenericAccessProfile)是蓝牙协议栈中的一个重要协议,它定义了蓝牙设备的访问模式和行为。GAP协议为蓝牙设备提供了一个标准化的接口,使得不同的蓝牙设备可以互相识别和交互。其中,广播是GAP协议的一个功能,用于在蓝牙设备之间传输短数据。

在蓝牙低功耗(BLE)应用中,GAP协议和广播密切相关。GAP协议定义了广播的格式、参数和过程,使得不同设备可以互相识别和交互。在广播过程中,主机设备可以通过GAP接口发送广播包,从机设备可以通过GAP接口接收广播包,实现设备之间的互动。广播还可以用于设备发现、连接维护、位置服务等应用场景。

4.PHY

PHY代表物理层(PhysicalLayer),它是蓝牙技术中的一层协议,主要功能包括传输媒介的选取、传输信道的调制和解调、数据的编码和解码、差错检测和纠正等。

在蓝牙技术中,有多种不同的PHY,包括1Mbps的经典蓝牙PHY,2Mbps和CodedS8的LEPHY,用于不同的应用场景和需求。

5.CodedPHY

CodedPHY是BLE(蓝牙低功耗)协议定义的一种物理层技术。与传统的1Mbps和2MbpsPHY相比,CodedPHY的传输速率较慢,通常在kbps或kbps左右,但可以提供更远的传输距离和更好的抗干扰性能。因此,CodedPHY常用于物联网等需要远距离传输和低功耗的应用场景。

在ESP32系列芯片中,只有支持BLE5.0的芯片才能支持CodedPHY,IDF版本要4.1及以上。

6.ESP32内部结构示意图

在这里插入图片描述

二、蓝牙广播

1.BLE信道

低功耗蓝牙(BLE)使用2.4GHz频段,频段范围为MHz至MHz。BLE的频段范围与Wi-Fi和蓝牙2.0相同,但BLE使用的频道不同,所以它们不会发生冲突。

BLE使用40个频道,每个频道之间的带宽为2MHz。

各信道划分如下:

在这里插入图片描述

其中:37、38、39是广播信道,其它是数据信道。

2.广播数据包格式

一个广播数据包最长为37个字节,前6个字节为设备地址,后面是数据区,数据区最大31个字节,又分为若干个ADSturctu。数据区没用完的话,系统会在后面补0。

在这里插入图片描述

3.ADStructu格式

每个ADStuctu由长度、类型、内容三个部分组成,长度指的是类型+内容字节数。

4.ADStuctu类型定义

一些BLE广播类型定义值如下:

0x00:广播标志0x01:不完整的16位服务UUID列表0x02:完整的16位服务UUID列表0x03:不完整的32位服务UUID列表0x04:完整的32位服务UUID列表0x05:不完整的位服务UUID列表0x06:完整的位服务UUID列表0x07:本地名称0x08:TX功率级别0x09:蓝牙名称0x0A:简单配对的HashC0x0B:简单配对的随机数R0x0C:设备ID0x0D:服务数据0x0E:制造商特定数据0x0F:广播间隔

5.广播数据解析示例

使用一般的安卓端蓝牙调试工具就可以看到针对广播包的解析,下面是一个实例:

在这里插入图片描述

部分内容解析如下:-0x01:设备标识-0x09:完整蓝牙名称(UTF-8编码)-0x02:16BitUUID-0x0a:蓝牙信号发射功率(上面示例无此数据)-0xFF:厂商自定义数据

6.广播器和扫描器

BLE通过GAP协议来实现设备之间的互通,其中定义了两种基本的设备类型:-广播器(Broadcaster)-扫描器(Scanner)

广播器发送广播包,扫描器接收广播包。基于GAP,BLE还定义了三种设备角色:中央(Central)、外围(Peripheral)和观察者(Observer),分别用于实现不同的通信模式。

在GAP中,广播包包含设备的基本信息,如设备名称、设备类型、设备服务等,同时还包含了一些标志位,用于标识设备是否可以被扫描或连接。具体来说,广播包中的Flags字段用于标识设备是否支持连接:

如果Flags字段中包含LELimitedDiscoverableMode标志,则表示设备可以被扫描,但不可以被连接;如果Flags字段中包含LEGeneralDiscoverableMode标志,则表示设备可以被扫描和连接。

三、ESPIDF的广播demo

在ESP32IDF中BLE广播示例程序multi_adv_demo里,演示了同时广播多种不同类型的广播,其中:

1.1Mphyextendadv

使用1Mbps的PHY速率,可连接广播。

2.2Mphyextendadv

使用2MBps的PHY高速广播,可扫描。

3.1Mphylegacyadv,ADV_IND

1M高速广播,

4.codedphyextendadv

codedphy广播,可连接。

四、源码分析

原来的demo提供了四种类型广播,本文主要介绍其中的1MBpsPHY部分的代码。

1.参数设置

首先需要定义发送广播需要的几个参数:

定义6个字节的

转载请注明:
http://www.wqopd.com/ynyzl/12323.html
  • 上一篇文章:

  • 下一篇文章:
  • 网站首页 版权信息 发布优势 合作伙伴 隐私保护 服务条款 网站地图 网站简介
    医院地址: 健康热线:
    温馨提示:本站信息不能作为诊断和医疗依据
    版权所有 2014-2024
    今天是: