解析后的地址没有失效期,为避免丢失,请自行收藏网址!
后续也可以直接访问 代下牛 www.dxn666.cn 自助解析!

【Bluetooth蓝牙开发】十、BLE蓝牙通信流程(建立连接,广播,扫描,断开连接)

img
个人主页:董哥聊技术
我是董哥,嵌入式领域新星创作者
创作理念:专注分享高质量嵌入式文章,让大家读有所得!
img

 
所有文章汇总
 

上文已经了解了HCI接口,至此,已经可以去学习抓包,并且分析蓝牙通信流程了。该部分主要介绍一些HostController之间的HCI通信流程图,重点关注消息序列表。

下文仅仅提供 一部分,不能代替所有的方案。

Core5.0 P2709

 

1、初始化蓝牙控制器

两个设备均需要初始化蓝牙Controller

image-20220630102559620

该流程主要有几个HCI命令

  • Reset:重置控制器和链路管理器
  • Read Local Supported:读取一些特性,检查是否支持低功耗
  • Set Event Mask:使能控制器返回给主机的Event
  • Read Buffer Size:检查是否有可用的缓存空间
  • Read BDADDR:都设备地址

命令流程可以参考我的抓包数据

image-20220728133725756

 

2、设置蓝牙控制器为广播状态

初始化蓝牙控制器后,发起广播的流程

image-20220630102723442

主要涉及以下几个HCI包

  • LE Set Advertising Parameters:设置广播相关参数,包括:广播间隔,广播类型,广播通道等
  • LE Set Advertising Data:设定广播数据包
  • LE Set Scan Response Data:设定扫描响应数据,一般蓝牙的名称在这里设置。
  • LE Set Advertising Enable:开启/关闭广播

 

下面为抓包数据

image-20220728134005500

 

3、设置蓝牙控制器为扫描态

一般为手机端设置,设置为扫描状态,扫描设备端发出的广播:

image-20220630111211681

主要涉及以下几个HCI包

  • LE Set Scan Parameters:设置扫描参数
  • LE Set Scan Enable:设定扫描使能
  • SCAN_REQ
  • SCAN_RSP
  • LE Set Advertising Report:获取广播报告

 

4、发起连接请求

Device B设置为广播,Device A发起连接

image-20220728135246468

主要涉及以下几个HCI包

  • LE Create Connection:建立连接
  • LE Connection Complete:标志着连接链路建立完成

下面为抓包数据

image-20220829151723067

 

5、数据交互

一旦两个设备建立连接,就可以发送数据了。

image-20220630141846099

6、断开连接

一旦两个设备不需要去保持连接,两个设备都可以主动关闭连接链路。

  • Device A主动关闭

image-20220829150143918

  • Device B主动关闭

image-20220829150205862

主要涉及以下几个HCI包

  • HCI_Disconnect:终止一个存在的链接
  • Disconnection Complete:标志着链路的终止

下面为抓包数据

image-20220829152123798

 

img
img