This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
最近、我遇到了 McASP 音频捕获问题。 看起来,当发生溢出时,McASP 将从 PCM1808捕获一些错误数据。 该数据由 PCM1808生成、McASP 将其添加到其中。 当我浏览 pcm1808数据表时、我发现 pcm1808将"通过停止系统时钟来断电和复位"。
在 funcuin snd_pcm_update_state int 文件 sound/core/pcm_lib.c 中、
如果(AVAIL >=运行时->STOP_THRESHOLD){
xrun (子流);
return -EPIPE;
}
当应用程序线程无法从 McASP 发送或获取音频数据时、内核会将 EPIPE 信号升高到 ALSA 库、这是溢出的。
在这种情况 下、McASP 将被停止、并且 AFR/X 时钟被停止、然后 PCM1808将复位、然后生成脉冲。
如何解决此问题? 如何避免重置 PCM1808,因为我们不想捕获这些错误数据。
感谢大家
相切、
您是否使用 Linux-2.6.37-psp04.04.00.01附带的 EZSDK 5.05.02.00?
让我确认我的理解。 DM814x McASP 为 PCM1808提供 AFR/X 时钟。 PCM1808为 McASP 提供音频数据。 在某些时候、音频溢出发生、McASP 将停止从 PCM1808捕获音频数据、并停止为 PCM1808提供 AFSR/X 时钟。 您不想修复溢出错误、但希望 McASP 为 PCM1808提供 AFSR/X 时钟。 是这样吗?
此致、
帕维尔
您好、Pavel、
我在函数 Davinci_McASP_TRIGGER 中添加了调试信息、
案例 SNDRV_PCM_TRIGGER_STOP:
案例 SNDRV_PCM_TRIGGER_PAUSE_PUSH:
if (Substream->stream == SNDRV_PCM_STREAME_CAPTURE_CAPTURE)
{
printk ("befor Davinci_McASP_stop \n");
dump_McASP_regs (dev);
}
DaVinci_McBSP_stop (dev、Substream->stream);
if (Substream->stream == SNDRV_PCM_STREAME_CAPTURE_CAPTURE)
{
printk ("在 DaVinci_McASP_stop \n"之后);
dump_McASP_regs (dev);
}
中断;
当溢出发生时、调试信息如下:
用于 DaVinci_McASP_STOP
PFUNC (0xFA038010)=0x00000000
Pdir (0xFA038014)= 0xFC000010
PDOUT (0xFA038018)=0x00000000
PDIN (0xFA03801C)= 0xB0000014
PDCLR (0xFA038020)= 0x00000000
AFESRCTL (0xFA03806C)= 0x00000113
AFSXCTL (0xFA0380AC)= 0x00000113
GBLCTL (0xFA038044)= 0x00001F1F
RGBLCTL (0xFA038060)= 0x00001F1F
XGBLCTL (0xFA0380A0)= 0x00001F1F
AMUTE (0xFA038048)=0x00000000
RINTCTL (0xFA03807C)= 0x00000000
XINTCTL (0xFA0380BC)=0x00000000
RSTAT (0xFA038080)= 0x0000017D
XSTAT (0xFA0380C0)=0x00000154
达芬奇_McBSP_stop 被调用、捕获
在 DaVinci_McASP_STOP 之后
PFUNC (0xFA038010)=0x00000000
Pdir (0xFA038014)= 0xFC000010
PDOUT (0xFA038018)=0x00000000
PDIN (0xFA03801C)=0x80000014
PDCLR (0xFA038020)= 0x00000000
AFESRCTL (0xFA03806C)= 0x00000113
AFSXCTL (0xFA0380AC)= 0x00000113
GBLCTL (0xFA038044)= 0x00001F00
RGBLCTL (0xFA038060)= 0x00001F00
XGBLCTL (0xFA0380A0)= 0x00001F00
AMUTE (0xFA038048)=0x00000000
RINTCTL (0xFA03807C)= 0x00000000
XINTCTL (0xFA0380BC)=0x00000000
RSTAT (0xFA038080)= 0x00000104
XSTAT (0xFA0380C0)= 0x0000015C
谢谢