ForNever 发表于 2010-9-25 23:17:35

请教达人44B0的IIS如何设置才能工作在DMA模式下?

如果不采用DMA模式,下面的代码可以正常工作

pIIS->IISMOD    = 0x0189;// IIS slave transmit mode, 16bit, 256fs, 32fs
pIIS->IISFIFCON = 0x0200;// enable Transmit FIFO
pIIS->IISCON    = 0x0000;// disable Transmit DMA request
pIIS->IISCON    = 0x0001;// start IIS
       
while(1){
    while(pIIS->IISCON & 0x0080);
    wordCnt ++;
    if(wordCnt == 60)wordCnt = 0;
    if(wordCnt < 30)*(WORD *)0x01D18010 = 0x0000;
    else *(WORD *)0x01D18010 = 0x7FFF;
}


而下面的代码却无法使IIS工作在DMA模式下,其中data是指针,BDMA的power已经使能

pIIS->IISMOD    = 0x0189;// IIS slave transmit mode, 16bit, 256fs, 32fs
pIIS->IISFIFCON = 0x0A00;// enable Transmit FIFO & DMA mode
pIIS->IISCON    = 0x0020;// enable Transmit DMA request
       
pBDMA->DICNT1= (1 << 30) | (1 << 26) | 0x80000;
                                        // IIS, handshake, unit transfer, polling, disable auto reload, disable DMA
pBDMA->DISRC1= (1 << 30) | (1 << 28) | (DWORD)data;// half word, increment address
pBDMA->DIDES1= (1 << 30) | (3 << 28) | 0x01D18010;// M2IO, fixed address
pBDMA->DICNT1 |= (1 << 20);//enable BDMA0
pBDMA->DCON1   = 0;// enable DMA request
       
pIIS->IISCON    = 0x0021;// start IIS

调试时发现pBDMA->DCCNT1中的计数值不变,DAC不出声。

在网上搜过许多程序,都是大同小异,但都无法使IIS工作在DMA模式下,即便是设置成IIS主动模式。所以请教达人44B0的IIS如何设置才能工作在DMA模式下?

flagyan 发表于 2010-12-9 21:29:01

我记得我以前的44b0板子带的测试程序iis用dma是没问题的
页: [1]
查看完整版本: 请教达人44B0的IIS如何设置才能工作在DMA模式下?