做过录音的进来看一下

嵌入式乌托邦 2013-09-03 11:04:01
板子是AT91SAM9X5,用的音频芯片是WM8731,想实现录放音功能。目前能播放,不能录音。但是可以录Line-in输入的音频数据,MICIN输入的无法录。我看见Input Mux 中默认的输入是Line-in,但我改为Mic的时候再录音,arecord -f dat -d 5 -D hw:0,0 test.wav,却出错了:
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
arecord: pcm_read:1773: read error: Input/output error
下面是各参数,试着一项一项的修改,对比,但还是无果,希望大神帮忙解决!
amixer controls
numid=2,iface=MIXER,name='Master Playback ZC Switch'
numid=1,iface=MIXER,name='Master Playback Volume' 主回放音量
numid=4,iface=MIXER,name='Line Capture Switch' 线捕捉开关
numid=5,iface=MIXER,name='Mic Boost Volume' 麦克风提高音量开关
numid=6,iface=MIXER,name='Mic Capture Switch' 麦克风捕捉开关
numid=8,iface=MIXER,name='ADC High Pass Filter Switch' 高通滤波器开关
numid=3,iface=MIXER,name='Capture Volume' 捕捉音量
numid=10,iface=MIXER,name='Playback Deemphasis Switch' 回放降低重要性开关
numid=11,iface=MIXER,name='Input Mux' 输入源选择
numid=14,iface=MIXER,name='Output Mixer HiFi Playback Switch' 混合输出播放开关
numid=12,iface=MIXER,name='Output Mixer Line Bypass Switch' 输出混合器线绕过开关
numid=13,iface=MIXER,name='Output Mixer Mic Sidetone Switch' 输出混合器麦克风侧音开关
numid=7,iface=MIXER,name='Sidetone Playback Volume' 侧音播放音量
numid=9,iface=MIXER,name='Store DC Offset Switch

amixer contents
numid=2,iface=MIXER,name='Master Playback ZC Switch'
; type=BOOLEAN,access=rw------,values=2
: values=off,off
numid=1,iface=MIXER,name='Master Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=127,step=0
: values=111,111
| dBscale-min=-121.00dB,step=1.00dB,mute=1
numid=4,iface=MIXER,name='Line Capture Switch'
; type=BOOLEAN,access=rw------,values=2
: values=on,on
numid=5,iface=MIXER,name='Mic Boost Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=1,step=0
: values=0
| dBscale-min=0.00dB,step=20.00dB,mute=0
numid=6,iface=MIXER,name='Mic Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=8,iface=MIXER,name='ADC High Pass Filter Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=3,iface=MIXER,name='Capture Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
: values=29,29
| dBscale-min=-34.50dB,step=1.50dB,mute=0
numid=10,iface=MIXER,name='Playback Deemphasis Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=11,iface=MIXER,name='Input Mux'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Line In'
; Item #1 'Mic'
: values=0

numid=14,iface=MIXER,name='Output Mixer HiFi Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=12,iface=MIXER,name='Output Mixer Line Bypass Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=13,iface=MIXER,name='Output Mixer Mic Sidetone Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=7,iface=MIXER,name='Sidetone Playback Volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=3,step=0
: values=3
| dBscale-min=-15.00dB,step=3.00dB,mute=0
numid=9,iface=MIXER,name='Store DC Offset Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
...全文
6714 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
嵌入式乌托邦 2014-05-14
  • 打赏
  • 举报
回复
不好意思,隔了段时间,上面发的可能有问题,这回我看了下,这是我的配置:

最后记得要把
numid=11,iface=MIXER,name='Input Mux'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Line In'
; Item #1 'Mic'
: values=0
里的values改为Mic
yangmeng_86 2014-05-14
  • 打赏
  • 举报
回复
还是不行,我这样配置的,这样配置不对吗
static const struct snd_soc_dapm_widget sam9261_dapm_widgets[] = {
	SND_SOC_DAPM_MIC("Int Mic",NULL),
	SND_SOC_DAPM_SPK("Spk",NULL),
	SND_SOC_DAPM_SPK("Voice",NULL),
};
static const struct snd_soc_dapm_route intercon[] = {
	{"Spk", NULL, "LHPOUT"},
	{"Voice", NULL, "RHPOUT"},
	    /* mic is connected to Mic Jack, with WM8731 Mic Bias */
    {"MICIN", NULL, "Mic Bias"},
    {"Mic Bias", NULL, "Int Mic"},
};
yangmeng_86 2014-05-14
  • 打赏
  • 举报
