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.

MSPM0G3107: Register compatibility between all MSPM0 derivates?

Genius 12865 points
Part Number: MSPM0G3107
Other Parts Discussed in Thread: MSPM0L1105, , SYSCONFIG

Hello Team,

Are the peripherals in all MSPM0 families register compatible so when changing e.g. to a bigger package do I need to re-program my peripherals?

For example: is the UART (and all its sub-addresses) in MSPM0L1105 at the same place when switching to MSPM0G3107?

Or at least within one family (within e.g. MSPM0L)?

Thanks and Best Regards, Hans

  • Hi Hans,

    Are the peripherals in all MSPM0 families register compatible so when changing e.g. to a bigger package do I need to re-program my peripherals?

    If you are using the same part variant, but just in a different package, then no code changes should be required (beyond of course moving any functions from pins which may not be available in your new package). 

    If you are moving from a less featured, or smaller memory variant, to a more featured, or larger memory variant within the same family (G or L), no code changes should be required. 

    If you are moving to a smaller memory variant (i.e. from MSPM0Gxxx7 to MSPM0Gxxx5). I would recommend at least recompiling so that your programmer doesn't throw errors trying to write memory that doesn't exist. If you make direct flash or SRAM writes, you should also have hopefully coded in such a way that you do not try to access memory regions that are not available. 

    If you are moving to a less featured version of the part (i.e. from MSPM0G35xx to MSPM0G11xx), I would recommend removing any code which references peripherals that are no longer present (in this case the CAN-FD interface or the COMPs, OPAs, or DAC12). Attempting to use a peripheral on a device which doesn't have that peripheral will cause a hard fault due to invalid memory access.

    For example: is the UART (and all its sub-addresses) in MSPM0L1105 at the same place when switching to MSPM0G3107?

    Or at least within one family (within e.g. MSPM0L)?

    If you are moving between L to G, or G to L, you'll notice that all peripheral memories are located at the same place (i.e. ADC0 is at 0x40556000 for all MSPM0 devices), and where possible we maintain compatibility. However these peripherals feature sets do differ between device families, and there are quite a few differences in available peripherals between G and L, similar to the prior case, attempting to access TIMG4 on a G series device (where we have advanced timers instead of a 4th TIMG instance) will cause a hard fault. To simplify things in this case, I would recommend migrating your configuration code using SysConfig. Make sure you update your project settings, .ccxml, and include the correct linker file as well. 

    If you are just moving within the same family, then my earlier notes about available memory and features still apply, but the individual peripheral register maps will all be the same. 

    Let me know if you have any more questions on this. 

    Best Regards,
    Brandon Fisher