Reply
Highlighted
Posts: 18
Registered: ‎12-05-2016

EFR32 LDMA_IRQHandler

Hello.

I programmed USART0 receiver using "uartdrv.c":I see

void XmodemCommInit(USART_TypeDef *usart)
{

  UARTDRV_HandleData_t  UARTHandleData; 
  UARTDRV_Handle_t      UARTHandle = &UARTHandleData;
  UARTDRV_Init_t init = XMODEM_USART_INIT; //#-defined in header 
  UARTDRV_Init(UARTHandle, &init);
  UARTDRV_Receive(UARTHandle, rxdma, 4, rxCallback);
}

I see that bytes, which I send from the terminal are written to array rxdma. I expect that after sending four bytes "void LDMA_IRQHandler( void )" will be called, but it never stops on the breakpoint, which I put there.

In file "nvic-config-series1-config1.h" I see lines, which confuse me:

 

SEGMENT()
SEGMENT2()
EXCEPTION( 24, LDMA_IRQHandler, 4, 0)

I know that in EFR32MG12P LDMA IRQ vector is equal to 9, but I see 24 here. Can it be the reason of my failure?

Thanks.

Posts: 259
Registered: ‎08-16-2012

Re: EFR32 LDMA_IRQHandler

Your code is incomplete, it is hard to know what is the problem.

Anyway, attached is an example of UARTDRV for EFM32PG STK with hardware flow control. You can use it as a reference.

 

My views are my own and do not necessarily represent the views of Silicon Labs
Posts: 18
Registered: ‎12-05-2016

Re: EFR32 LDMA_IRQHandler

Thank you.

These examples are really useful. Though, as I found out, my problems are not in USART but in interrupts handling. After DMA is completed interrupt causes jump to a wrong place with the subseqent crash.