我在做基于uda1345(和uda1341差不多)的音频驱动程序的时候出现了下面的问题:进得了I2SSDO中断,但是I2S总线上没有音频信号输出。我有下面几个疑惑:
1、DCON寄存器的INT[29]位是这样描述的:每一次原子传输完成后CURR_TC减一,当CURR_TC=0后传输完成,这时产生中断请求。而CURR_TC的初始值是DCON中的TC[19:0],那么也就是说在设置DCON的时候应该将TC设置成某个不为0的计数初始值,而我看到的资料中一般将DCON设置成a0100000,也就是说TC=0,这是为什么呢? 2、程序运行时产生中断,进入中断服务函数s3c2410_dma_irq的条件到底是什么呢?两次中断之间的传输过程到底是什么呢?好像既不是atomic transfer也不是整个传输过程。 3、DMA传输过程应该是将DMA环形缓冲区中的数据搬到I2S的FIFO中,那么我怎么去判断这个传输过程成功没有呢? 4、我的程序可以不断地进入中断服务程序,这是不是说明DMA传输已经成功了?因为前面说传输完成后才产生中断请求。 5、我发现我将I2SCON中的I2SACTIVE设置成1或者0都没有什么区别,这可能是什么原因呢? 不知道我的问题说清楚没有,希望做过类似音频驱动的高手帮帮我,不胜感激!!! |