30.2.15.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:

  1. Write the entire row of data to be programmed into system SRAM. The source address must be word aligned and secure/non-secure zone consistent with the transaction type.
  2. <Desired NVMOP> is Row Write.
  3. Follow the Start Sequencer from Start Sequencer.
  4. Wait for NVM Interrupt from Interrupts.
  5. Check the INTFLAG bits to ensure that the program sequence completed successfully, and then clear all bits in INTFLAG. See Errors and Flags about error flags.
  6. Unlock the hardware write mutex by setting the LOCK bit to ‘0’ and the OWNER field to ‘00’ simultaneously to the MUTEX register.

A row of Flash can be programmed if its associated page is not write protection see Debug Access Level.

The data transferred from RAM is buffered within the FCW. All data values must be in place before the ECC can be derived and the programming operation can start.

The FCW automates programming the data into the Flash using four 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.

Note:
  1. The base address held in the SRCADDR register is not changed during the Row Write sequence.
  2. The DATAx, x = 0,1,…,7, registers are not used by the Row Write sequence., since the data is read from internal system SRAM.

Row Write Timing

Row Write timing is dominated by setup (Tnvs + Tpgs), program time (Tprog) and recovery (Trcv) delays.

The number of writes needed per row, n, is 128. So, 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

Since Row Write uses multiple Quad Writes to update a row, it has the same features and restrictions as Quad Write.