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