Open ShellAlbert opened 5 years ago
aplay -D plughw:tegrasndt186ref,0 -r 44100 -f S16_LE -c 2 -t raw 44.1k.16bit.pcm.raw aplay -D hw:tegrasndt186ref,0 -r 44100 -f S16_LE -c 2 -t raw 44.1k.16bit.pcm.raw 44.1khz 16bit stereo play okay.播放正常。
aplay -D plughw:tegrasndt186ref,0 -r 44100 -f S24_LE -c 2 -t raw 44.1k.24bit.pcm.raw aplay -D hw:tegrasndt186ref,0 -r 44100 -f S24_LE -c 2 -t raw 44.1k.24bit.pcm.raw 44.1khz 24bit stereo play noise.播放杂音。 结论:不支持24bit的播放!
pcm1754手册上说只支持16bit和24bit的数据,但为什么现实测试中却只支持32bit呢? (这里指的是一个LRCLK包含32个BCLK) 奇怪了?
下图是一个LRCLK中包含16个BCLK,播放是使用的是S16_LE,并且i2s1 codec bit format是16. 此时pcm1754没有输出。 奇怪。 只有当amixer -c tegrasndt186ref cset name='I2S1 codec bit format' 32 设置为32的时候, 再使用aplay -c hw:tegrasndt186ref,0 -r 32000 -f S16_LE -c 2 -t raw 32k.16bit.pcm.raw播放时 才能正常听到声音。 但是使用aplay -c hw:tegrasndt186ref,0 -r 32000 -f S32_LE -c 2 -t raw 32k.16bit.pcm.raw播放时,也能听到声音,但是声音加快了,走样了。 这说明了, 'I2S1 codec bit format'设置的是一个LRCLK中包含多少个BCLK, aplay 中指定的S16_LE/S32_LE是待播放的pcm数据的采样位数, 这2个参数是不同的。
下图是一个LRCLK中包含32个BCLK,播放时使用的是S32_LE,并且i2s1 codec bit format是32.
下面是测量的fpga驱动的pcm1754的波形 可以看到32khz的lrck一个周期的bclk是32个. i2s2就是要读入这样的信号。
为什么speaker-test可以正常工作吗? speaker-test从i2s0输出,同时从i2s1录入,可以正确播放呢???
amixer -c tegrasndt186ref sset "ADMAIF2 Mux" "I2S2" amixer -c tegrasndt186ref sset "I2S1 Mux" "ADMAIF1" 1.aplay -D hw:tegrasndt186ref,0 -r 44100 -c 2 -t raw -f S16_LE dream.wav 2.arecord -D hw:tegrasndt186ref,1 -r 44100 -c 2 -t raw -f S16_LE cap.raw 3.aplay -D hw:CARD=USBSA,DEV=0 -r 44100 -f S16_LE -c 2 -t raw cap.raw 第一次播放正常。 但当在i2s1播放过程中还未结束的情况下,再次从i2s2录制 ,再从usb声卡播放时,不正常,杂音或听不到音乐。