SLAU846A June 2023 – October 2023 MSPM0G1105 , MSPM0G1106 , MSPM0G1107 , MSPM0G1505 , MSPM0G1506 , MSPM0G1507 , MSPM0G3105 , MSPM0G3105-Q1 , MSPM0G3106 , MSPM0G3106-Q1 , MSPM0G3107 , MSPM0G3107-Q1 , MSPM0G3505 , MSPM0G3505-Q1 , MSPM0G3506 , MSPM0G3506-Q1 , MSPM0G3507 , MSPM0G3507-Q1
For devices that support 2-, 4-, or 8-word programming, there are two options for loading data to be programmed: direct mode or indexed mode. The programmer must select the mode that is most suitable to the application requirements.
Additional alignment rules apply when loading data into the CMDDATAx and CMDECCx registers on devices that support multiword programming, even if the multiword programming feature is not used and only single word programming is not used.
Direct Data Load
To configure a program operation with direct data loading, the target data is loaded into the appropriate CMDDATAx registers based on the number of flash words supported by the device, the target address alignment, and the target data size. For example, if a 4-word program operation is to be initiated on a device supporting 4-word programming, the CMDDATA0-CMDDATA7 registers would be populated with the target data. If ECC is being specified directly (rather than automatically calculated by the flash controller) then the appropriate CMDECCx registers also needs to be populated with the ECC values for each data word being programmed.
Indexed Data Load
Rather than buffering data into all the CMDDATAx registers individually, it is possible to use only the CMDDATA0-CMDDATA1 registers in combination with an index register (CMDDATAINDEX) to indicate the flash word offset of the data being loaded. In this way, the index can be adjusted for each word loaded, and each target data word can be written to the same 64-bit space (CMDDATA0-CMDDATA1). When an index is applied, the loaded data will be mapped by the hardware into the appropriate CMDDATAx register. For example, if a 4-word program operation is to be initiated on a device supporting 4-word programming, the CMDDATA1:0 registers are loaded 4 times with the target data, with CMDDATAINDEX being incremented by one before each new word is loaded into CMDDATA1:0.
Alignment Rules
The alignment rules for each device configuration (2, 4, or 8 words) is given in the tables below with guidance on how target data must be placed with the CMDDATAx, CMDECCx, and CMDDATAINDEX registers for 1, 2, 4, or 8 word programming operations.
Direct Load Registers | Indexed Load Index |
1 Word Aligned to 0b000 |
2 Words Aligned to 0b0000 |
4 Words Aligned to 0b0.0000 |
8 Words Aligned to 0b00.0000 |
---|---|---|---|---|---|
CMDDATA1:0 / CMDECC0 | CMDINDEX = 0 | Target data word 0 if the target address ends in 0b0000 | Target data word 0 | Not supported | Not supported |
CMDDATA3:2 / CMDECC1 | CMDINDEX = 1 | Target data word 0 if the target address ends in 0b1000 | Target data word 1 |
Direct Load Registers | Indexed Load Index |
1 Word Aligned to 0b000 |
2 Words Aligned to 0b0000 |
4 Words Aligned to 0b0.0000 |
8 Words Aligned to 0b00.0000 |
---|---|---|---|---|---|
CMDDATA1:0 / CMDECC0 | CMDINDEX= 0 | Target data word 0 if the target address ends in 0b0.0000 | Target data word 0 if the target address ends in 0b0.0000 | Target data word 0 | Not supported |
CMDDATA3:2 / CMDECC1 | CMDINDEX= 1 | Target data word 0 if the target address ends in 0b0.1000 | Target data word 1 if the target address ends in 0b0.0000 | Target data word 1 | |
CMDDATA5:4 / CMDECC2 | CMDINDEX= 2 | Target data word 0 if the target address ends in 0b1.0000 | Target data word 0 if the target address ends in 0b1.0000 | Target data word 2 | |
CMDDATA7:6 / CMDECC3 | CMDINDEX= 3 | Target data word 0 if the target address ends in 0b1.1000 | Target data word 1 if the target address ends in 0b1.0000 | Target data word 3 |
Direct Load Registers | Indexed Load Index | 1 Word Aligned to 0b000 | 2 Words Aligned to 0b0000 | 4 Words Aligned to 0b0.0000 | 8 Words Aligned to 0b00.0000 |
---|---|---|---|---|---|
CMDDATA1:0 / CMDECC0 | CMDINDEX = 0 | Target data word 0 if the target address ends in 0b00.0000 | Target data word 0 if the target address ends in 0b00.0000 | Target data word 0 if the target address ends in 0b00.0000 | Target data word 0 |
CMDDATA3:2 / CMDECC1 | CMDINDEX = 1 | Target data word 0 if the target address ends in 0b00.1000 | Target data word 1 if the target address ends in 0b00.0000 | Target data word 1 if the target address ends in 0b00.0000 | Target data word 1 |
CMDDATA5:4 / CMDECC2 | CMDINDEX = 2 | Target data word 0 if the target address ends in 0b01.0000 | Target data word 0 if the target address ends in 0b01.0000 | Target data word 2 if the target address ends in 0b00.0000 | Target data word 2 |
CMDDATA7:6 / CMDECC3 | CMDINDEX = 3 | Target data word 0 if the target address ends in 0b01.1000 | Target data word 1 if the target address ends in 0b01.0000 | Target data word 3 if the target address ends in 0b00.0000 | Target data word 3 |
CMDDATA9:8 / CMDECC4 | CMDINDEX = 4 | Target data word 0 if the target address ends in 0b10.0000 | Target data word 0 if the target address ends in 0b10.0000 | Target data word 0 if the target address ends in 0b10.0000 | Target data word 4 |
CMDDATA11:10 / CMDECC5 | CMDINDEX = 5 | Target data word 0 if the target address ends in 0b10.1000 | Target data word 1 if the target address ends in 0b10.0000 | Target data word 1 if the target address ends in 0b10.0000 | Target data word 5 |
CMDDATA13:12 / CMDECC6 | CMDINDEX = 6 | Target data word 0 if the target address ends in 0b11.0000 | Target data word 0 if the target address ends in 0b11.0000 | Target data word 2 if the target address ends in 0b10.0000 | Target data word 6 |
CMDDATA15:14 / CMDECC7 | CMDINDEX = 7 | Target data word 0 if the target address ends in 0b11.1000 | Target data word 1 if the target address ends in 0b11.0000 | Target data word 3 if the target address ends in 0b10.0000 | Target data word 7 |