搜索
bottom↓
回复: 38

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

[复制链接]

出0入0汤圆

发表于 2015-2-23 23:00:00 | 显示全部楼层 |阅读模式
放假用了几天在STM32上做了个USB Audio 2.0设备。。。
用的网上下的某XMOS的驱动,其实就是Thesycon的USB Audio 2.0 Class Driver。

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

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


“自定义”了一下驱动的字符串


只做了一个采样率48000



目前只在WinXP上试过。

欢迎试玩

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2015-2-23 23:15:47 | 显示全部楼层
说说 异步音频传输 中如何处理反馈的问题。

出0入0汤圆

 楼主| 发表于 2015-2-24 09:27:46 | 显示全部楼层
90999 发表于 2015-2-23 23:15
说说 异步音频传输 中如何处理反馈的问题。

开个大缓冲,I2S的DMA设置成Circular模式连续像DAC发送数据。
ISO OUT端点每一帧传输一次,在SOF中断里记录上一帧DMA传了多少数据,通过ISO IN端点传输,主机就知道设备中的时钟速度了。。。

出0入0汤圆

发表于 2015-2-24 11:01:05 | 显示全部楼层
caixiuwen 发表于 2015-2-24 09:27
开个大缓冲,I2S的DMA设置成Circular模式连续像DAC发送数据。
ISO OUT端点每一帧传输一次,在SOF中断里记 ...

那就是反馈上次ISO OUT得到的数据长度,然后从ISO IN发回去就可以了么。

出0入0汤圆

 楼主| 发表于 2015-2-24 11:07:33 | 显示全部楼层
90999 发表于 2015-2-24 11:01
那就是反馈上次ISO OUT得到的数据长度,然后从ISO IN发回去就可以了么。

不是的。上次ISO OUT的数据长度主机自己是知道的。发回去没意义的

出0入0汤圆

发表于 2015-2-24 11:09:34 来自手机 | 显示全部楼层
既然是往DA里面放数据,音量控制应该不难吧

出0入0汤圆

 楼主| 发表于 2015-2-24 11:37:58 | 显示全部楼层
90999 发表于 2015-2-24 11:01
那就是反馈上次ISO OUT得到的数据长度,然后从ISO IN发回去就可以了么。

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

出0入0汤圆

 楼主| 发表于 2015-2-24 11:40:14 | 显示全部楼层
bj232 发表于 2015-2-24 11:09
既然是往DA里面放数据,音量控制应该不难吧

当然不难了,收到音量控制请求后,通过I2C设置一下DAC里面的音量控制寄存器就行了。我主要是玩一下异步传输,其他的就省略了。USB Audio Class 2.0还有好多新特性。。。以后有空再玩

出0入0汤圆

发表于 2015-2-24 13:25:51 | 显示全部楼层
caixiuwen 发表于 2015-2-24 11:40
当然不难了,收到音量控制请求后,通过I2C设置一下DAC里面的音量控制寄存器就行了。我主要是玩一下异步传 ...

只有48KHZ的话,用USB2.0 FS应该也可以工作吧。

出0入0汤圆

发表于 2015-2-24 14:50:43 | 显示全部楼层
可以拿来做USB声卡了

出0入0汤圆

 楼主| 发表于 2015-2-24 20:09:30 | 显示全部楼层
90999 发表于 2015-2-24 13:25
只有48KHZ的话,用USB2.0 FS应该也可以工作吧。

48KHz用FS完全没问题,USB Audio 1.0的时候多数都是FS的

出0入0汤圆

发表于 2015-2-25 08:26:27 | 显示全部楼层
caixiuwen 发表于 2015-2-24 11:40
当然不难了,收到音量控制请求后,通过I2C设置一下DAC里面的音量控制寄存器就行了。我主要是玩一下异步传 ...

支持你继续推出后续的测试版本

出10入0汤圆

发表于 2015-2-25 10:18:39 来自手机 | 显示全部楼层
mark!标记下

出0入0汤圆

发表于 2015-2-25 11:27:22 来自手机 | 显示全部楼层
收藏了,最近对USB audio很感兴趣

出0入0汤圆

 楼主| 发表于 2015-2-25 12:53:43 | 显示全部楼层
改了个44100Hz的
播放44100Hz的音频就可以实现数据到DAC的时候完全没被改动过


用Live Watch看着同步状态,看上去挺好的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-2-25 17:14:00 | 显示全部楼层
调USB用的工具。先在EVAL大板子上调的。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-2-25 17:17:00 | 显示全部楼层
后来再移到Discovery上

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-2-26 09:16:07 | 显示全部楼层
我也有f4的板子,有空也來測看看。

出0入0汤圆

发表于 2015-2-26 09:58:46 | 显示全部楼层
saleae和beagle 都多少钱买的啊

出0入0汤圆

发表于 2015-2-26 10:47:01 | 显示全部楼层
啥时候把mic也调通呀

出0入0汤圆

 楼主| 发表于 2015-2-27 09:34:08 | 显示全部楼层
kenanhcf88 发表于 2015-2-26 10:47
啥时候把mic也调通呀

假期结束了,只能以后慢慢搞了。准备改到429上玩,做个立体声的MIC

出0入0汤圆

 楼主| 发表于 2015-2-27 09:39:22 | 显示全部楼层
maimaige 发表于 2015-2-26 09:58
saleae和beagle 都多少钱买的啊

Saleae是$499买的,现在涨了100。。。
Beagle现在$3000多

