您好,
我的 DMA 用法如下:
{
sInitDma();
sInitSpiAFifo();
sInitSpiBFifo();
{
//
DMA Transmission is normal;
//
}
DMAInitialize();
spiaInit(); //quit fifo mode
spibInit(); //quit fifo mode
delay;
/**************************************************/
sInitDma();
sInitSpiAFifo();
sInitSpiBFifo();
{
//
DMA Can not work normally;
//
}
DMAInitialize();
spiaInit(); //quit fifo mode
spibInit(); //quit fifo mode
}


因为我在环路内使用 DMA 模式创建了一个环路。 在周期间隔的中间、需要将 SPI 切换到正常模式(非 DMA、非 FIFO)。
但是、当我第二次循环并进入 DMA 模式时、我发现 DMA 传输无法正常工作。
我检查了 DMA 寄存器、如下所示:

在我使用启动 DMA4之后
//运行
EALLOW;
DmaRegs.Ch4.control.bit.run = 1;
DmaRegs.ch5.control.bit.run = 1;
EDIS;
、
"DmaRegs.Ch4.control.bit.RUNSTS" 为 1、 但 "SRC_BeG_ADDR_ACTIVe" 和 "dst_beg_ADDR_ACTIVe" 仍为0。
这种现象是否正常?
谢谢!
