Using DMA on both USIC channels

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Not applicable
I would like to use a DMA for both USICx channels. For each channel using 2 Service Requests ( 1 for sending, 1 for receiving).
But USIC0 and USIC1 only has SR 2 inputs (?). So i guess i can't use the DMA for both USICs in my case? ( or only using DMA e.g. for either receiving or transmitting) ?

The USIC2 has 4 Service requests, but somehow, if i use the DLR lines 10 and 11 OR SR2 and SR3, no data is transmitted or received. But DLR 8 and 9 works fine with SR0 and SR1
Any ideas, what the problem is here? The registers are configured correct (DLR_SRSELx, DLR->LNEN,...)

my GPDMA interrupt handling looks like this:

void GPDMA1_0_IRQHandler(void){
OS_EnterInterrupt();
GPDMA1_GLOBAL_TypeDef* DMARegs = GPDMA1;
uint32_t Reg;
// Block finished interrupt
if( DMARegs->STATUSINT&GPDMA1_STATUSINT_BLOCK_Msk )
{
Reg = DMARegs->STATUSBLOCK;
if( Reg&(1< // uart2 DMA Block complete interrupt
// clear interrupt flags
Board.SpiInterface.RxFinishedISR();
}
else if( Reg&(1< // uart2 DMA Block complete interrupt
// clear interrupt flags
Board.SpiInterface.TxFinishedISR();
}
}

OS_LeaveInterrupt();
}

0 Likes
2 Replies
rst
Level 3
Level 3
First solution authored Welcome!
xiaowo wrote:
So i guess i can't use the DMA for both USICs in my case?

You can, but not simultaneously (first - one USIC, then - second).
0 Likes
jferreira
Employee
Employee
10 sign-ins 5 sign-ins First like received
Hi,

On USIC module 2 it is possible.
Did you try using the APPs?

Regards,
Jesus
0 Likes