33.1.13.4 Row Write Sequence
The largest block of data that can be programmed by a single NVMOP command is a row. As shown in Flash Module Construction, a row is 1024 bytes of data. ADDR is the row aligned address where the Flash address starts programming the data. The controller ignores the sub-row address bits and always starts programming at the beginning of a row.
A Row Write sequence comprises the following steps:
- Write the entire row of data to be programmed into the system SRAM. The source address must be Word aligned and secure/non-secure zone consistent with the transaction type.
- <Desired NVMOP> is Row Write.
- Follow the Start Sequencer from Start Sequencer.
- Wait for NVM Interrupt from Interrupts.
- Check the INTFLAG bits to ensure that the program sequence completed successfully, and then clear all bits in INTFLAG. See Errors and Flags regarding error flags.
A row of Flash can be programmed if its associated page is not write protection. For additional information, see Debug Access Level.
The data transferred from RAM is buffered within the FCW. The FCW fetches enough data Words to calculating ECC for each programming operation in the row.
The FCW automates programming the data into the Flash using contiguous Single Write operations. The data is double buffered, such that each programming sequence of four programming operations may execute while the next data are read from the internal system SRAM.
- The base address held in the SRCADDR register is not changed during the Row Write sequence.
- The DATAn registers may be affected by the Row Write sequence and cannot be guaranteed to hold prior data.
Row Write Timing
Row Write timing is dominated by setup (Tnvs + Tpgs), program time (Tprog), and recovery (Trcv) delays.
Row Write timing is dominated by setup (Tnvs + Tpgs), program time (Tprog), and recovery (Trcv) delays. Writes per row, n, are based on the number of rows per page and the size of a write:
- BytesPerRow = 1024
- BytesPerWrite = 4
- n = BytesPerRow/BytesPerWrite
Using the specifications shown in Non-Volatile Memory Controller (NVM) Electrical Specifications, the total time to program one row is roughly:
Row Write Time = Tnvs + Tpgs + n*Tprog + Trcv + Trw
If Pre-Programming, the first step adds roughly:
Row Write Time = n*Tpreprog + Tprepgh + Tprepgs
Row Write asserts programming voltage throughout the sequence to avoid duplicating setup and recovery delays.
Row Write and ECC
Row Write has the same restrictions as programming operations that support ECC.
