2022-12-25 07:09 AM
We need your help regarding SPC58EG DMA configurations. We wanted configure DMA for DSPI communication.
Below configurations are done in code , currently not working.
eDMA_1 module , DMA channel – 12 (TX), 13 (RX), DMACHMUX_0 slot 6, 7 (as per below snap) , priorities for channels are set to 14
Here , pls confirm if TX channel needs to have source ? as intention is RAM to DSPI PUSH transfer.
To prove DMA module working we tried memory to memory transfer just to test DMA as below
#define EDMA (*( volatile struct EDMA_tag *) 0xF40A4000)
void Test_dma(void)
{
EDMA.TCD[0].SADDR = (unsigned32_t)&DMA_test_tx_data[0];;
EDMA.TCD[0].SIZE_MOD.R = 0x0202;
EDMA.TCD[0].SOFF = 4;
EDMA.TCD[0].NBYTES = 4;
EDMA.TCD[0].DADDR = (unsigned32_t)&DMA_test_rx_data[0]; // DSPIB_PUSHR register
EDMA.TCD[0].CITER_ELINKYES_CITER= 2;
EDMA.TCD[0].DOFF = 0;
EDMA.TCD[0].DLAST_SGA = 0;
EDMA.TCD[0].BITER_ELINKYES_CITER= 2;
EDMA.TCD[0].BWC = 0;
EDMA.TCD[0].MAJORLINKCH = 0;
EDMA.TCD[0].MAJORELINK = 0;
EDMA.TCD[0].ESG = 0;
EDMA.TCD[0].DREQ = 1;
EDMA.TCD[0].INTHALF = 0;
EDMA.TCD[0].INTMAJ = 0;
EDMA.TCD[0].START = 0;
EDMA.TCD[0].BITER_ELINKYES_CITER = 2;
EDMA.TCD[0].CITER_ELINKYES_CITER = 2;
EDMA.TCD[0].SLAST = 0;///-8
EDMA.SERQ.R = 0; // Enable Tx request
}
DMA ch –0, eDMA_1 module, DMACHMUX_0 slot 62 , priorities for channels are set to 13
(below – didn’t worked )
Request you to please guide what is missed for triggering DMA transfer.
Part number - SPC58EG80E5QEC0X