项目简介
本项目是基于C语言和STM32F4xx系列微控制器的USB到I2S DAC音频桥。借助USB接口接收音频数据,再通过I2S接口把数据传输至外部音频设备。项目运用STM32的HAL库和USB设备库,实现了USB音频设备的初始化、配置、数据传输及控制等功能。
项目的主要特性和功能
- USB音频特性:支持USB全速类1音频设备,无需特殊驱动,具备等时传输与端点反馈以同步采样频率,支持24位音频流,采样率可选44.1kHz、48kHz或96kHz,还有音量(0dB至 -96dB,3dB步进)和静音控制功能。
- I2S输出:作为I2S主输出,采用I2S飞利浦标准24/32数据帧。
- 硬件兼容性:可使用价廉的STM32F4xx “Black Pill”和PCM5102A模块,支持STM32F401CCU6和STM32F411CEU6开发板,STM32F411还可选择生成MCLK输出。
- 状态指示:通过外部RGB LED指示采样频率,板载LED用于诊断状态显示。
- 调试功能:支持通过UART2串口输出诊断信息,还可通过按键触发端点反馈打印。
安装使用步骤
硬件准备
准备WeAct STM32F411CEU6或STM32F401CCU6 “Black Pill”开发板,连接PCM5102A I2S DAC模块,并按文档中的引脚连接图进行连接。
环境配置
- 安装Ubuntu 20.04 AMDx64系统、STM32CubeIDE v1.6.0以及STM32 F4库v1.26.1。
- 编辑Makefile标志,可选择STM32F411或STM32F401,启用MCLK输出生成(仅适用于STM32F411),以及启用串口UART端口的诊断打印输出。
代码编译
将项目源码导入STM32CubeIDE,进行编译。
硬件调试
将编译后的代码下载到STM32F4xx开发板,通过USB接口连接到计算机。
设备检查与测试
- 在Ubuntu 20.04系统上,通过执行
lsusb
命令检查USB音频设备是否被识别。 - 执行
aplay -L
命令查找PCM5102 DAC
。 - 运行
Sound
应用程序,插入USB音频DAC,选择新出现的输出选项进行音频播放测试。 - 播放歌曲时,执行
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】