4.2.5 eNVM Command Register

The following table shows the Command register bit definitions.

Table 4-5. Command (CMD) Register
BitDescription
31:24Command code
23:0Address field; to supply address for NVM operation, refer to Table 4-6.

The Command register is located at offset 0x148 in the Control register. Refer to Table 4-6 for more information. By writing to CMD when HADDR[18:0] = 0×148, any eNVM operation may be invoked. The eNVM goes into a busy state and HREADY is set High until it finishes the write operation. Any further invoking of the eNVM operation will cause HREADY to go Low until it finishes the previous operation.

Before using the eNVM read command, ensure to check the ready bit of the ENVM_SR register. The value 0 of the ready bit indicates that the eNVM controller is not busy. To execute eNVM reads/writes via FIC, ensure that the HREADY signal is LOW.

The following steps describe when to write to the Command Register, decoding of commands and command execution.

  • The command register should only be written when the NVM is non-busy (Status Register bit 0). Refer to Table 4-21 for the Status Register definitions
  • If the Command register is written when the NVM is still busy from a previous command then the logic will prevent the new command and all future commands, the access_denied bit in the STATUS register will be set. To recover from this state, 1 should be written to bit 1 in the Table 4-25 register to clear the access_denied bit. This mechanism is used to detect the improper NVM command sequences and protect the NVM data until the firmware recovers.
  • When the AHBL triggers a write transaction with HADDR[18:0] = 0×148, HWDATA is treated as a command (CMD).
  • CMD[31:24] will be decoded as the eNVM operation, as mentioned in Figure 4-4.
  • The value from CMD[23:3] will be decoded as the NVM array address for the eNVM operation. Depending on the command code, some LSB bits of CMD[23:0] will be ignored. For example, to submit a program address, only the page address CMD[17:7] is significant. Therefore CMD[17:7] is taken as the NVM address and CMD[6:0] is ignored. Refer to Table 4-6 for more information.

For masters, which are only capable of byte access, four cycles of write may be needed to fill the Command (CMD) register, by writing to 0×14b, 0×14a, 0×149, and 0×148.

Table 4-6. Command Table
NameHADDRHWDATATransaction TypeDescription
1817:031:2423:0
Read Page0AAXXRead
ProgramAd1ACMD05PGAWriteSubmit page address for programming. CMD[17:7] is considered as the eNVM address and CMD[6:0] is ignored.
ProgramDa1ACMD06AABWriteSubmit data to assembly buffer for programming, up to 16 dwords can be written to the assembly buffer as specified by DWSIZE. ProgramDa must be preceded by ProgramAd. CMD[17:7] is considered as the eNVM address and CMD[6:0] is ignored.
ProgramStart1ACMD07XWriteStart program NVM operation
ProgramADS1ACMD08PGAWriteStart whole program page procedure, includes sending page address, sending entire content of write data buffer to assembly buffer, then starting the NVM operation.
VerifyAd1ACMD0DPGAWriteSubmit page address for standalone verify. CMD[17:7] is taken as the eNVM address and CMD[6:0] is ignored.
VerifyDa1ACMD0EAABWriteSubmit data to assembly buffer for standalone verify. Up to 16 dwords can be written to the assembly buffer, as specified by DWSIZE. VerifyDa must be proceeded by the VerifyAd. CMD[6:3] is taken as the starting double word address and CMD[23:7] is ignored.
VerifyStart1ACMD0FXWriteStart standalone verify NVM operation
VerifyADS1ACMD10PGAWriteStart whole standalone verify procedure; includes sending page address, sending entire content of write data buffer to assembly buffer, and then starting NVM operation.
User Unlock13XWriteSubmit a User Unlock NVM command before Program NVM.
Note:
  • AA = NVM Array address. Refer to Table 4-1.
  • AAB = Address of assembly buffer. Refer to Table 4-20 for address values.
  • ACMD = Address of CMD register. The Command register is located at offset 0x148 in the Control register. Refer to Table 4-20 for more information.
  • PGA = Page address
  • SEA = Sector address
  • X = Not used