找回密码
 注册
搜索
查看: 564|回复: 2

[讨论] 2410的DMA传输结束进不了中断

[复制链接]
发表于 2008-7-23 11:37:10 | 显示全部楼层 |阅读模式
ClearPending(BIT_DMA2);                        
    rINTMOD = 0x0;
   
    // initialize philips UDA1341 chip
    init_1341(PLAY);   

    // set BDMA interrupt
    pISR_DMA2 = (unsigned)dma2_done;
    rINTMSK  &= ~(BIT_DMA2);
   
// initialize variables
    f_nDMADone = 0;
        
    //DMA2 Initialize
    rDISRCC2 = (0<<1) + (0<<0);             //AHB, Increment
    rDISRC2  = ((INT32T)(pWavFile));                    
    rDIDSTC2 = (1<<1) + (1<<0);             //APB, Fixed
    rDIDST2  = ((INT32T)IISFIFO);           //IISFIFO
    rDCON2   = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(0<<24)+(1<<23)+(0<<22)+(1<<20)+nSoundLen/2;
    //Handshake, sync PCLK, TC int, single tx, single service, I2SSDO, I2S request,
    //Auto-reload, half-word, size/2
    rDMASKTRIG2 = (0<<2)+(1<<1)+0;            //No-stop, DMA2 channel on, No-sw trigger

    //IIS Initialize
    //Master,Tx,L-ch=low,iis,16bit ch.,CDCLK=384fs,IISCLK=32fs
    rIISCON = (1<<5)+(0<<4)+(0<<3)+(1<<2)+(1<<1);
    rIISMOD = (0<<8) + (2<<6) + (0<<5) + (0<<4) + (1<<3) + (1<<2) + (1<<0);      
    rIISPSR = (2<<5) + 2;                    //Prescaler_A/B=3
   
    //Tx DMA enable,Rx DMA disable,Tx not idle,Rx idle,prescaler enable,stop
    rIISFCON = (1<<15) + (1<<13);           //Tx DMA,Tx FIFO --> start piling....
   
     rIISCON |= 0x1;                         // enable IIS   
    while( f_nDMADone == 0);   
    rINTMSK |= BIT_DMA2;        
    rIISCON = 0x0;                            // IIS stop




void __irq dma2_done(void)
{
    ClearPending(BIT_DMA2);                        // clear pending bit
    f_nDMADone = 1;
}




不懂为什么一到while( f_nDMADone == 0);  程序就跑飞呢?
 楼主| 发表于 2008-7-23 11:38:58 | 显示全部楼层
跑飞的情况:声音在不断循环播放
点评回复

使用道具 举报

发表于 2008-7-25 21:34:37 | 显示全部楼层
OS是什么??
最好贴出全部相关代码.
使用while( f_nDMADone == 0);轮询方式,还不如使用等待事件的方式.
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-25 12:29 , Processed in 0.043984 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表