有哪位大侠,调通过S3C2440A的串口dma功能,我把那几个寄存器都配置了,都不行,请指点一下,有什么问题么?或者那个寄存器配置有特殊的要求?谢谢!!
void Uart_DMA_TX_Config(void)
{
rUCON0=0x24a; //发送中断为电平方式,接收中断为边沿方式,禁止超时中断,允
许产生错误状态中断,禁止回送模式,禁止中止
//信号,传输模式为DMA请求模式,接收模式也为DMA请求模式。
pISR_DMA0 = (unsigned)Dma0Done;
EnableIrq(BIT_DMA0); //open DMA0 INTERRUPT
rDISRC0=(U32)Uart0_TX; //初始源地址寄存器,为串口0接收缓冲器
rDISRCC0=0x00; //地址为TX数据缓存,源在系统总线上,增加
rDIDST0=(U32)UTXH0; //初始目的地址UTXH0
rDIDSTC0=0x1; //初始目的地址控制寄存器 CHK_INT:0,当TC为0,
中断出现
//LOC:0,源在系统总线上 INC:1,固定
rDCON0=(1<<31)|(1<<30)|(1<<29)|(0<<28)|(1<<27)|(1<<24)|
(1<<23)|(1<<22)|(0<<20)|(0);
//DMA控制寄存器,DMD_HS:1,选择握手模式,SYNC=0,与PCLK同步,SYNC=1,与HCLK同步
//INT=0,CURR_TC,中断无效,需要查看传输计数器的数值,INT=1传输结束产生中断
//TSZ=0;执行单元传输,SERVMODE=0.单服务模式,
//HWSRCSEL=001,DMA通道选择USART0,SWHW_SEL=1,硬件请求模式。
//RELOAD=0,关闭自动重载,DSZ=00,传输数据位byte,
//TC=0x00,初始化传输计数为0。
rDMASKTRIG0=0x03; //DMA on, SW_TRIG
} |