12 KiB
12 KiB
音频板开发需求对照与实现状态
文档版本:V1.0
生成日期:2026-07-25
需求来源:音频板开发需求 20260725.xls
调试基准:20260717 样机功能(以 Excel「版本1」跟踪表为准)
1. 项目概述
AC695x SDK 音频板定制固件,主要实现:
- SD 卡 / U 盘读取并播放 MP3、WAV、FLAC、APE
- 4 路光纤 + 3.5mm 立体声输出(经 CS8406)
- K1~K4 通道播放与切歌,K5/K6 音量调节
- U 盘 OTA 升级及提示音
- 多路 LED:系统灯、按键灯、灯条、音量灯
核心代码路径:
| 模块 | 文件 |
|---|---|
| 主逻辑 | apps/kaotings/kt.c、apps/kaotings/kt.h |
| 按键入口 | apps/soundbox/task_manager/music/music.c |
| 音量默认/不记忆 | cpu/br23/audio_config.h、cpu/br23/audio_common/app_audio.c |
| U 盘升级检测 | apps/soundbox/include/app_config.h |
| 升级提示 | apps/common/update/update.c、apps/common/dev_manager/dev_update.c |
2. 硬件引脚定义(当前 kt.h)
| 功能 | 引脚 | 宏定义 |
|---|---|---|
| 系统指示灯 SYS_LED | PB03 | SYS_LED_PIN |
| 音频输出 CH1~CH4(CS8406 TX EN) | PB10 / PB09 / PB08 / PB07 | AUDIO_OUT_CHANNEL1~4 |
| 按键灯 KEY_LED CH1~CH4 | PC02 / PC01 / PC00 / PA12 | KEY_LED_OUT_CHANNEL1~4 |
| 灯条 LED_BAR CH1~CH4 | PA09 / PA10 / PB02 / PB11 | LED_BAR_OUT_CHANNEL1~4 |
| 音量+ 灯 KUP_LED | PC03 | KUP_LED_PIN |
| 音量- 灯 KDOWN_LED | PB00 | KDOWN_LED_PIN |
| CS8406 复位 | PA06 | 代码中 IO_PORTA_06 |
注意:按键灯与灯条为两路独立输出,代码分别使用
KEY_LED_* 与LED_BAR_*。两组引脚归属已经过实机校正。
3. 需求跟踪总表
调试基准为 Excel「版本1」表(20260718),状态说明:
- ✅ 通过:已验证符合需求
- 🛠️ 待修改:已实现但与需求不符,或功能缺失
- ⚠️ 待验证:代码已有,尚未实测确认
| 需求 ID | 模块 | 需求摘要 | 验证状态 | 实现/差异说明 |
|---|---|---|---|---|
| AID-001 | 文件排序 | 按 00/01/02… 命名顺序播放;未命名文件也应能播放 |
⚠️ 待验证 | 空闲按键优先 kt_play_file_idx(0) 播 00.*;失败回退 music_player_play_first_file(),待实测非 00 文件及后续切歌顺序 |
| AID-002 | 按键映射 | K1 |
✅ 通过 | 按键、音频通道和灯条映射已实测通过 |
| AID-003 | 待机状态 | 上电待机,所有按键灯同步慢闪(约 1s 一次) | ✅ 通过 | 4 路 KEY_LED 同步慢闪,LED_BAR 待机全灭 |
| AID-004 | 按键播放 | 待机按 Kx 播 00,对应通道出声;当前 KEY_LED + KUP/KDOWN 常亮,其它 KEY_LED 灭 |
⚠️ 待验证 | 通道播放、当前 KEY_LED 和 LED_BAR 状态正常;KUP_LED/KDOWN_LED 播放时常亮效果待复测 |
| AID-005 | 播完恢复 | 单曲播完恢复待机,所有灯恢复 | ✅ 通过 | 播完关闭通道并恢复待机灯态,实测通过 |
| AID-006 | 播放切通道 | 播放中按其它通道键,只切输出不换曲 | ✅ 通过 | kt_switch_channel_only() → kt_channel_outputs_on() |
| AID-007 | 同通道下一曲 | 播放中再按当前通道键,播下一首(00→01→02…循环) | ✅ 通过 | 先 kt_play_file_idx(idx+1),失败再 music_player_play_next() |
| AID-008 | 音量 | 2~30 格,默认 23,±1,不记忆 | ✅ 通过 | 默认值、上下限、±1 步进及不记忆逻辑已实测通过 |
| AID-009 | 灯条 | 仅当前通道灯条亮,待机全灭 | ✅ 通过 | LED_BAR 仅当前播放通道常亮,待机全灭,实测通过 |
| AID-010 | 格式支持 | MP3 / WAV / FLAC / APE | ✅ 通过 | SDK 播放器原生支持 |
| AID-011 | 系统指示灯 | 慢闪待机、快闪报错、常亮播放 | ✅ 通过 | KT_LED_IDLE/FAIL/PLAY/UPDATE 状态机 |
| — | VOL+ | 按一次 +1 格 | ✅ 通过 | KEY_USER_KEY_5 → KEY_VOL_UP |
| — | VOL- | 按一次 -1 格 | ✅ 通过 | KEY_USER_KEY_6 → KEY_VOL_DOWN(最小 2) |
4. 功能逻辑说明(20260717 调试版)
4.1 按键 K1~K4(通道键)
待机(active_ch == 0)
└─ 按 Kx → 播 00.*(sd1 优先,udisk0 次之)
→ 失败则播盘内第一首
→ 成功:开 CHx 音频 + 灯条,SYS_LED 常亮
播放中(active_ch != 0 且 decoding)
├─ 同通道再按 → idx+1 下一曲(失败则 player next)
└─ 异通道按 → 只切 AUDIO/灯条,不换曲
播完 / 拔卡 / 出错
└─ kt_music_play_end_handler()
→ 关通道、active_ch=0、music_player_stop(0)
→ 音量恢复 23、SYS_LED 慢闪
4.2 按键 K5 / K6(音量键)
- K5(VOL+):
app_task_put_key_msg(KEY_VOL_UP),KUP_LED 常亮 3s 后慢闪 - K6(VOL-):音量 > 2 时
KEY_VOL_DOWN,KDOWN_LED 常亮 3s 后慢闪
4.3 LED 行为对照(需求 vs 当前)
| LED 类型 | 需求(20260717) | 当前实现 |
|---|---|---|
| SYS_LED | 待机慢闪 / 播放常亮 / 报错快闪 | ✅ 已实现 |
| KEY_LED(按键灯) | 待机:4 路同步慢闪;播放:当前路常亮,其它灭 | ✅ 已实现并通过 |
| LED_BAR(灯条) | 播放:当前通道常亮;待机:全灭 | ✅ 已实现并通过 |
| KUP / KDOWN | 播放时常亮 | 🛠️ 播放时仍慢闪,待修改 |
4.4 U 盘升级
| 阶段 | 行为 |
|---|---|
| 检测 | TCFG_DEV_UPDATE_IF_NOFILE_ENABLE = 0,设备上线即 dev_update_check |
| 升级中 | kt_update_led_start():SYS_LED 快闪;kt_update_start_remind() 播 TONE_SUP |
| 升级完成 | 成功播 TONE_EUP;kt_update_led_finish() 恢复 LED |
| 提示音通路 | CS8406 RST 释放 → 4 路 AUDIO 全开 → app_audio_output_start → 等 START/STOP |
已知限制:SDK update_success_boot_check() 在同一次开机内会拦截相同 UFW 重复升级。
5. 已修复问题记录
| 问题 | 原因 | 修复 |
|---|---|---|
| U 盘不能升级 | TCFG_DEV_UPDATE_IF_NOFILE_ENABLE=1 仅无文件时检测 |
改为 0 |
| 升级提示音偶发无声 | 异步 tone_play + 通道/CS8406 未就绪 |
RST 时序 + 4 路全开 + 等 START/STOP |
| 播完再按键功能异常 | active_ch=0 但 get_play_status() 仍为 PLAY |
播完 music_player_stop(0);判断加 active_ch!=0 |
kt_voltage_all_off 编译错误 |
函数定义顺序 | 调整函数顺序 |
| BT_LED 改名 | 需求统一为系统灯 | 全部改为 SYS_LED |
6. 待办事项(建议优先级)
P0 — 待测试
- AID-001 文件排序
- 验证无
00.*时能否从待机播放普通命名文件,以及回退播放后的下一曲顺序 - 测试结果出来前暂不修改播放逻辑
- AID-004 播放灯态
- 复测播放时当前
KEY_LED、KUP_LED/KDOWN_LED是否持续常亮,其他KEY_LED是否熄灭
P2 — 可选
- 同开机重复升级测试:评估是否绕过
update_success_boot_check - 配置文件化按键/灯效(需求文档「备用功能」栏)
7. 测试检查清单
基本播放
- 上电待机:4 路 KEY_LED 同步慢闪(约 1s),LED_BAR 全灭,SYS_LED 慢闪
- 待机按 K1:播
00.*,CH1 有声,K1 + KUP + KDOWN 常亮,其它 KEY_LED 灭,CH1 灯条亮 - 待机按 K2/K3/K4:通道、按键灯和灯条对应正确
- 单曲播完:恢复待机灯态,音量回到 23
- 播放中按异通道:不换曲,灯条/按键灯跟随
- 播放中按同通道:下一曲 00→01→02…
文件与通道
- SD 卡
00.mp3与 U 盘同时存在:优先 SD - 文件命名为
AA.mp3(非 00):待机按键可播 - K1/K4、K2/K3 物理位置与 CH 对应正确
音量
- 默认音量 23
- VOL+ 每次 +1,最大 30
- VOL- 每次 -1,最小 2
- 播完/待机后再播,音量恢复 23
升级
- U 盘根目录放
update.ufw,上电可升级 - 升级中 SYS_LED 快闪,播
sup提示音 - 升级成功播
eup提示音,LED 恢复
异常
- 无
00.*且无音乐文件:对应通道快闪报错 - 拔卡/拔 U 盘:停止播放,恢复待机
8. 关键代码索引
按键分发(music.c)
case KEY_USER_KEY_1 ~ KEY_USER_KEY_6:
err = kt_key_event_handler(key);
通道键核心(kt.c)
kt_channel_key_handler()— 空闲播 00 / 同通道 next / 异通道切换kt_play_success()/kt_play_fail()— 成功/失败灯态kt_music_play_end_handler()— 播完收尾
音量
// cpu/br23/audio_config.h
#define SYS_DEFAULT_VOL 23
// kt.c
static void kt_vol_reset_default(void);
升级开关
// apps/soundbox/include/app_config.h
#define TCFG_DEV_UPDATE_IF_NOFILE_ENABLE 0
9. 版本历史
| 版本 | 日期 | 说明 |
|---|---|---|
| V1.0 | 2026-07-25 | 初版:需求对照、实现状态、待办与测试清单 |
本文档由固件开发过程自动整理,如有需求变更请以最新 Excel 跟踪表为准。