1 Reply Latest reply on Apr 24, 2019 2:39 AM by SudheeshK_26

    SPI NOR S25FS128S - S25FS256S - S25FS512S Page programming with data greater than buffer size


      I have a question regarding page programming when the data, sent along with PP command, exceeds the buffer size.


      Here is the text from Cypress specification:

      If more data is sent to the device than the space between the starting address and the page aligned end boundary, the data loading

      sequence will wrap from the last byte in the page to the zero byte location of the same page and begin overwriting any data

      in the page. The last page worth of data is programmed in the page. This is a result of the device being equipped

      with a page program buffer that is only page size in length. If less than a page of data is sent to the device, these data bytes will be

      programmed in sequence, starting at the provided address within the page, without having any affect on the other bytes of the same



      Let’s assume:

      The buffer size is 256 bytes

      Address is 0x0

      Data received are 258 bytes (byte 0 is 0x00,     byte 1 is 0x01,      byte 2 is 0x02, ……..           byte 255 is 0xFF,       byte 256 is 0xAA,        byte 257 is 0xBB)


      After the receiving 256 bytes, the page buffer will contain: 0x00, 0x01, 0x02, ………, 0xFF

      The new data (exceeding 256 bytes will overwrite the first byte): so the page buffer will contain at the end: 0xAA, 0xBB, 0x02, ………. 0xFF.


      Now what data do you expect to be written to the memory?

      Option A:        Last 256 received bytes will be written to memory starting from the given program address which is 0x0 in this example

      @address 0x0  à 0x02

      @address 0x1  à 0x03

      @address 0x2  à 0x04



      @address 0xFE  à 0xAA

      @address0xFF à 0xBB



      Option B:  The page program buffer is written to the corresponding memory’s page (page 0 in this example)

      @address 0x0  à 0xAA

      @address 0x1  à 0xBB

      @address 0x2  à 0x02


      @address 0xFE  à 0xFE

      @address0xFF à 0xFF