This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28388D: UART transmit interrupt trigger when using uDMA in CM

Part Number: TMS320F28388D

Respected,

I am devolving the driver for the UART module on the F28388D CM core.

I have a problem when trying to transfer a n-byte data. 

I enable the UART_INT_DMATX in the UART to trigger an interrupt when my data is finished transferring but instead it enters my interrupt service routine after 2 bytes of data are sent and the second interrupt is triggered when my data is finished transferring.

When it first enters my ISR, I do a UART_getInterruptStatus(UART0_BASE, UART_MASKED_INT); and can see that the DMATXMIS is set, but the DMA hasn't finished transferring.

Is there a way to resolve this issue of the first unwanted triggered interrupt?

Kind Regards,

Aleksandar

 

  • Hi Aleksandar,

     I enable the UART_INT_DMATX in the UART to trigger an interrupt when my data is finished transferring but instead it enters my interrupt service routine after 2 bytes of data are sent and the second interrupt is triggered when my data is finished transferring.

    What do you mean by 2 byte of data are sent ? Is it from UART to external word or from DMA ? Please note that DMA DONE is generated as soon as DMA copies the specific number of data into FIFO and it may take a while for UART to send all data out. please see below note in UART chapter -

    Regards,

    Vivek Singh

  • Hi Singh,

    OK, I see my error, my thought was that DMATXRIS is to indicate the full transfer competition.

    I enabled the EOT in UARTCTL and my code works now.

    Just one correction to the snap of the UART chapter you sent, there is no EOTIM bit in the UARTIM register, when the EOT is enabled it sets the TXRIS.

    Regards,

    Aleksandar