SLAU367P October 2012 – April 2020 MSP430FR5041 , MSP430FR5043 , MSP430FR50431 , MSP430FR5847 , MSP430FR58471 , MSP430FR5848 , MSP430FR5849 , MSP430FR5857 , MSP430FR5858 , MSP430FR5859 , MSP430FR5867 , MSP430FR58671 , MSP430FR5868 , MSP430FR5869 , MSP430FR5870 , MSP430FR5872 , MSP430FR58721 , MSP430FR5887 , MSP430FR5888 , MSP430FR5889 , MSP430FR58891 , MSP430FR5922 , MSP430FR59221 , MSP430FR5947 , MSP430FR59471 , MSP430FR5948 , MSP430FR5949 , MSP430FR5957 , MSP430FR5958 , MSP430FR5959 , MSP430FR5962 , MSP430FR5964 , MSP430FR5967 , MSP430FR5968 , MSP430FR5969 , MSP430FR5969-SP , MSP430FR59691 , MSP430FR5970 , MSP430FR5972 , MSP430FR59721 , MSP430FR5986 , MSP430FR5987 , MSP430FR5988 , MSP430FR5989 , MSP430FR5989-EP , MSP430FR59891 , MSP430FR5992 , MSP430FR5994 , MSP430FR59941 , MSP430FR6005 , MSP430FR6007 , MSP430FR6035 , MSP430FR6037 , MSP430FR60371 , MSP430FR6041 , MSP430FR6043 , MSP430FR60431 , MSP430FR6045 , MSP430FR6047 , MSP430FR60471 , MSP430FR6820 , MSP430FR6822 , MSP430FR68221 , MSP430FR6870 , MSP430FR6872 , MSP430FR68721 , MSP430FR6877 , MSP430FR6879 , MSP430FR68791 , MSP430FR6887 , MSP430FR6888 , MSP430FR6889 , MSP430FR68891 , MSP430FR6920 , MSP430FR6922 , MSP430FR69221 , MSP430FR6927 , MSP430FR69271 , MSP430FR6928 , MSP430FR6970 , MSP430FR6972 , MSP430FR69721 , MSP430FR6977 , MSP430FR6979 , MSP430FR69791 , MSP430FR6987 , MSP430FR6988 , MSP430FR6989 , MSP430FR69891
Section 9.2.1 describes the procedure of setting borders for segmentation of the main memory. This section describes how the values in MPUSEGBx[15:0] and MPUIPSEGBx[15:0] bits need to be set to achieve the desired borders for different memory sizes. The bits of the MUSBx[15:0] bits represent the 16 most significant bits of the border address that can be selected.
The setting of the MPUSEGBx[15:0] bits forms a border between two segments of main memory space. For the following examples, the segment with the higher address range formed by this border is called the higher segment. The segment with the lower address range is called the lower segment.
The lowest address in the higher segment can be calculated with the following formula:
Given:
Segment Border Address (BA) or register value MPUSEGBx
Hence follows:
MPUSEGBx = (BA) >> 4
BA = (MPUSEGBx << 4)
Examples:
Segment border address = 0x0F000 → MPUSEGBx = (0x0F000 >> 4) = 0x0F00
Segment border address = 0x13000 → MPUSEGBx = (0x13000 >> 4) = 0x1300
MPUSEGBx = 0x1100 → segment border address = (0x1100 << 4) = 0x11000
Border Address | MPUSEGBx[15:0] |
---|---|
(outside) | 0000h |
⋮ | ⋮ |
(outside) | 03C0h |
04000h | 0400h |
04400h | 0440h |
04800h | 0480h |
04C00h | 04C0h |
05000h | 0500h |
⋮ | ⋮ |
0F000h | 0F00h |
0F400h | 0F40h |
0F800h | 0F80h |
0FC00h | 0FC0h |
10000h | 1000h |
10400h | 1040h |
⋮ | ⋮ |
13000h | 1300h |
13400h | 1340h |
13800h | 1380h |
13C00h | 13C0h |
14000h (top of memory ) | 1400h |
(outside) | 1440h |
⋮ | ⋮ |
(outside) | 3F80h |
(outside) | 3FC0h |
NOTE
Depending on the memory size settings for MPUSEGBx[4:0], the calculation may result in a lower address space than is available. For those settings, a lower segment does not exist, and the higher segment starts with the first available memory address (see memory organization in device-specific data sheet).