FlexSPI IP Command Read Transfer Size Limit

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

FlexSPI IP Command Read Transfer Size Limit

355 次查看
kvsh
Contributor I
I am reading 256 bytes using a FlexSPI IP command DMA read on an RT1050 custom board. The first 128 bytes are correct, but the second 128 bytes repeat the first 128 bytes. Is it correct that it is not possible to read more than the RX FIFO size in one IP command read transfer, and that I need to use an AHB read instead?
Code is below.

 

AT_NONCACHEABLE_SECTION_ALIGN(uint32_t destAddr[256], 8);

 

edma_handle_t txEdmaHandle, rxEdmaHandle;

flexspi_edma_handle_t flexspiEdmaHandle;

 

#define FLEXSPI_DMA_TX_CHANNEL 1

#define FLEXSPI_DMA_RX_CHANNEL 0

#define NUM_BYTES_RX 256

 

edma_config_t userConfig;

DMAMUX_Init(EXAMPLE_DMAMUX);

DMAMUX_EnableAlwaysOn(EXAMPLE_DMAMUX, 0, true);

DMAMUX_EnableChannel(EXAMPLE_DMAMUX, 0);

 

EDMA_GetDefaultConfig(&userConfig);

EDMA_Init(EXAMPLE_DMA, &userConfig);

 

EDMA_CreateHandle(&rxEdmaHandle, EXAMPLE_DMA, FLEXSPI_DMA_RX_CHANNEL);

EDMA_CreateHandle(&txEdmaHandle, EXAMPLE_DMA, FLEXSPI_DMA_TX_CHANNEL);

 

FLEXSPI_TransferCreateHandleEDMA(EXAMPLE_FLEXSPI,

&flexspiEdmaHandle,

EDMA_Callback,

NULL,

&txEdmaHandle,

&rxEdmaHandle);

 

// tried different sizes, no success

flexspiEdmaHandle.nsize = kFLEXPSI_EDMAnSize8Bytes; //kFLEXPSI_EDMAnSize1Bytes;

 

flexspi_transfer_t xfer = {

.port = FLASH_PORT,

.cmdType = kFLEXSPI_Read,

.seqIndex = 0,

.SeqNumber = 1,

.deviceAddress= 0,

.data = destAddr,

.dataSize = NUM_BYTES_RX

};

 

status_t st = FLEXSPI_TransferEDMA(EXAMPLE_FLEXSPI, &flexspiEdmaHandle, &xfer);

 
 
0 项奖励
回复
1 回复

314 次查看
Gavin_Jia
NXP TechSupport
NXP TechSupport

Hi @kvsh ,

Thanks for your interest in NXP MIMXRT series!

128 bytes is only the capacity of the IP RX FIFO; it is not the total transfer limit for the IP command read. Please refer to `evkmimxrt1170_flexspi_nor_edma_transfer_cm7` in the RT1170-EVK SDK. Thanks!

