AnsweredAssumed Answered

K82: QSPI writing to flash memory small chunks

Question asked by Eugene Hiihtaja on Jul 29, 2019
Latest reply on Aug 1, 2019 by Jing Pan

Hello !

 

I have taken qspi_edma transfer example for FRDMK82 board from latest SDK and it work fine.

 

By default it write PAGE_SIZE data chunks to flash memory but I need smaller once.

 

I have modified  function program_page for support smaller chunks of data :

 

/* Program data into serial flash using QSPI polling way */
void program_page(uint32_t dest_addr, uint32_t *src_addr, size_t size)
{
qspi_transfer_t xfer = {0};

xfer.data = (uint32_t *)src_addr;
xfer.dataSize = size; //FLASH_PAGE_SIZE; //
while (QSPI_GetStatusFlags(EXAMPLE_QSPI) & kQSPI_Busy)
{
}

QSPI_ClearFifo(EXAMPLE_QSPI, kQSPI_TxFifo);
QSPI_SetIPCommandAddress(EXAMPLE_QSPI, dest_addr);
QSPI_SetIPCommandSize(EXAMPLE_QSPI, size /*FLASH_PAGE_SIZE*/); //
cmd_write_enable();

.....

 

and it work fine with 32 byte chunks ( and bigger once ).

 

But not with 16 bytes long.

 

What can be problem ?

Can it be some QSPI Fifo size limitations or someting else ?

 

I think used NOR flash memory ( MX25U3235F ) supports writes from 1 byte up to page size long.

 

I should be able to fill sector by using 4,8 and 16 byte long chunks.

 

Could you advice what is QSPI controller limitations for read/write operations ?

 

Regards,

Eugene

Outcomes