开发板是mini2440,写了一个DMA测试程序,ram到ram的数据复制测试成功,但io到ram的测试通不过,始终接收到不DMA中断。研究很长时间,也参照了网上找的一些代码,实在解决不了了,请高手指点一下,非常感激!
初始化汇编代码应该没有问题,因为am到ram的数据复制也是用的那个代码。UART0的RX设为DMA模式 使用硬件触发,在DMA中断代码中点灯。
寄存器配置如下:
pDMA->DISRC=URXH0;
pDMA->DIDST=0x30200000; //dram地址
pDMA->DISRCC=(1<<1)|(1<<0); // APB fix
pDMA->DIDSTC=(0<<1)|(0<<0); // AHB inc
// 非握手模式 APB同步 中断有效 非爆发 单服务
pDMA->DCON=(0<<31)| (0<<30)| (1<<29)| (0<<28)| (0<<27)|\
(0<<24)| (1<<23)| (0<<22)| (0<<20)| 8;
//nXDREQ0 hardware trigger reload 字节传输 计数器8
pDMA->DMASKTRIG=(1<<1)|0; //DMA on
uart的配置
UCON0 = 0x06; // 110 方式,rx使用dma,UART时钟源为PCLK
UFCON0 = (0<<6) | (1 <<4) | 1; //enable fifo ,reset disable, tx trigger to 1,rx trigger is max