hi i want store some kmph data to the internal flash of the mimxrt1064 i gone through the nxp community i got to know that we can use evkmimxrt1064_flexspi_nor_polling_transfer example to understand so while going through that
link 1:
==> the example is used flexspi1 i.e external flash so internal flash is connected flexspi2
==> the ROM bootloader will configure the pins of this FlexSPI interface So flexspi configuration is it required or not
==> where can i get Flash size and example sector means
==> i didnt get what is meant by customLUT? and also i didnt get meaning of these two lines
i gone at the last provided link i didnt get api reference manal to understan what it is actually api mean and its argumentsf ew api iam mentionning
1) status = flexspi_nor_get_vendor_id(EXAMPLE_FLEXSPI, &vendorID);
2) status = flexspi_nor_enable_quad_mode(EXAMPLE_FLEXSPI);
3) status = flexspi_nor_flash_erase_sector(EXAMPLE_FLEXSPI, EXAMPLE_SECTOR * SECTOR_SIZE);
4) status =
flexspi_nor_flash_page_program(EXAMPLE_FLEXSPI, EXAMPLE_SECTOR * SECTOR_SIZE, (void *)s_nor_program_buffer);
few more are there where can i found this api maual
and in which section will be helpfull understand well i.MX RT1064 Processor Reference
Manual
Document Number: IMXRT1064RM
Rev. 2,
解決済! 解決策の投稿を見る。
hi community update to my my quetion i had done modification by referring below links i compiled and its working but i didnt find ANY API TO READ THE DATA FROM FLASH if i get that api i can verify the data which have writeen
1) iam sharing my code below if any correction required please let me
2)where can i found the api reference manual for above mentioned functions
https://community.nxp.com/t5/i-MX-RT/RT1050-QSPI-flash-change-to-Winbond-W25Q32JV-3-3V/m-p/904534
https://community.nxp.com/t5/MCUXpresso-General/I-can-not-erase-QSPI-Flash-W25Q32JV/m-p/884895
after modification my code is below iam attaching my project please go through it and also iam attaching my file
status_t flexspi_nor_enable_quad_mode(FLEXSPI_Type *base)
{
flexspi_transfer_t flashXfer;
status_t status;
uint32_t writeValue =0x0200;// FLASH_QUAD_ENABLE;
#if defined(CACHE_MAINTAIN) && CACHE_MAINTAIN
flexspi_cache_status_t cacheStatus;
flexspi_nor_disable_cache(&cacheStatus);
#endif
/* Write enable */
status = flexspi_nor_write_enable(base, 0);
if (status != kStatus_Success)
{
return status;
}
/* Enable quad mode. */
flashXfer.deviceAddress = 0;
flashXfer.port = FLASH_PORT;
flashXfer.cmdType = kFLEXSPI_Write;
flashXfer.SeqNumber = 1;
flashXfer.seqIndex = NOR_CMD_LUT_SEQ_IDX_WRITESTATUSREG;
flashXfer.data = &writeValue;
// flashXfer.dataSize = 1;
flashXfer.dataSize = 2;
status = FLEXSPI_TransferBlocking(base, &flashXfer);
if (status != kStatus_Success)
{
return status;
}
status = flexspi_nor_wait_bus_busy(base);
/* Do software reset. */
FLEXSPI_SoftwareReset(base);
#if defined(CACHE_MAINTAIN) && CACHE_MAINTAIN
flexspi_nor_enable_cache(cacheStatus);
#endif
return status;
}
@kerryzhou @michael_imxrt @IMXRT1050
Hi @sandeepc ,
You make things complicate, and refer to the wrong code for the internal flash.
Please refer to this code:
SDK_2_13_0_EVK-MIMXRT1064\boards\evkmimxrt1064\driver_examples\flexspi\nor_internal\polling_transfer
You can operate the internal flash directly, the internal flash is the winbond flash.
Please try it again.
If you can't find this project, please download the new SDK:
Wish it helps you!
Best Regards,
kerry
hi community update to my my quetion i had done modification by referring below links i compiled and its working but i didnt find ANY API TO READ THE DATA FROM FLASH if i get that api i can verify the data which have writeen
1) iam sharing my code below if any correction required please let me
2)where can i found the api reference manual for above mentioned functions
https://community.nxp.com/t5/i-MX-RT/RT1050-QSPI-flash-change-to-Winbond-W25Q32JV-3-3V/m-p/904534
https://community.nxp.com/t5/MCUXpresso-General/I-can-not-erase-QSPI-Flash-W25Q32JV/m-p/884895
after modification my code is below iam attaching my project please go through it and also iam attaching my file
status_t flexspi_nor_enable_quad_mode(FLEXSPI_Type *base)
{
flexspi_transfer_t flashXfer;
status_t status;
uint32_t writeValue =0x0200;// FLASH_QUAD_ENABLE;
#if defined(CACHE_MAINTAIN) && CACHE_MAINTAIN
flexspi_cache_status_t cacheStatus;
flexspi_nor_disable_cache(&cacheStatus);
#endif
/* Write enable */
status = flexspi_nor_write_enable(base, 0);
if (status != kStatus_Success)
{
return status;
}
/* Enable quad mode. */
flashXfer.deviceAddress = 0;
flashXfer.port = FLASH_PORT;
flashXfer.cmdType = kFLEXSPI_Write;
flashXfer.SeqNumber = 1;
flashXfer.seqIndex = NOR_CMD_LUT_SEQ_IDX_WRITESTATUSREG;
flashXfer.data = &writeValue;
// flashXfer.dataSize = 1;
flashXfer.dataSize = 2;
status = FLEXSPI_TransferBlocking(base, &flashXfer);
if (status != kStatus_Success)
{
return status;
}
status = flexspi_nor_wait_bus_busy(base);
/* Do software reset. */
FLEXSPI_SoftwareReset(base);
#if defined(CACHE_MAINTAIN) && CACHE_MAINTAIN
flexspi_nor_enable_cache(cacheStatus);
#endif
return status;
}
@kerryzhou @michael_imxrt @IMXRT1050