OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9931|回复: 15

USB声卡

[复制链接]

4

主题

11

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2012-8-14
在线时间
7 小时
发表于 2016-2-12 01:24:28 | 显示全部楼层 |阅读模式
10金钱
大家好。我现在想在USB声卡的基础上(原来的程序只能播放声音),加入麦克风的功能(用板子上自带的mic),大家给我一个思路吗?USB能不能同时处理这两个任务,是不是有什么需要特殊处理的!谢谢了!

最佳答案

查看完整内容[请看2#楼]

USB FM收音机,已分享,包括上位机代码。 http://www.openedv.com/thread-68639-1-1.html
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

52

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2016-2-22
在线时间
85 小时
发表于 2016-2-12 01:24:29 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-2-12 09:42:31 | 显示全部楼层
肯定可以的,不过你得自己研究USB协议了,官方没有USB录音的demo
回复

使用道具 举报

4

主题

52

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2016-2-22
在线时间
85 小时
发表于 2016-2-22 16:36:01 | 显示全部楼层
USB麦克风我刚做过,就是在USB声卡例程的基础上改的。要两个功能同时用,我觉得USB描述符搞懂要稍微花点时间(也可以直接拷贝),其他在中断中处理就可以了,没什么问题的。
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2012-8-14
在线时间
7 小时
 楼主| 发表于 2016-2-25 08:59:11 | 显示全部楼层
svwydh 发表于 2016-2-22 16:36
USB麦克风我刚做过,就是在USB声卡例程的基础上改的。要两个功能同时用,我觉得USB描述符搞懂要稍微花点时 ...

谢谢. 在usb_audio_core.c这个文件中的AUDIO_cb结构里的函数也不需要改吗?
回复

使用道具 举报

4

主题

52

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2016-2-22
在线时间
85 小时
发表于 2016-2-26 09:10:17 | 显示全部楼层
我用的是F103的usbFS库,和407的usbOTG库不太一样。就说下把UsbAudioOut改成UsbAudioIn的流程吧,这个改好后要两个同时用也不难的
1.修改描述符,这个可以参考USB官网音频类文档最后的USB Microphone的例子(stm32就多了个Feature Unit),改好后上电能识别、录音设备中也有了,就说明描述符修改OK。
2.改端口初始化(Speaker_Reset)代码;原UsbAudioOut用的是EP1_OUT的同步端口,现在要改成EP1_IN,基本上就是将相关代码的in/out、rx/tx互换就可以了。
3.在USB中断的EP1_IN_Callback中将音频数据发出就可以了,我测试时是用最简单的16k8位单声道,直接定义了个16字节正弦波表,每次EP1_IN的时候将这些数据发送出去模拟麦克风数据,如果正常就能听到1Khz‘嘟’的声音了。
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2016-2-26
在线时间
19 小时
发表于 2016-2-26 10:43:49 | 显示全部楼层
求大神们分享一下即带声卡又带mic还能播放暂停功能的例程。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-3-3 00:23:55 | 显示全部楼层
svwydh 发表于 2016-2-26 09:10
我用的是F103的usbFS库,和407的usbOTG库不太一样。就说下把UsbAudioOut改成UsbAudioIn的流程吧,这个改好 ...

可否分享下代码?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2012-8-14
在线时间
7 小时
 楼主| 发表于 2016-3-3 03:48:24 | 显示全部楼层
svwydh 发表于 2016-2-26 09:10
我用的是F103的usbFS库,和407的usbOTG库不太一样。就说下把UsbAudioOut改成UsbAudioIn的流程吧,这个改好 ...

谢谢, 我现在也是分别有了mic的程序和speaker的程序。就是两个单独的程序都是成功的。现在就是想把两个加在一起就出现了问题。我现在的做法是就是初始化的时候既有in又有out。但是电脑无法识别它是个声卡。。。。。
回复

使用道具 举报

4

主题

52

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2016-2-22
在线时间
85 小时
发表于 2016-3-3 09:42:30 | 显示全部楼层
cowboy8877 发表于 2016-3-3 03:48
谢谢, 我现在也是分别有了mic的程序和speaker的程序。就是两个单独的程序都是成功的。现在就是想把两个 ...

声卡不能识别还是描述符的问题,百度‘usb音频类描述符’,有提供即作speaker输出又作microphone输入的usb描述符。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-3-4 01:09:07 | 显示全部楼层
svwydh 发表于 2016-3-3 09:21
USB FM收音机,已分享,包括上位机代码。
http://www.openedv.com/thread-68639-1-1.html

不错,cool
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2012-8-14
在线时间
7 小时
 楼主| 发表于 2016-3-4 09:48:41 | 显示全部楼层
svwydh 发表于 2016-3-3 09:42
声卡不能识别还是描述符的问题,百度‘usb音频类描述符’,有提供即作speaker输出又作microphone输入的us ...

我就是照这个做的。我有个问题就是相应的USB_setup函数什么的,是不是也需要改啊?
回复

使用道具 举报

4

主题

52

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2016-2-22
在线时间
85 小时
发表于 2016-3-6 22:49:37 | 显示全部楼层
除了描述符其他的都先不用改的,声卡是无需驱动的,如果电脑无法识别,即枚举失败,根据我的经验就是描述符错误。
你可以这样试下,在可用的speaker代码基础上只把描述符修改到stm32官方如Virtual_COM_Port,其他都不动,运行后是能识别并要求驱动的,之后端口中也会有新设备,说明了只要枚举成功就可以识别设备了。再同样换成声卡的描述符,如不能识别就必然是描述符的问题了。
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2012-8-14
在线时间
7 小时
 楼主| 发表于 2016-3-6 23:37:08 | 显示全部楼层
svwydh 发表于 2016-3-6 22:49
除了描述符其他的都先不用改的,声卡是无需驱动的,如果电脑无法识别,即枚举失败,根据我的经验就是描述符 ...

我试了一下,能识别,也要求驱动,但是就是驱动安装不成功!这个和我插上自己的做的东西是一样的!但是我的插入之后,USB set_configuration的时候就失败了。。。。
回复

使用道具 举报

4

主题

52

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2016-2-22
在线时间
85 小时
发表于 2016-3-7 10:50:36 | 显示全部楼层
cowboy8877 发表于 2016-3-6 23:37
我试了一下,能识别,也要求驱动,但是就是驱动安装不成功!这个和我插上自己的做的东西是一样的!但是我 ...

驱动安装不成功有可能是Vid或Pid不匹配,但既然要求了驱动就说明枚举成功了,能正确识别设备了,驱动安装不成功应该也会导致set_configuration错误的。或者你可以换个不需要驱动的描述符如mic/hid鼠标等试下。让你这样测试只是为了证明描述符正确枚举成功就可以识别设备了而与其他的如USB端口初始化、中断处理等都无关。所以你应该只修改描述符其他的都先不用改,直到主机能识别设备再改其他。
还有baidu的那个描述符可能是就是错的。音频类描述符本来就是难点,最好能到官网上找下参考。
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2012-8-14
在线时间
7 小时
 楼主| 发表于 2016-3-19 01:07:20 | 显示全部楼层
svwydh 发表于 2016-3-7 10:50
驱动安装不成功有可能是Vid或Pid不匹配,但既然要求了驱动就说明枚举成功了,能正确识别设备了,驱动安装 ...

谢谢了,我目前有点眉目了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 04:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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