蓝牙音频类产品开发——空闲、睡眠、关机模式切换

2026年06月08日 14:36    发布者:清月芯世界
在开发基于杰理AC696N芯片的蓝牙音箱或其他音频产品时,我们经常需要处理模式切换和功耗管理的问题。本文将简洁地解答三个实用问题:如何退出蓝牙或音乐模式,如何实现充电时自动关闭它们,以及空闲、睡眠、关机三种模式究竟有何不同。https://ima-notebook-prod.image.myqcloud.com/2/d3kbCeYD2DyOJFf58fofxe/file_manager/019ea5207d6175d68154b99ac60612db.jpg?q-sign-algorithm=sha1&q-ak=AKID9IDtLZZKqGRO7hVFnMn0zjXTXovoTtAN&q-sign-time=1780900373%3B1780929173&q-key-time=1780900373%3B1780929173&q-header-list=&q-url-param-list=&q-signature=187b073a8396855bc69731a7ada52dd3fdefb314
1. 如何退出蓝牙或音乐模式?最直接的方法是通过调用模式切换函数 app_task_switch_to()。你可以通过这个函数切换到空闲模式(IDLE),系统会立即关闭蓝牙和解码器,让芯片进入待命状态。
此外,你也可以选择切换到睡眠模式(SLEEP)。这里有一个需要特别留意的“例外情况”:蓝牙跑后台

[*]空闲模式(IDLE) + 蓝牙后台会断开。因为空闲模式会释放所有资源,包括蓝牙。
[*]睡眠模式(SLEEP) + 蓝牙后台不会断开。睡眠模式不会释放RAM,可以使蓝牙在内存中长期存在。
2. 如何实现充电就关闭蓝牙或音乐模式?为了实现充电时自动关闭蓝牙或音乐,你需要借助一个检测函数 get_charge_online_flag()。这个函数用于获取当前的充电插入状态:

[*]返回值为1:表示充电已插入。
[*]返回值为0:表示充电未插入。
在你的代码逻辑中,先调用此函数进行判断。当检测到充电插入时,再调用 app_task_switch_to() 切换到空闲或睡眠模式,即可实现关闭蓝牙和音乐的功能。
3. 空闲模式、睡眠模式、关机模式的区别这三种模式的核心区别在于功耗大小系统恢复方式。下面用一张表格清晰地展示:


模式
核心特点
功耗水平
蓝牙后台状态
唤醒方式
恢复方式

空闲模式(IDLE)
释放所有资源,系统待命
较高(约15mA)
会断开
任何触发事件
快速恢复,类似“假关机”

睡眠模式(SLEEP)
保持RAM供电,程序暂停
很低(约1mA)
可保持连接
特定IO唤醒
原地恢复,较快的启动

关机模式(Power Off)
芯片完全断电
最低(0mA)
必然断开
重新上电
完全重启,从开机流程开始

详细解释:

[*]空闲模式(IDLE):也叫“假关机”。系统看起来像是关机了,但芯片内部的部分电路仍在运行,功耗较高。它就像一个“待机”状态,随时准备好被唤醒。
[*]睡眠模式(SLEEP):这是真正的低功耗模式。程序基本停止运行,但会保留RAM中的数据(所以蓝牙后台才能继续“睡”着)。它的功耗很低,通过一个特定的IO口(如ADKEY检测脚P07)就可以轻松唤醒。
[*]关机模式(Soft Power Off):这是功耗最低的状态,接近于完全断电。它需要通过一个外部三极管或MOS管来控制主芯片的电源。唤醒时,需要重新上电,芯片会从零开始启动,所以恢复时间最长。
总结:

[*]如果你只是暂时不想播放,希望保留蓝牙连接,睡眠模式是首选。
[*]如果你要彻底断开蓝牙并节省电量,空闲模式是个好选择。
[*]如果你的产品在长周期内不会被使用,追求极致的省电,则需要使用关机模式