目前我在调试omapl138的mcasp,系统主时钟为24MHZ。需要音频的采样时钟为2.048MHZ。通过主时钟无法得到2.048MHZ的时钟,因此在mcasp的AHCLKX引脚上接一个24.576的时钟,通过12分频获取2.048MHZ的时钟。
问题:在使用内部的AUX_CLK时钟的话,数据可以正确的收发。但是如果切换到AHCLKX模式的话,采样时钟和帧同步时钟都可以输出,但是数据不能正确的收发。没有产生中断即davinci_pcm_dma_irq没有执行到。导致发送的程序死在哪儿。
使用内部时钟和外部时钟的寄存器配置的区别就是
外部
__raw_writel(0x0002,dev->base+DAVINCI_MCASP_AHCLKXCTL_REG);
mcasp_clr_bits(dev->base + DAVINCI_MCASP_PDIR_REG,
AHCLKX);
内部:
__raw_writel(0x8002,dev->base+DAVINCI_MCASP_AHCLKXCTL_REG);
mcasp_set_bits(dev->base + DAVINCI_MCASP_PDIR_REG,
AHCLKX);
请教大虾们,有没有谁遇到这种情况呀。或者,能不能提供使用外部AHCLKX的例子程序。在此先谢谢了。