Part Number: TMS320F28377S
Hi ,
My DMA usage is as follows:
{
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
}


Because I made a loop, using DMA mode inside the loop. In the middle of the cycle interval, the spi needs to be switched to the normal mode (non-DMA, non-FIFO).
But when I looped for the second time and entered DMA mode, I found that DMA transmission could not work normally.
I checked DMA register, as following:

After I start DMA4 with
//run
EALLOW;
DmaRegs.CH4.CONTROL.bit.RUN = 1;
DmaRegs.CH5.CONTROL.bit.RUN = 1;
EDIS;
,
"DmaRegs.CH4.CONTROL.bit.RUNSTS" is 1, but "SRC_BEG_ADDR_ACTIVE" and "DST_BEG_ADDR_ACTIVE" is still 0.
Is this phenomenon normal?
Thanks!
