本地文件系统音频播放示例

本示例演示如何使用 app_player 模块从本地文件系统(FAT32 SD 卡)播放音频文件。

功能说明

示例展示了以下功能:

  1. 初始化 SD 卡并挂载 FAT32 文件系统

  2. 创建播放器实例并注册事件回调

  3. 播放本地音频文件(MP3 格式)

  4. 控制播放流程:播放 → 暂停 → 恢复 → 停止

文件系统说明

  • 文件系统类型:FAT32

  • 挂载位置:SD 卡(通过 SDIO 接口)

  • 挂载点/SD:

准备工作

1. 准备音频文件

音频文件位于 res/audio_file/ 目录下:

res/audio_file/
├── 000_geeting.mp3
└── 001_network_suc.mp3

2. 生成文件系统镜像

使用 tools/fatfs_package 工具将音频文件打包为 FAT32 镜像:

# 进入工具目录
cd tools/fatfs_package

# 生成镜像文件(示例:32MB 大小)
./tools/fatfs_package/mkfatfs.py -o fatfs.img -s 32M -d samples/modules/app_player/local_fs/res/audio_file -l SD

参数说明:

  • -o fatfs.img:输出镜像文件名

  • -s 32M:镜像大小(根据音频文件总大小调整)

  • -d <目录>:源文件目录路径

  • -l SD:卷标名称

详细使用方法请参考:tools/fatfs_package/README.md

3. 编译工程

重要提示:在编译前,请先确认您使用的开发板型号。SDK 目前支持以下开发板:

  • arcs_evb - ARCS EVB 评估板

  • arcs_mini - ARCS Mini 开发板

根据您的开发板型号,选择对应的编译命令:

在示例目录下执行编译:

# 使用 arcs_evb 开发板
./build.sh -C -DBOARD=arcs_evb

# 或使用 arcs_mini 开发板
./build.sh -C -DBOARD=arcs_mini

Note

如果在 SDK 根目录执行,需要指定示例路径:

# 使用 arcs_evb 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_evb

# 或使用 arcs_mini 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_mini

Note

确保已安装对应的工具链。

4. 烧录固件和文件系统

步骤 1:烧录应用程序固件

# 烧录应用固件到 Flash
./tools/burn/cskburn -s /dev/ttyACM0 -b 3000000 0x0 build/arcs.bin -C arcs

步骤 2:烧录文件系统镜像到 SD 卡(T卡)

重要:文件系统镜像需要烧录到 eMMC/T卡,而不是 Flash。

# 烧录 FAT32 镜像到 T卡(通过 SDIO 接口)
./tools/burn/cskburn -s /dev/ttyACM0 -b 3000000 --emmc 0x0 fatfs.img -C arcs

注意事项

  • 必须使用 --emmc 参数指定烧录到 T卡

  • 确保 T卡已正确插入开发板的卡槽

  • SDIO 接口使用引脚 PA4~PA9

运行示例

烧录完成后,重启开发板,示例程序将自动运行:

  1. 初始化并挂载 SD 卡文件系统

  2. 创建播放器实例

  3. 播放 /SD:/001_network_suc.mp3 文件

  4. 演示暂停、恢复、停止等控制操作

日志输出

示例运行时会输出以下日志:

[app_player_sample] App Player Local Filesystem Sample
[app_player_sample] Starting playback demo...
[app_player_sample] Player prepared
[app_player_sample] Player playing
[app_player_sample] PA ON
[app_player_sample] Player stopped
[app_player_sample] PA OFF
[app_player_sample] Playback demo completed

API 使用示例

初始化播放器

app_player_config_t config = {
    .pa_ctrl_callback = pa_control_callback
};
app_player_init(&config);

创建播放器实例

app_player_t *player = app_player_create("tone");

注册事件回调

app_player_register_callback(player, player_event_callback, NULL);

播放控制

// 播放文件
app_player_play(player, "/SD:/001_network_suc.mp3");

// 暂停
app_player_pause(player);

// 恢复播放
app_player_resume(player);

// 停止(同步)
app_player_stop_sync(player);

常见问题

1. 挂载文件系统失败

原因

  • T卡未正确插入或接触不良

  • 文件系统镜像未烧录或烧录地址错误

  • T卡格式不是 FAT32

解决方案

  • 检查 T卡是否正确插入卡槽

  • 确认使用 --emmc 参数烧录镜像到 T卡

  • 重新生成并烧录文件系统镜像

2. 播放失败

原因

  • 音频文件路径错误

  • 文件不存在或损坏

  • 音频格式不支持

解决方案

  • 确认音频文件路径正确(/SD:/文件名

  • 检查镜像中是否包含该音频文件

  • 使用支持的音频格式(MP3、WAV 等)

3. PA 控制无效

原因

  • GPIO 配置错误

  • PA 硬件连接问题

解决方案

  • 检查 PA_PIN_NUMPA_GPIO_DEVICE 配置

  • 确认硬件 PA 电路连接正确