4.2.5 eNVM Command Register
The following table shows the Command register bit definitions.
Bit | Description |
---|---|
31:24 | Command code |
23:0 | Address 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.
Name | HADDR | HWDATA | Transaction Type | Description | ||
---|---|---|---|---|---|---|
18 | 17:0 | 31:24 | 23:0 | |||
Read Page | 0 | AA | X | X | Read | |
ProgramAd | 1 | ACMD | 05 | PGA | Write | Submit page address for programming. CMD[17:7] is considered as the eNVM address and CMD[6:0] is ignored. |
ProgramDa | 1 | ACMD | 06 | AAB | Write | Submit 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. |
ProgramStart | 1 | ACMD | 07 | X | Write | Start program NVM operation |
ProgramADS | 1 | ACMD | 08 | PGA | Write | Start whole program page procedure, includes sending page address, sending entire content of write data buffer to assembly buffer, then starting the NVM operation. |
VerifyAd | 1 | ACMD | 0D | PGA | Write | Submit page address for standalone verify. CMD[17:7] is taken as the eNVM address and CMD[6:0] is ignored. |
VerifyDa | 1 | ACMD | 0E | AAB | Write | Submit 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. |
VerifyStart | 1 | ACMD | 0F | X | Write | Start standalone verify NVM operation |
VerifyADS | 1 | ACMD | 10 | PGA | Write | Start whole standalone verify procedure; includes sending page address, sending entire content of write data buffer to assembly buffer, and then starting NVM operation. |
User Unlock | 13 | X | Write | Submit a User Unlock NVM command before Program NVM. |
- 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