stm32f4 discovery usb mic录音44.1kHz的usb数据传送疑问

2019-12-20 21:31发布

本帖最后由 evilchips 于 2014-3-28 17:54 编辑

最近在使用stm32f4 discovery + 外置的codec做一个usb microphone时,在Fs=44.1kHz的时候,pc端录音到的数据听起来很干净,但是有断流和语速过快的问题.用usblyzer抓isochronous in endpoint的data量一看,firmware没有在10ms内送1764个byte到pc,只有1412和1588,1504这3个值,没有一次达到1764bytes/10ms.所以是数据送的不足引起断音和语速过快.有一些确定的问题和未知的疑问如下:
1,如果firmware把i2s录取的声音data又直接送到codec,声音很好.所以这里判断录音抓data没有问题.
2,往host(pc)端送data用了一个变量做计数器,0~8送176bytes/1ms,计数器的值为9的时候送180bytes并且复位计数器为0,这样加起来正好是10ms送1764bytes.但是pc收到的数据量并不如我所料...
3,在Fs=48kHz下,录音效果很好.

请教各位,usb mic @ Fs = 44.1kHz下,我还有哪些问题没注意到吗?

PS:刚发现,当第10笔data(180bytes)改成和前9笔data一样的数据量发给PC时,PC端可以恒定的每次收到1760byts/10ms.而把前9笔data改成和第10笔data一样的数据量(180bytes)的时候,个人猜想应该PC会恒定收到1800bytes/10ms,但是usblyzer抓到显示只有500多bytes/10ms,所以怀疑是当Fs==44.1kHz时,1ms内发送的data量不能超过176?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
superganbu
1楼-- · 2019-12-22 02:21
搂主厉害啊,我不太懂请搂主指点阿
像声卡,这种常用的USB设备,是不是枚举成USB声卡就行了,驱动和数据的传输格式都已经有了?
还是自己重新枚举成新设备,重新设计音频数据传输,上位机驱动也要根据传输格式自己解析?

那这样自己开发的声卡(播放功能),怎么才能通过芊芊静听等音频播放软件识别呢?

谢谢了
evilchips
2楼-- · 2019-12-22 02:29
本帖最后由 evilchips 于 2015-2-14 15:50 编辑
superganbu 发表于 2015-1-28 15:02
搂主厉害啊,我不太懂请搂主指点阿
像声卡,这种常用的USB设备,是不是枚举成USB声卡就行了,驱动和数据的 ...


声卡, window提供了usb audio 1.1 的驱动. 不用你写. 2.0就需要了. 声卡只需要写好MCU端的枚举方面的code, 还有接受usb audio streaming data相关的code.
你usb 描述符没问题. PC就能自动识别成声卡, 千千静听也是通过调用pc的接口去访问声卡. 所以pc能识别, 千千静听也可以.
shouqiang_zhang
3楼-- · 2019-12-22 06:46
 精彩回答 2  元偷偷看……
evilchips
4楼-- · 2019-12-22 10:57
shouqiang_zhang 发表于 2015-2-14 17:28
请教楼主,你叙述: 1,如果firmware把i2s录取的声音data又直接送到codec,声音很好,能详细说下你的CODEC转换方 ...

Digi mic要经过PDM filter的. 经过这个就是音频数据了. 可以直接送到codec放出来,
譬如st的一个例子就有, 407的discovery板子上的例子, 你找找看.
zcy618
5楼-- · 2019-12-22 15:01
大哥,我最近也是要用stm32f4做一个USB的录音设备,但是我现在遇到点问题,我的配置描述符都写好了,插上去也可以正确识别出来,但是开打录音机录音的话,我的in端点0x82根本没有中断,而且我一旦使能0x82端点,STM32F4的应答就没有了,整个USB的通讯都有问题了。我实在找不到思路了,请问你是如何实现的?能否给一个最简单的事例程序到我的邮箱里面: 18910072273@163.com,我只想参考一下,这个录音我到底还差哪里了。
谢谢了。
laylovesb1314
6楼-- · 2019-12-22 16:26
怎么看大家和官方的例程都是用F4做的,103不能做嘛??

一周热门 更多>