This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430FR6989: MSP430FR6989: About the FRAM writting

Part Number: MSP430FR6989

Hello 

I set  to divide the segments by setting addresses in MPUSEGB 1 and 2.

It was written to FRAM to set MPUSAM.

However, even if MPUSEGxWE of MPUSAM is prohibited to write, it writes.

Program Example

#pragma LOCATION (Udata,0x4400)

int Udata [32][8]={
{0},
{0},
{0},};

int main(void)

MPUCTL0 = MPUPW;
MPUSEGB1 = 0x1000; 
MPUSEGB2 = 0x1A00;

MPUSAM = MPUSEG1RE | MPUSEG1XE |MPUSEG1WE|
MPUSEG2RE | MPUSEG2XE |MPUSEG2WE|
MPUSEG3RE | MPUSEG3XE |MPUSEG3WE|
MPUSEGIRE | MPUSEGIWE| MPUSEGIXE;

for(i=0;i<32;i++){

    for(j=0;j<8;j++){

        Udata [i][j] = i;

            if(j==8){

                j=0;

    }

}

}

MPUSAM &= ~MPUSEG1XE;
MPUSAM &= ~MPUSEG1WE;
MPUSAM &= ~MPUSEG2XE;
MPUSAM &= ~MPUSEG2WE;

for(i=0;i<32;i++){

    for(j=0;j<8;j++){

        Udata [i][j] = i+j+0x1000;

            if(j==8){

                j=0;

    }

}

}

In this program I think that 0 will be written from 0x4400, but the value after prohibition will be written.

I confirmed that writing with MPUSAM is prohibited.

Regards.

**Attention** This is a public forum