Maximum size of FLEXIO UART transfer with EDMA

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Maximum size of FLEXIO UART transfer with EDMA

Jump to solution
1,497 Views
arnhold
Contributor I

Hello everybody

I am trying to send a large array through FLEXIO UART with DMA. I used the flexio_uart_edma_transfer example.

Everything works fine until my array is larger than 32767 bytes. This means that some signed 16-bit variable is being used to send that array, but all uart/edma struct variables are 32 bits.

Is there a limitation of 32767 bytes on a single transfer? Or could be something inside the driver?

iMXRT1064 

Best Regards,

Arnhold

Labels (1)
0 Kudos
Reply
1 Solution
1,477 Views
imxrtuser
Senior Contributor I

Hello,

maybe the eDMA is used the same way as in the LPUART example project and limits the maximum single transfer size.

see my question and the solution to LPUART in this post https://community.nxp.com/t5/i-MX-RT/Is-there-a-lpuart-edma-transfer-size-limit/m-p/1025967

Kind regards,

Stefan

View solution in original post

3 Replies
1,478 Views
imxrtuser
Senior Contributor I

Hello,

maybe the eDMA is used the same way as in the LPUART example project and limits the maximum single transfer size.

see my question and the solution to LPUART in this post https://community.nxp.com/t5/i-MX-RT/Is-there-a-lpuart-edma-transfer-size-limit/m-p/1025967

Kind regards,

Stefan

1,465 Views
arnhold
Contributor I

Hello Stefan

Thank you very much for your reply. I've read the situation that you sent and it is the same phenomenon that I am facing.
I will take a look at the scatter/gather function to solve this situation.

Best Regards,

Arnhold

0 Kudos
Reply
1,480 Views
Hui_Ma
NXP TechSupport
NXP TechSupport

Hi,

I checked the FLEXIO_UART_TransferSendEDMA() function in  <fsl_flexio_uart_edma.c> file for send data using eDMA. 

 The EDMA_PrepareTransfer() will initialize the DMA setting, the "xfer->dataSize" define the param transferBytes eDMA transfer bytes to be transferred, which was uint32_t variable.

flexio_uart_transfer_t *xfer

The struct flexio_uart_transfer_t define the dataSize is size_t (unsigned int).

If possible, please debug the code and set breakpoint at FLEXIO_UART_TransferSendEDMA() function to double check the set "xfer->dataSize" as expected.

Wish it helps.

Mike

 

0 Kudos
Reply