出0入0汤圆

发表于 2015-2-27 12:19:26 | 显示全部楼层
期待楼主把STM32F4做成简单的USB 音频接口,只要有独立的I2S输入、I2S输出各一路,双工的就好。

出0入0汤圆

发表于 2015-2-27 12:23:31 | 显示全部楼层
我靠,居然还有USB分析仪?

出0入0汤圆

 楼主| 发表于 2015-2-27 13:56:59 | 显示全部楼层
wen007pcb 发表于 2015-2-27 12:19
期待楼主把STM32F4做成简单的USB 音频接口,只要有独立的I2S输入、I2S输出各一路,双工的就好。 ...

407的两路I2S好像不独立的,它们共用时钟。。如果用OTG_FS,可以很容易实现两路I2S双工的,但是采样率不能到192k。用OTG_HS的话,和一路I2S引脚冲突啊,除非上176脚的。
429那个SAI貌似好一点。以后用来做DAC不错。不要什么XMOS的芯片了

出0入0汤圆

发表于 2015-2-27 16:37:27 | 显示全部楼层
caixiuwen 发表于 2015-2-27 13:56
407的两路I2S好像不独立的,它们共用时钟。。如果用OTG_FS,可以很容易实现两路I2S双工的,但是采样率不 ...

时钟共用也可以的,这样就不用受限制于那些传统的USB音频接口芯片的资源不开放了。

出0入0汤圆

发表于 2015-3-19 16:40:22 | 显示全部楼层
STM32F4-Discovery 声卡效果不错啊!

出0入102汤圆

发表于 2015-3-19 16:51:57 | 显示全部楼层
caixiuwen 发表于 2015-2-27 09:39
Saleae是$499买的,现在涨了100。。。
Beagle现在$3000多

LZ 真土豪,设备都按美元来算的

出0入0汤圆

发表于 2015-8-8 15:07:43 | 显示全部楼层
您好,我现在也在研究USB audio 2.0,苦于没有参考代码,能否分享一下您的代码让我作为参考,发我邮箱:18910072273@163.com 谢谢。

出0入0汤圆

 楼主| 发表于 2015-8-8 22:56:05 | 显示全部楼层
zcy618 发表于 2015-8-8 15:07
您好,我现在也在研究USB audio 2.0,苦于没有参考代码,能否分享一下您的代码让我作为参考,发我邮箱: 谢 ...

这个参考ST的USB Audio 代码就可以了,了解了USB Audio 1.0,再看看2.0 的文档,就可以照着改了。我就是在ST的USB Audio上改的,改得不是很好,不适合做参考哈。

出0入0汤圆

发表于 2015-8-9 23:54:31 | 显示全部楼层
caixiuwen 发表于 2015-8-8 22:56
这个参考ST的USB Audio 代码就可以了,了解了USB Audio 1.0,再看看2.0 的文档,就可以照着改了。我就是 ...

没有关系,有参考总比没有强些,刚开始学,总是希望有点指引的。
Thanks.

出0入0汤圆

发表于 2015-8-9 23:55:51 | 显示全部楼层
caixiuwen 发表于 2015-8-8 22:56
这个参考ST的USB Audio 代码就可以了,了解了USB Audio 1.0,再看看2.0 的文档,就可以照着改了。我就是 ...

兄弟,我是在北京,你在哪里?如果大家在同一个地方,不妨一起讨论下。说不定可以一起做点事情。

出0入0汤圆

 楼主| 发表于 2015-8-11 12:06:10 | 显示全部楼层
zcy618 发表于 2015-8-9 23:55
兄弟,我是在北京,你在哪里?如果大家在同一个地方,不妨一起讨论下。说不定可以一起做点事情。 ...

真不巧,我不在北京啊。你是想用STM32做个异步的USB DAC?
技术问题可以网上大家一起讨论。我那代码搞得真心乱,不适合做参考。最好是你自己按自己的理解重新设计。少参考其他的,用自己的方法实现。
USB Audio 1.0也可以异步传输的,不如先搞USB Audio 1.0。

出0入0汤圆

发表于 2015-11-4 23:00:22 | 显示全部楼层
caixiuwen 发表于 2015-8-11 12:06
真不巧,我不在北京啊。你是想用STM32做个异步的USB DAC?
技术问题可以网上大家一起讨论。我那代码搞得 ...

请教个问题哈:
1.0异步传输,PC机那端有相应的机制保障吗?或者需要PC端的驱动修改?
还是靠STM这边来增加或者抛弃数据实现?

出0入0汤圆

 楼主| 发表于 2015-11-5 15:42:46 | 显示全部楼层
li.wen 发表于 2015-11-4 23:00
请教个问题哈:
1.0异步传输,PC机那端有相应的机制保障吗?或者需要PC端的驱动修改?
还是靠STM这边来增 ...

PC端有相应的机制的,STM这边不需要增加删除数据。

出0入0汤圆

发表于 2016-3-19 11:19:13 | 显示全部楼层
楼主用的是STM324xG EVAL板demo程序,我打开USB DIVICE 里的Audio工程怎么和楼主的不一样。

出0入0汤圆

发表于 2016-3-19 12:34:52 | 显示全部楼层
有时间试一下。

出0入0汤圆

发表于 2019-5-23 11:57:52 | 显示全部楼层
咨询一下楼主,USB Audio Class 1.0 支持32bit/48k的音频数据传输吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-21 22:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表