在STM32F4-Discovery上做了个USB Audio Class 2.0设备

2019-12-10 18:33发布

放假用了几天在STM32上做了个USB Audio 2.0设备。。。
用的网上下的某XMOS的驱动,其实就是Thesycon的USB Audio 2.0 Class Driver。

实现了异步音频传输,其它音量控制啥的都没实现。。

Discovery板上还有个话筒,也没实现。。

4.PNG (16.7 KB, 下载次数: 0) 下载附件 2015-2-23 22:52 上传

目前只在WinXP上试过。

欢迎试玩 STM32F4-Discovery USB Audio 2.0.rar (1.12 MB, 下载次数: 158) 2015-2-23 22:55 上传 点击文件名下载附件
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
38条回答
90999
1楼-- · 2019-12-10 20:31
说说 异步音频传输 中如何处理反馈的问题。
caixiuwen
2楼-- · 2019-12-10 22:06
90999 发表于 2015-2-23 23:15
说说 异步音频传输 中如何处理反馈的问题。

开个大缓冲,I2S的DMA设置成Circular模式连续像DAC发送数据。
ISO OUT端点每一帧传输一次,在SOF中断里记录上一帧DMA传了多少数据,通过ISO IN端点传输,主机就知道设备中的时钟速度了。。。
90999
3楼-- · 2019-12-11 00:23
caixiuwen 发表于 2015-2-24 09:27
开个大缓冲,I2S的DMA设置成Circular模式连续像DAC发送数据。
ISO OUT端点每一帧传输一次,在SOF中断里记 ...

那就是反馈上次ISO OUT得到的数据长度,然后从ISO IN发回去就可以了么。
caixiuwen
4楼-- · 2019-12-11 05:24
 精彩回答 2  元偷偷看……
bj232
5楼-- · 2019-12-11 10:03
既然是往DA里面放数据,音量控制应该不难吧
caixiuwen
6楼-- · 2019-12-11 13:48
90999 发表于 2015-2-24 11:01
那就是反馈上次ISO OUT得到的数据长度,然后从ISO IN发回去就可以了么。

DMA传输是I2S触发的,I2S触发DMA的速度又由I2S的PLL输出频率确定的。所以记录每个USB帧里DMA传输了多少数据,通过IN反馈给主机,主机就能正确调整后面OUT数据的速度。也就是实现主机跟着设备端的频率来播放了

一周热门 更多>