一副 TWS 耳机里,有哪些软件模块

一、先看整体 如果暂时不考虑具体芯片平台,TWS 耳机的软件大致可以分成下面几个部分: 这不是严格的分层架构。实际 SDK 中,各部分往往会互相调用,甚至放在同一个模块里。这样划分主要是为了看清楚:一个耳机功能背后,通常有哪些软件在配合。 软件模块 主要负责什么 常见内容 系统与 RTOS 让程序和多个任务运行起来 任务、消息、定时器、内存、看门狗 驱动与电源 与耳机硬件交互 GPIO、ADC、I2C、I2S、充电、休眠、唤醒 蓝牙连接 与手机建立和维护蓝牙业务 配对、回连、A2DP、AVRCP、HFP、BLE 双耳协同 让左右耳保持一致 双耳组对、角色、状态同步、音频协同 音频系统 管理声音输入和输出 编解码、播放、录音、提示音、ANC、ENC 产品应用 决定耳机具体怎样工作 按键、LED、佩戴检测、状态机、功能优先级 数据与升级 保存配置并更新固件 配对记录、用户设置、OTA、版本管理 调试与测试 帮助发现和定位问题 日志、异常信息、测试模式、量产支持 二、系统与 RTOS TWS 耳机一般不是从上到下只执行一条固定流程。蓝牙事件、按键、音频、充电和定时任务可能在不同时间发生,因此软件需要同时管理多种事情。 这一部分通常包括: 系统启动和各模块初始化 任务或线程的创建与调度 事件、消息和队列 软件定时器 内存分配与任务栈 中断处理 看门狗和异常恢复 应用层开发中经常接触到的,并不是 RTOS 调度器本身,而是平台提供的任务、消息和回调接口。 例如,按键驱动检测到一次双击后,不一定会直接执行“切换降噪模式”。它可能先产生按键事件,再把事件投递给应用任务,最后由应用代码根据当前状态决定是否执行这个功能。 所以,当我们阅读一个新 SDK 时,找到事件入口和消息流转路径很重要。 三、硬件驱动与电源管理 耳机虽然体积不大,但里面仍然有不少硬件。软件需要通过不同接口读取状态或者控制这些器件。 常见内容包括: GPIO:NTC供电、LED、使能信号 ADC:按键电压、其他模拟量 UART:日志输出、机盒 充电与盒仓检测:识别 DC、入盒、出盒、开盖、关盖、充电和满电等状态 佩戴检测:红外、触摸或其他传感器 I2C、SPI:传感器、外部芯片或存储器 I2S、PCM:数字音频数据传输 驱动层负责把硬件状态转换成软件可以识别的数据或事件,应用层再决定怎样处理。 “耳机入盒”背后涉及盒仓状态检测、TWS 对耳同步、按键禁用、ANC 和音乐处理、DAC 控制及主从切换;关盖后还要关闭蓝牙并进入 FUNC_IDLE或 charge等其他模式。处理不完整,可能导致左右耳状态不一致、盒内仍播放声音或关盖后仍连接手机。 ...