BLE芯片的链路层定义了7种工作状态,同一时间只能处于一种状态,不同状态之间可以切换,一颗芯片可以有多个状态机同时工作,下面对这些状态进行介绍。

七大状态介绍

一、待机状态(Idle)

芯片既不发送也不接收数据,处于休眠。

特点:

可以从任何状态进入待机状态

可以从待机进入除连接状态外的所有状态

不发射不接收,最省电

举例:你的手环没在用时,芯片就在待机状态睡觉。

二、广播状态(Advertising)

芯片主动发送广告包,告诉周围"我在这里"。

作用:让别人发现你,并能回复扫描请求。

举例:蓝牙音箱进入配对模式,不断广播"我是XX音箱,快来连我"。

可以从广告状态直接进入连接状态。

三、扫描状态(Scanning)

芯片监听周围的广告包,寻找可用设备。

作用:发现附近的BLE设备。

举例:手机打开蓝牙,扫描附近设备,此时手机处于扫描状态。

四、发起状态(Initiating)

芯片接收特定设备的广告包,并回复连接请求。

作用:主动发起连接。

举例:手机点击"连接手环",进入发起状态,向手环发送连接请求。

可以从发起状态进入连接状态。

五、连接状态(Connection)

设备已建立连接,可以双向传输数据。

作用:进行数据交互。

举例:手环和手机已连接,正在同步步数和心率数据。

注意:只能从广播状态或发起状态进入连接状态,不能从待机直接连接

六、同步状态(Synchronization)

芯片接收周期性广告的数据包。

作用:同步接收定期更新的信息。

举例:接收BLE定位信标的周期性位置信息。

适用场景:需要定时接收广播数据但不建立连接。

七、等时广播状态(Isochronous Broadcasting)

芯片在等时信道上发送数据包。

作用:发送对时间敏感的数据流。

举例:BLE音频设备同步传输音乐到多个耳机(LE Audio)。

适用场景:需要精确时序的音频或数据传输。

八、状态切换规则

常见切换路径:

待机 → 广播 → 连接(外设被连接)

待机 → 扫描 → 发起 → 连接(中心设备主动连接)

连接 → 待机(断开连接)

任何状态 → 待机(随时可以休眠省电)

待机 → 广播/扫描/同步/等时广播(但不能直接到连接)

九、实际应用场景

智能手环:

  • 没用时:待机状态(省电)

  • 等待连接:广播状态(被发现)

  • 已连接:连接状态(传数据)

  • 断开后:回到待机

手机:

  • 搜索设备:扫描状态

  • 点击连接:发起状态

  • 连接成功:连接状态

  • 关闭蓝牙:待机状态

十、开发注意事项

状态切换要合理:不能从待机直接到连接,必须经过广播或扫描→发起。

多状态机场景:一颗芯片可同时运行多个状态机,比如一边广播一边扫描。

功耗优化:设备空闲时尽快进入待机状态,减少无意义的广播或扫描。

状态同步:应用层要了解当前链路层状态,避免在错误状态下操作。


原文:CSDN · BLE的7种工作状态