BLE低功耗蓝牙协议 & 通信流程(替代bluez节约16M ROM)

前言
之前提到的蓝牙驱动的编译bluez ,但是在实际使用的过程中发现,所需要的flash存储需要16M显然有点过大了,而且整体的编译非常的耗费时间,这研发成本周期长成本也高,于是有了新的解决方案,低功耗蓝牙ble 通过简易GAP和GATT协议通信也能实现蓝牙的功能,具体的实现网上有很多的案例,这边主要讲解一下介绍这个协议
author

daisy.skye的博客_优快云博客-嵌入式,Qt,Linux领域博主

daisy.skye_嵌入式,Linux,Qt-优快云博客daisy.skye擅长嵌入式,Linux,Qt,等方面的知识​编辑https://blog.youkuaiyun.com/qq_40715266?type

在蓝牙低功耗(BLE,Bluetooth Low Energy)通信中,GAP(Generic Access Profile)和GATT(Generic Attribute Profile)是两个核心协议,它们分别负责不同的功能层面。

GAP(Generic Access Profile)

GAP 负责设备的发现、连接建立、广告(Advertising)和扫描(Scanning)、设备的安全配对以及一些其他的基础连接行为。具体来说:

广告与扫描:GAP允许设备通过广播数据来宣布自己的存在(广告),同时其他设备可以监听这些广播(扫描),从而发现周围的蓝牙设备。

连接建立:一旦发现感兴趣的设备,设备之间可以通过GAP建立连接。

设备类型:GAP定义了两种设备角色:广播者(Advertiser)和观察者(Scanner)在发现阶段,以及中心设备(Central)和外围设备(Peripheral)在连接阶段。中心设备通常发起连接请求,而外围设备等待连接。

安全性:GAP还涉及一些基本的安全和隐私特性,如设备名称隐藏、随机地址生成等。

GATT(Generic Attribute Profile)

GATT构建在ATT(Attribute Protocol)之上,定义了服务和特性(Services and Characteristics)的结构化模型,用于在已建立连接的设备间交换数据。GATT分为服务器(Server)和客户端(Client)两部分:

GATT Server:

通常位于外围设备上,负责存储和管理数据(以服务和特性形式组织)。

提供数据访问接口,允许GATT Client读取或写入这些数据。

包含多个服务,每个服务又包含一个或多个特性,特性是数据的基本单位,可以被读取或写入。

GATT Client:

通常位于中心设备上,主动发起对GATT Server数据的读写请求。

在连接建立后,会搜索和发现GATT Server提供的服务和特性。

通过发送ATT请求(如读请求、写请求)与GATT Server进行交互,以获取或设置数据。

两者之间的关系

GAP负责设备间的初始发现和连接,是BLE通信的基础。一旦连接建立,GATT便接手,负责数据的具体传输和交互。GATT Server提供数据资源,GATT Client通过GATT协议操作这些资源,实现了BLE设备间复杂数据交换的功能。简而言之,GAP让设备能够找到彼此并建立连接,而GATT则定义了连接后数据是如何组织和传输的。

数据传输服务流程

蓝牙手机与另一个设备(如蓝牙耳机、智能手表或其他蓝牙设备)的数据传输服务流程大致遵循以下步骤:

设备发现:

广告与扫描: 蓝牙设备(如耳机)进入可发现模式,开始广播包含设备信息的广告包。手机作为扫描者,开启蓝牙并扫描周围广播的蓝牙设备。

配对: 用户在手机上选择发现的设备,发起配对请求。首次配对时,可能需要输入PIN码或通过简单配对流程确认连接。

建立连接:

手机作为中心设备(Central)向选中的外围设备(Peripheral)发送连接请求。

一旦设备同意连接,蓝牙链路层(L2CAP)建立连接,为后续的数据传输提供通道。

GATT服务发现:

连接建立后,手机作为GATT客户端会查询(Discover Services)外围设备上的GATT服务。

外围设备作为GATT服务器响应,提供其支持的服务列表,每个服务包含一个或多个特性(Characteristics)。

数据交互:

读取和写入: GATT客户端根据需要读取或写入GATT服务器上的特性值。例如,手机可以读取智能手环的健康数据或向耳机发送音频数据。

通知和指示: GATT服务器还可以向客户端推送数据更新,通过“通知”(Notification)或“指示”(Indication)机制。例如,心率监测器可以实时通知手机心率变化。

断开连接:

数据传输完毕或不再需要连接时,任一端(通常是手机)可以发起断开连接请求。

连接断开后,设备可以回到广播或待连接状态,或完全关闭蓝牙节省能源。

安全与隐私:

整个过程中,蓝牙通信受到安全措施保护,如加密和认证,确保数据传输的私密性和完整性。

这个流程概括了蓝牙设备间基于GATT协议的数据传输基本框架,具体实现细节可能因设备类型、操作系统和应用需求而有所不同。

client MTU

客户端MTU(Client Maximum Transmission Unit)是网络通信中与服务器端MTU相对的概念,它同样指的是网络层协议(如IP)或链路层协议(如Ethernet、PPP等)能够处理的最大数据包大小。在蓝牙低功耗(Bluetooth Low Energy, BLE)的上下文中,客户端MTU是指BLE客户端设备(例如智能手机或传感器)能够接收的GATT(Generic Attribute Profile)服务数据的最大大小。

在BLE通信中,MTU的大小影响了数据传输的效率,因为较大的MTU可以允许在单个ATT包中传输更多的数据,从而减少传输的次数和相关的开销。BLE允许通过ATT MTU交换过程来协商双方(客户端和服务器)之间的最大传输单元,以优化数据交换的效率。默认的BLE MTU通常是20字节,但可以通过协商增加到更大的值,例如23、517等,具体取决于设备和配置。

在实际应用中,客户端和服务器可能会选择一个双方都能接受的共同MTU值,以便在数据传输时最大化效率。如果一方的MTU小于另一方,那么数据传输将受限于较小的MTU值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值