Part Number: MSPM0L1117
Other Parts Discussed in Thread: , 4428
Hello,
I am currently working on a proof-of-concept device and have encountered unexpected behavior that I do not fully understand. At this stage, I am using the LP-MSPM0L1117 LaunchPad, as it is sufficient to evaluate whether the MCU meets my requirements.
My primary goals are achieving the lowest possible power consumption on the MSPM0L1117 while maintaining accurate time measurements. To minimize power usage, the device enters Standby1 mode. According to the documentation, TimerG0 is available in this mode, so I am using it as the time base.
To reduce BOM cost, the timer is clocked from the internal LFOSC rather than an external LFXT. I ported timing-related code from another MCU that has been used successfully on devices from multiple manufacturers. However, on the MSPM0L1117, the behavior is inconsistent.
After further investigation, I isolated a minimal example that demonstrates the issue. TimerG0 is configured with an overflow interrupt at 0xFFFF and runs at the full LFOSC frequency (~32 kHz), while the device remains in Run mode (i.e. without entering Standby1). In the interrupt service routine, I toggle a GPIO pin and monitor the pin using a Saleae logic analyzer.
The expected period between GPIO toggles is approximately 2 seconds. In practice, however, the interval varies by up to 900 µs. I have not observed this type of behavior on MCUs from other manufacturers that I have worked with.
I understand that the LFOSC accuracy is specified at approximately ±3%, so I do not expect the period to be exactly 2 seconds. However, I do not understand why the interrupt does not occur at a constant period. When I route the LFOSC clock to an output pin and measure it, the frequency appears stable at approximately 33 kHz.
When I switch to the external crystal oscillator available on the LaunchPad, the interrupt period becomes stable and highly precise, with a maximum variation of about 30 µs, which is acceptable and expected.
Is there anything I might be missing regarding the use of LFOSC with TimerG0, particularly with respect to clock stability, synchronization, or low-power modes? Are there any known limitations or configuration details that could explain this behavior, or any recommended methods to achieve more stable timing when using LFOSC?


