Maximum size of FLEXIO UART transfer with EDMA

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

Maximum size of FLEXIO UART transfer with EDMA

跳至解决方案
1,325 次查看
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

标签 (1)
0 项奖励
回复
1 解答
1,305 次查看
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

在原帖中查看解决方案

3 回复数
1,306 次查看
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,293 次查看
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 项奖励
回复
1,308 次查看
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 项奖励
回复