Best regards,
Gavin

 

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2339359%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EFlexSPI%20IP%20%E5%91%BD%E4%BB%A4%E8%AF%BB%E5%8F%96%E4%BC%A0%E8%BE%93%E5%A4%A7%E5%B0%8F%E9%99%90%E5%88%B6%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2339359%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CDIV%3E%E6%88%91%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%20RT1050%20%E5%AE%9A%E5%88%B6%E4%B8%BB%E6%9D%BF%E4%B8%8A%E7%9A%84%20FlexSPI%20IP%20%E5%91%BD%E4%BB%A4%20DMA%20%E8%AF%BB%E5%8F%96%20256%20%E5%AD%97%E8%8A%82%E3%80%82%E5%89%8D%20128%20%E4%B8%AA%E5%AD%97%E8%8A%82%E6%98%AF%E6%AD%A3%E7%A1%AE%E7%9A%84%EF%BC%8C%E4%BD%86%E7%AC%AC%E4%BA%8C%E4%B8%AA%20128%20%E5%AD%97%E8%8A%82%E9%87%8D%E5%A4%8D%E4%BA%86%E5%89%8D%20128%20%E4%B8%AA%E5%AD%97%E8%8A%82%E3%80%82%E5%9C%A8%E4%B8%80%E6%AC%A1%20IP%20%E5%91%BD%E4%BB%A4%E8%AF%BB%E5%8F%96%E4%BC%A0%E8%BE%93%E4%B8%AD%E4%B8%8D%E5%8F%AF%E8%83%BD%E8%AF%BB%E5%8F%96%E8%B6%85%E8%BF%87%20RX%20FIFO%20%E5%A4%A7%E5%B0%8F%E7%9A%84%E6%95%B0%E6%8D%AE%EF%BC%8C%E8%80%8C%E9%9C%80%E8%A6%81%E4%BD%BF%E7%94%A8%20AHB%20%E8%AF%BB%E5%8F%96%EF%BC%8C%E8%BF%99%E7%A7%8D%E8%AF%B4%E6%B3%95%E6%AD%A3%E7%A1%AE%E5%90%97%EF%BC%9F%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%E4%BB%A3%E7%A0%81%E5%A6%82%E4%B8%8B%E3%80%82%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Eat_noncacheable_section_align(%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3EdestAddr%5B256%5D%2C%208)%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Eedma_handle_t%3C%2FSPAN%3E%3CSPAN%3EtxEdmaHandle%2C%20rxEdmaHandle%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Eflexspi_edma_handle_t%3C%2FSPAN%3E%3CSPAN%3EflexspiEdmaHandle%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%3CSPAN%3Eflexspi_dma_tx_channel%201%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%3CSPAN%3Eflexspi_dma_rx_channel%200%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%23define%20NUM_BYTES_RX%20256%3C%2FSPAN%3E%3C%2FP%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CP%3E%3CSPAN%3Eedma_config_t%3C%2FSPAN%3E%3CSPAN%3EuserConfig%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EDMAMUX_Init%EF%BC%88EXAMPLE_DMAMUX%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EDMAMUX_EnableAlwaysOn(EXAMPLE_DMAMUX%2C%200%2C%20true)%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EDMAMUX_EnableChannel(EXAMPLE_DMAMUX%2C%200)%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3EEDMA_GetDefaultConfig(%26amp%3BuserConfig)%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EEDMA_Init(EXAMPLE_DMA%2C%26amp%3BuserConfig)%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3EEDMA_CreateHandle(%26amp%3BrxEdmaHandle%2C%20EXAMPLE_DMA%2C%20FLEXSPI_DMA_RX_CHANNEL)%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EEDMA_CreateHandle(%26amp%3BtxEdmaHandle%2C%20EXAMPLE_DMA%2C%20FLEXSPI_DMA_TX_CHANNEL)%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CP%3E%3CSPAN%3EFLEXSPI_TransferCreateHandleEDMA%EF%BC%88EXAMPLE_FLEXSPI%E3%80%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%26amp%3BflexspiEdmaHandle%E3%80%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EEDMA_Callback%E3%80%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ENULL%E3%80%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%26amp%3BtxEdmaHandle%E3%80%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%26amp%3BrxEdmaHandle%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%2F%2F%20%E5%B0%9D%E8%AF%95%E4%BA%86%E4%B8%8D%E5%90%8C%E7%9A%84%E5%B0%BA%E5%AF%B8%EF%BC%8C%E6%B2%A1%E6%9C%89%E6%88%90%E5%8A%9F%3C%2FP%3E%3CP%3E%3CSPAN%3EflexspiEdmaHandle.%3C%2FSPAN%3E%3CSPAN%3Ensize%3C%2FSPAN%3E%3CSPAN%3E%3D%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXPSI_EDMAnSize8Bytes%3C%2FSPAN%3E%3CSPAN%3E%3B%20%3C%2FSPAN%3E%3CSPAN%3E%2F%2FkFLEXPSI_EDMAnSize1Bytes%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Eflexspi_transfer_t%3C%2FSPAN%3E%3CSPAN%3Exfer%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E.port%20%3D%20FLASH_PORT%E3%80%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E.cmdType%20%3D%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Read%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E.seqIndex%20%3D%200%E3%80%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E.SeqNumber%20%3D%201%E3%80%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E.deviceAddress%3D%200%E3%80%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E.data%20%3D%20destAddr%E3%80%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E.dataSize%20%3D%20NUM_BYTES_RX%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3Estatus_t%3C%2FSPAN%3E%3CSPAN%3Est%20%3D%20FLEXSPI_TransferEDMA(EXAMPLE_FLEXSPI%2C%26amp%3BflexspiEdmaHandle%2C%26amp%3Bxfer)%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2339968%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20FlexSPI%20IP%20Command%20Read%20Transfer%20Size%20Limit%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2339968%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F261016%22%20target%3D%22_blank%22%3E%40kvsh%3C%2FA%3E%E3%80%81%3C%2FP%3E%0A%3CP%3E%E6%84%9F%E8%B0%A2%E6%82%A8%E5%85%B3%E6%B3%A8%E6%81%A9%E6%99%BA%E6%B5%A6%20MIMXRT%20%E7%B3%BB%E5%88%97%EF%BC%81%3C%2FP%3E%0A%3CP%3E128%20%E5%AD%97%E8%8A%82%E5%8F%AA%E6%98%AF%20IP%20RX%20FIFO%20%E7%9A%84%E5%AE%B9%E9%87%8F%EF%BC%9B%E5%AE%83%E4%B8%8D%E6%98%AF%E8%AF%BB%E5%8F%96%E7%9A%84%20IP%20%E5%91%BD%E4%BB%A4%E7%9A%84%E6%80%BB%E4%BC%A0%E8%BE%93%E9%99%90%E5%88%B6%E3%80%82%E8%AF%B7%E5%8F%82%E9%98%85%20RT1170-EVK%20SDK%20%E4%B8%AD%E7%9A%84%20%60evkimxrt1170_flexspi_nor_edma_transfer_cm7%60%20%E3%80%82%E8%B0%A2%E8%B0%A2%EF%BC%81%3C%2FP%3E%0A%3CP%3E%E8%87%B4%E4%BB%A5%E6%9C%80%E8%AF%9A%E6%8C%9A%E7%9A%84%E9%97%AE%E5%80%99%EF%BC%8C%3CBR%20%2F%3EGavin%3C%2FP%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E