BLE芯片的链路层定义了7种工作状态,同一时间只能处于一种状态,不同状态之间可以切换,一颗芯片可以有多个状态机同时工作,下面对这些状态进行介绍。
七大状态介绍
一、待机状态(Idle)
芯片既不发送也不接收数据,处于休眠。
特点:
可以从任何状态进入待机状态
可以从待机进入除连接状态外的所有状态
不发射不接收,最省电
举例:你的手环没在用时,芯片就在待机状态睡觉。
二、广播状态(Advertising)
芯片主动发送广告包,告诉周围"我在这里"。
作用:让别人发现你,并能回复扫描请求。
举例:蓝牙音箱进入配对模式,不断广播"我是XX音箱,快来连我"。
可以从广告状态直接进入连接状态。
三、扫描状态(Scanning)
芯片监听周围的广告包,寻找可用设备。
作用:发现附近的BLE设备。
举例:手机打开蓝牙,扫描附近设备,此时手机处于扫描状态。
四、发起状态(Initiating)
芯片接收特定设备的广告包,并回复连接请求。
作用:主动发起连接。
举例:手机点击"连接手环",进入发起状态,向手环发送连接请求。
可以从发起状态进入连接状态。
五、连接状态(Connection)
设备已建立连接,可以双向传输数据。
作用:进行数据交互。
举例:手环和手机已连接,正在同步步数和心率数据。
注意:只能从广播状态或发起状态进入连接状态,不能从待机直接连接
六、同步状态(Synchronization)
芯片接收周期性广告的数据包。
作用:同步接收定期更新的信息。
举例:接收BLE定位信标的周期性位置信息。
适用场景:需要定时接收广播数据但不建立连接。
七、等时广播状态(Isochronous Broadcasting)
芯片在等时信道上发送数据包。
作用:发送对时间敏感的数据流。
举例:BLE音频设备同步传输音乐到多个耳机(LE Audio)。
适用场景:需要精确时序的音频或数据传输。
八、状态切换规则
常见切换路径:
待机 → 广播 → 连接(外设被连接)
待机 → 扫描 → 发起 → 连接(中心设备主动连接)
连接 → 待机(断开连接)
任何状态 → 待机(随时可以休眠省电)
待机 → 广播/扫描/同步/等时广播(但不能直接到连接)
九、实际应用场景
智能手环:
没用时:待机状态(省电)
等待连接:广播状态(被发现)
已连接:连接状态(传数据)
断开后:回到待机
手机:
搜索设备:扫描状态
点击连接:发起状态
连接成功:连接状态
关闭蓝牙:待机状态
十、开发注意事项
状态切换要合理:不能从待机直接到连接,必须经过广播或扫描→发起。
多状态机场景:一颗芯片可同时运行多个状态机,比如一边广播一边扫描。
功耗优化:设备空闲时尽快进入待机状态,减少无意义的广播或扫描。
状态同步:应用层要了解当前链路层状态,避免在错误状态下操作。