回复
引用 7 楼 lutao614 的回复:
[quote=引用 6 楼 lutao614 的回复:] [quote=引用 5 楼 yangmeng_86 的回复:] 楼主,具体是怎么解决的,小弟最近在弄8731也遇到这问题了
找到你内核中wm8731的驱动文件,我的是sound/soc/atmel/sam9x5_wm8731.c,在static const struct snd_soc_dapm_route intercon[] 这个结构体中添加MIC的功能:
static const struct snd_soc_dapm_route intercon[] = {
	/* headphone jack connected to HPOUT */
	{"Headphone Jack", NULL, "RHPOUT"},
	{"Headphone Jack", NULL, "LHPOUT"},

	/* line in jack connected LINEIN */
	{"LLINEIN", NULL, "Line In Jack"},
	{"RLINEIN", NULL, "Line In Jack"},

	/* add by lutao  Enable record use Mic     添加的*/
	/* speaker connected to LHPOUT */
	{"Ext Spk", NULL, "LHPOUT"},

	/* mic is connected to Mic Jack, with WM8731 Mic Bias */
	{"MICIN", NULL, "Mic Bias"},
	{"Mic Bias", NULL, "Int Mic"},
};
这样就好了,祝你好运![/quote] 重发一下![/quote] 谢楼主了,先试试,一会儿把分给你
嵌入式乌托邦 2014-05-14
  • 打赏
  • 举报
回复
引用 6 楼 lutao614 的回复:
[quote=引用 5 楼 yangmeng_86 的回复:] 楼主,具体是怎么解决的,小弟最近在弄8731也遇到这问题了
找到你内核中wm8731的驱动文件,我的是sound/soc/atmel/sam9x5_wm8731.c,在static const struct snd_soc_dapm_route intercon[] 这个结构体中添加MIC的功能:
static const struct snd_soc_dapm_route intercon[] = {
	/* headphone jack connected to HPOUT */
	{"Headphone Jack", NULL, "RHPOUT"},
	{"Headphone Jack", NULL, "LHPOUT"},

	/* line in jack connected LINEIN */
	{"LLINEIN", NULL, "Line In Jack"},
	{"RLINEIN", NULL, "Line In Jack"},

	/* add by lutao  Enable record use Mic     添加的*/
	/* speaker connected to LHPOUT */
	{"Ext Spk", NULL, "LHPOUT"},

	/* mic is connected to Mic Jack, with WM8731 Mic Bias */
	{"MICIN", NULL, "Mic Bias"},
	{"Mic Bias", NULL, "Int Mic"},
};
这样就好了,祝你好运![/quote] 重发一下!
嵌入式乌托邦 2014-05-14
  • 打赏
  • 举报
回复
引用 5 楼 yangmeng_86 的回复:
楼主,具体是怎么解决的,小弟最近在弄8731也遇到这问题了
找到你内核中wm8731的驱动文件,我的是sound/soc/atmel/sam9x5_wm8731.c,在static const struct snd_soc_dapm_route intercon[] 这个结构体中添加MIC的功能:
static const struct snd_soc_dapm_route intercon[] = {
	/* headphone jack connected to HPOUT */
	{"Headphone Jack", NULL, "RHPOUT"},
	{"Headphone Jack", NULL, "LHPOUT"},

	/* line in jack connected LINEIN */
	{"LLINEIN", NULL, "Line In Jack"},
	{"RLINEIN", NULL, "Line In Jack"},

	/* add by lutao  Enable record use Mic*/
	/* speaker connected to LHPOUT */
	{"Ext Spk", NULL, "LHPOUT"},

	/* mic is connected to Mic Jack, with WM8731 Mic Bias */
	{"MICIN", NULL, "Mic Bias"},
	{"Mic Bias", NULL, "Int Mic"},
};
这样就好了,祝你好运!
yangmeng_86 2014-05-14
  • 打赏
  • 举报
回复
楼主,具体是怎么解决的,小弟最近在弄8731也遇到这问题了
voice_shen 2013-09-04
  • 打赏
  • 举报
回复
引用 2 楼 lutao614 的回复:
[quote=引用 1 楼 voice_shen 的回复:] I don't see there is MIC on the sam9x5ek board. Please check this carefully.
sam9x5ek board没有添加MIC吧,WM8731有MIC录音功能的,自己引线应该行的。[/quote] 当然是可以的,你的代码里面有更改吗? widget有添加吗?
嵌入式乌托邦 2013-09-04
  • 打赏
  • 举报
回复
非常感谢!解决了,widget中没有添加。结贴!
voice_shen 2013-09-03
  • 打赏
  • 举报
回复
I don't see there is MIC on the sam9x5ek board. Please check this carefully.
嵌入式乌托邦 2013-09-03
  • 打赏
  • 举报
回复
引用 1 楼 voice_shen 的回复:
I don't see there is MIC on the sam9x5ek board. Please check this carefully.
sam9x5ek board没有添加MIC吧,WM8731有MIC录音功能的,自己引线应该行的。

21,619

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