littlebot
Published on 2025-04-08 / 8 Visits
0

【源码】基于C语言的STM32F4xx USB到I2S DAC音频桥

项目简介

本项目是基于C语言和STM32F4xx系列微控制器的USB到I2S DAC音频桥。借助USB接口接收音频数据,再通过I2S接口把数据传输至外部音频设备。项目运用STM32的HAL库和USB设备库,实现了USB音频设备的初始化、配置、数据传输及控制等功能。

项目的主要特性和功能

  1. USB音频特性:支持USB全速类1音频设备,无需特殊驱动,具备等时传输与端点反馈以同步采样频率,支持24位音频流,采样率可选44.1kHz、48kHz或96kHz,还有音量(0dB至 -96dB,3dB步进)和静音控制功能。
  2. I2S输出:作为I2S主输出,采用I2S飞利浦标准24/32数据帧。
  3. 硬件兼容性:可使用价廉的STM32F4xx “Black Pill”和PCM5102A模块,支持STM32F401CCU6和STM32F411CEU6开发板,STM32F411还可选择生成MCLK输出。
  4. 状态指示:通过外部RGB LED指示采样频率,板载LED用于诊断状态显示。
  5. 调试功能:支持通过UART2串口输出诊断信息,还可通过按键触发端点反馈打印。

安装使用步骤

硬件准备

准备WeAct STM32F411CEU6或STM32F401CCU6 “Black Pill”开发板,连接PCM5102A I2S DAC模块,并按文档中的引脚连接图进行连接。

环境配置

  1. 安装Ubuntu 20.04 AMDx64系统、STM32CubeIDE v1.6.0以及STM32 F4库v1.26.1。
  2. 编辑Makefile标志,可选择STM32F411或STM32F401,启用MCLK输出生成(仅适用于STM32F411),以及启用串口UART端口的诊断打印输出。

代码编译

将项目源码导入STM32CubeIDE,进行编译。

硬件调试

将编译后的代码下载到STM32F4xx开发板,通过USB接口连接到计算机。

设备检查与测试

  1. 在Ubuntu 20.04系统上,通过执行lsusb命令检查USB音频设备是否被识别。
  2. 执行aplay -L命令查找PCM5102 DAC
  3. 运行Sound应用程序,插入USB音频DAC,选择新出现的输出选项进行音频播放测试。
  4. 播放歌曲时,执行cat /proc/asound/DAC/stream0查看音频流信息。

系统优化

Ubuntu 20.04

以root权限编辑/etc/pulse/daemon.conf文件,强制重采样到96kHz,调整为24位,使用最高质量的重采样算法,保存文件后注销并重新登录使更改生效。

Windows 10

在控制面板的声音播放设备属性对话框中进行相关设置。

Android

在三星Galaxy F62等设备上,使用Poweramp音乐播放器的自定义设置。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】