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
The ULPCLK is the bus clock for peripherals in the PD0 power domain. It supports operation up to 40 MHz and is derived directly from the MCLK tree through a clock divider (UDIV) which is enabled only when MCLK is sourced from a high-speed clock (SYSPLL, HFXT, or HFCLK_IN). The ULPCLK frequency is dependent on the MCLK configuration and the selected power mode.
The PD0 power domain has a frequency limit of 40 MHz in RUN and SLEEP modes. As such, ULPCLK must be maintained to be ≤40MHz at all times. When MCLK is configured to run from SYSOSC or LFCLK, SYSCTL disables UDIV automatically and fULPCLK=fMCLK as these clock sources are always ≤32 MHz.
However, when MCLK is configured to run from a high-speed clock (SYSPLL, HFXT, or HFCLK_IN), hardware cannot ensure that ULPCLK is ≤40 MHz because SYSCTL does not have knowledge of the MCLK frequency. In this case it is the responsibility of the application software to ensure that ULPCLK is ≤40 MHz in RUN and SLEEP modes by configuring UDIV appropriately. By default, the ULPCLK divider is set to divide-by-2 (MCLKCFG.UDIV==0x1) which provides safe operation up to the max MCLK frequency (80 MHz). If MCLK is configured to be ≤40 MHz, the ULPCLK speed is set equal to the MCLK speed by changing MCLKCFG.UDIV from 0x01 to 0x0 (divide-by-1). When UDIV==0x0, MCLK==ULPCLK and accesses to PD0 peripherals do not incur additional latency.
SYSCTL automatically disables UDIV in STOP and STANDBY modes.
Selected Power Mode | Configuration | Register Settings | ULPCLK Frequency |
---|---|---|---|
RUN or SLEEP (40 MHz maximum) | MCLK source is SYSOSC (RUN0, SLEEP0) | MCLKCFG.USEHSCLK=0x0, MCLKCFG.USELFCLK=0x0 | ULPCLK is sourced from MCLK according to the MCLK configuration with fULPCLK = fMCLK |
MCLK source is HSCLK (SYSPLL, HFXT, or HFCLK_IN) (RUN0, SLEEP0) | MCLKCFG.USEHSCLK=0x1, MCLKCFG.USELFCLK=0x0 | ULPCLK is sourced from MCLK according to the MCLK configuration with fULPCLK = fMCLK/UDIV | |
MCLK source is LFCLK (RUN1/2, SLEEP1/2) | MCLKCFG.USELFCLK=0x1 or SYSOSCCFG.DISABLE=0x1 | ULPCLK is sourced from LFCLK with fULPCLK = fLFCLK = 32 kHz | |
STOP (4 MHz maximum) | STOP with SYSOSC enabled (STOP0/1) | SYSOSCCFG.DISABLESTOP = 0x0 | ULPCLK is sourced from SYSOSC with fULPCLK = 4 MHz |
STOP with SYSOSC disabled (STOP2) | SYSOSCCFG.DISABLESTOP = 0x1 | ULPCLK is sourced from LFCLK with fULPCLK = fLFCLK = 32 kHz | |
STANDBY (32 kHz maximum) | STANDBY with ULPCLK and LFCLK enabled (STANDBY0) | MCLKCFG.STOPCLKSTBY=0x0 | ULPCLK is sourced from LFCLK with fULPCLK = fLFCLK = 32 kHz |
STANDBY with ULPCLK and LFCLK disabled (STANDBY1) | MCLKCFG.STOPCLKSTBY=0x1 | ULPCLK is disabled to all peripherals except TIMG0 and TIMG1, which receive fULPCLK = fLFCLK = 32 kHz | |
SHUTDOWN (Off) | - | - | ULPCLK is off |