Hi all,
I am just trying to use multiple UART modules on my board. I just added UART2 requirements to default lpuart_edma_transfer(SDK) example. I will be sharing lpuart_edma_transfer.c file below. Here is the following updates that I have been added to default file:
Handlers for EDMA and UART2 RX and TX :
lpuart_edma_handle_t g_lpuartEdmaHandle2;
edma_handle_t g_lpuartTxEdmaHandle2;
edma_handle_t g_lpuartRxEdmaHandle2;
Usercallbacks for UART2 :
volatile bool rxBufferEmpty2 = true;
volatile bool txBufferFull2 = false;
volatile bool txOnGoing2 = false;
volatile bool rxOnGoing2 = false;
void LPUART_UserCallback_2(LPUART_Type *base, lpuart_edma_handle_t *handle, status_t status, void *userData)
{
if (kStatus_LPUART_TxIdle == status)
{
txBufferFull2 = false;
txOnGoing2 = false;
}
if (kStatus_LPUART_RxIdle == status)
{
rxBufferEmpty2 = false;
rxOnGoing2 = false;
}
}
DMA Source and Channel operations for UART2 :
DMAMUX_SetSource(EXAMPLE_LPUART_DMAMUX_BASEADDR, LPUART_TX_DMA_CHANNEL2, LPUART_TX_DMA_REQUEST2);
DMAMUX_SetSource(EXAMPLE_LPUART_DMAMUX_BASEADDR, LPUART_RX_DMA_CHANNEL2, LPUART_RX_DMA_REQUEST2);
DMAMUX_EnableChannel(EXAMPLE_LPUART_DMAMUX_BASEADDR, LPUART_TX_DMA_CHANNEL2);
DMAMUX_EnableChannel(EXAMPLE_LPUART_DMAMUX_BASEADDR, LPUART_RX_DMA_CHANNEL2);
DMA Create Handle for UART2 :
EDMA_CreateHandle(&g_lpuartTxEdmaHandle2, EXAMPLE_LPUART_DMA_BASEADDR, LPUART_TX_DMA_CHANNEL2);
EDMA_CreateHandle(&g_lpuartRxEdmaHandle2, EXAMPLE_LPUART_DMA_BASEADDR, LPUART_RX_DMA_CHANNEL2);
LPUART Create Transfer Handle for UART2:
LPUART_TransferCreateHandleEDMA(DEMO_LPUART2,
&g_lpuartEdmaHandle2,
LPUART_UserCallback_2,
NULL,
&g_lpuartTxEdmaHandle2,
&g_lpuartRxEdmaHandle2);
Sending operations:
while(1)
{
LPUART_ReceiveEDMA(DEMO_LPUART, &g_lpuartEdmaHandle, &receiveXfer);
LPUART_SendEDMA(DEMO_LPUART2, &g_lpuartEdmaHandle2, &sendXfer);
}
After the whole change, I connect my UART2(TX) and UART1(RX) with jumpers. But there is no data communication. What is wrong with that? Could you help me please.
Thanks and Regards.