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.

把OMAPL137改成McASP burst模式出现错误



Hi, 

我想把OMAPL137的官网例程aic3106修改成McASP为 burst模式,aic3106为DSP模式,中断的方式读取和放出音频数据,slot大小为32bit,word大小为16bit,这样一个FS内可以采集和放出左右两个通道的数据,做了以下的修改,其他都没变,现在发现放出声音的话可以两通道分别放,但是从麦克采集的数据是有问题的,不知道哪里设置错了。请大家指教。

aic3106只修改了这里:EVMC6747_AIC3106_rset(  9, 0x40 );  // 9  Audio Interface Control B       <- [DSP mode][16 bit]

McASP只修改了这里:

mcasp->regs->XFMT = 0x000080F8;             // MSB 16bit, 0-delay, no pad, CFGBus
mcasp->regs->AFSXCTL = 0x00000002;       // burst, Rising, INTERNAL FS, Single bit
mcasp->regs->ACLKXCTL = 0x000000AF;    // ASYNC, Rising INTERNAL CLK, div-by-16
mcasp->regs->AHCLKXCTL = 0x00000000;  // EXT CLK
mcasp->regs->XTDM = 0x00000001;              // slot 0
mcasp->regs->XINTCTL = 0x00000020;         // interrupt on transmit
mcasp->regs->XCLKCHK = 0x00000000;

这里感觉时钟源是内部还是外部应该不需要改动吧?引脚是输入和输出应该也不用改动吧?得到的结果很不规律,之前用例程I2S方式得到的数据就是很好的正弦波。多谢指教!

  • 左右两通道,为什么是用burst mode,那如何区分左右通道呢?应该是I2S mode吧。

    AIC3106的设置没有认真研究过,有需要的话,上模拟与混合信号->音频论坛问一下。

    另外,如果按你的burst mode,左右通道则只一个帧同步,那么是不是左右通道的数据应该一次读写(按32bit,而不是按16位呢)