I am using the MIMXRT1050 with QSPI flash on Keilv5 IDE. My QSPI flash manual:
I am using the flexspi_nor_polling_transfer project from the Keilv5 MDK as a base project to test code to program and erase the QSPI flash.
I have found that this flash can only be erased in sectors(4kB), blocks(64kB), or the entire flash. The flash is also programed through pages(256B) using boundaries. If the data being sent to the flash is greater than 256 bytes or doesn't start on a boundary, the data will wrap around the start of the boundary and continue programming until the programming is complete.
1) If I want to program a page which was programmed before, do I have to erase the entire sector in which the page is located then program my desired page?
2) Can I program a partial page then go back and program the rest of the page without erasing or changing the pages previous data?
3) If I only want to change 1 byte of data on a page which is already programmed and leave the rest of the page the same, what is the best way to do so?
4) From the manual, "In some cases, less than 256 bytes (a partial page) can be programmed without having any effect on other bytes within the same page. One condition to perform a partial page program is that the number of clocks cannot exceed the remaining page length." Does this mean I don’t have to erase a whole sector just to change the contents of one page? What are the cases?
Any help is appreciated, thanks.