AM3517 arm linux 驱动 realtek的alc5621后,设备文件/dev/snd有了controlC0 pcmC0D0c pcmC0D0p timer,
但在执行 cat high.wav > /dev/snd/pcmC0D0p时,
提示cat: write error: File descriptor in bad state。
用的瑞泰的开发板,他用的TI tlv320aic23,驱动是正确的,但还是有这样的提示。
cat high.wav > /dev/snd/pcmC0D0p怎么会有问题呢?我应该如何测试音频?
希望各位能帮助一下我。任何发言都有可能对我有益。谢谢。
Jian Zhou:
你是在做音频codec的驱动移植么?有一点要提醒你,AM3517的音频codec接口默认是为slave模式的,你要换别的codec,可能要改为从模式,还要找一路clock作为输出clock
Jian Zhou:
回复 Jian Zhou:
抱歉,有个笔误,你要改为主模式
Yaoming Qin:
回复 Jian Zhou:
也可以用aplay试下,直接写入可能采样率等没有配置正确
Qi Fu:
之前用的realtimedsp的开发板(tlv320aic23b),用aplay a.wav 播放一个48k的,
mclk 12M
bclk 6M左右
lcrk 48K
我测量了一下波形
Mclk 24.576
Bclk 1.54M
Lrck 48k
与tlv320aic23b用的同一个mcbsp驱动
mcbsp2_dx也有数据输入,但是alc5621没有声音输出。播放时spkout脚变成高电平,放完后回复到低电平。alc5621的寄存器我都简查过,基本上没有问题,以下是我打印的mcbsp寄存器的信息,
regs->spcr2=0x00000230 regs->spcr1=0x00000030 regs->rcr2=0x00000040 regs->rcr1=0x00000140 regs->xcr2=0x00000040 regs->xcr1=0x00000140 regs->srgr2=0x0000001f regs->srgr1=0x00000000 regs->mcr2=0x00000000 regs->mcr1=0x00000000 regs->pcr0=0x00000003 regs->rcerc=0x00000000 regs->rcerd=0x00000000 regs->xcerc=0x00000000 regs->xcerd=0x00000000 regs->rcere=0x00000000 regs->rcerf=0x00000000 regs->xcerf=0x00000000 regs->rcerg=0x00000000 regs->rcerh=0x00000000 regs->xcerg=0x00000000 regs->xcerh=0x00000000 regs->xccr=0x00001009 regs->rccr=0x00000809
把srgr2改成0x00000000也是没有作用,附上alc5621的时序图,麻烦大侠帮我看看是哪里有问题。非常感谢。
Yaoming Qin:
回复 Qi Fu:
确认下,您用的codec是 ti的 alc5621吗?
Qi Fu:
回复 Yaoming Qin:
是用的ti的am3517,codec是realtek的alc5621,
请问如何确认mcbsp_dx数据有没有发送到codec正确?