SLVSE83B December 2020 – September 2023 TPS6593-Q1
PRODUCTION DATA
The configuration memory is loaded from NVM into an SRAM. Figure 8-38 shows an example configuration memory with only two configured sequences.
As soon as the PMIC state reaches the mission states, it starts reading from the configuration memory until it hits the first END command. Setting up the triggers (1-28) must be the first section of the configuration memory, as well as the first set of trigger configurations. The trigger configurations are read and mapped to an internal lookup table that contains the starting address associated with each trigger in the configuration memory. If the trigger destination is an FFSM state then the address contains the fixed state value. After the trigger configurations are read and mapped into the SRAM, these triggers control the execution flow of the state transitions. The signal source of each trigger is listed under Table 8-15.
When a trigger or multiple triggers are activated, the PFSM execution engine looks up the starting address associated with the highest priority unmasked trigger, and starts executing commands until it hits an END command. The last commands before END statement is generally the TRIG_MASK command, which directs the PFSM to a new set of unmasked trigger configurations, and the trigger with the highest priority in the new set is serviced next. Trigger priority is determined by the Trigger ID associated with each trigger. The priority of the trigger decreases as the associated trigger ID increases. As a result, the critical error triggers are usually located at the lowest trigger IDs.
The TRIG_SET commands specify if a trigger is immediate or non-immediate. Immediate triggers are serviced immediately, which involves branching from the current sequence of commands to reach a new target destination. The non-immediate triggers are accumulated and serviced in the order of priority through the execution of each given sequence until the END command in reached. Therefore, the trigger ID assignment for each trigger can be arranged to produce the desired PFSM behavior.
The TRIG_MASK command determines which triggers are active at the end of each sequence, and is usually placed just before the END instruction. The TRIG_MASK takes a 28-bit input to allow any combination of triggers to be enabled with a single command. Through the definition of the active triggers after each sequence execution the TRIG_MASK command can be conceptualized as establishing a power state.
The above sequence of waiting for triggers and executing the sequence associated with an activated trigger is the normal operating condition of the PFSM execution engine when the PMIC is in the MISSION state. The fixed device power FSM takes over control from the execution engine each time an event occurs that requires a transition from the MISSION state of the PMIC to a fixed device state.
Trigger Name | Trigger Source |
---|---|
IMMEDIATE_SHUTDOWN | An error event causes one of the triggers defined in the FSM_TRIG_SEL_1/2 register to activate, and the intended action for the activated trigger is to immediate shutdown the device. |
MCU_POWER_ERROR | Output failure detection from a regulator which is assigned to the MCU rail group (x_GRP_SEL = '01'). |
ORDERLY_SHUTDOWN | An event which causes MODERATE_ERR_INT = '1'. |
FORCE_STANDBY | nPWRON long-press event when NPOWRON_SEL = '01', or ENABLE = '0' when NPOWERON_SEL = '00'. |
SPMI_WD_BIST_DONE | Completion of SPMI WatchDog BIST. |
ESM_MCU_ERROR | An event that causes ESM_MCU_RST_INT. |
WD_ERROR | An event that causes WD_RST_INT. |
SOC_POWER_ERROR | Output failure detection from a regulator which is assigned to the SOC rail group (x_GRP_SEL = '10'). |
ESM_SOC_ERROR | An event that causes ESM_SOC_RST_INT |
A | NSLEEP2 and NSLEEP1 = '11'. . More information regarding the NSLEEP1 and NSLEEP2 functions can be found under Section 8.4.1.2.4.3. |
WKUP1 | A rising or falling edge detection on a GPIO pin that is configured as WKUP1 or LP_WKUP1. |
SU_ACTIVE | A valid On-Request detection when STARTUP_DEST = '11'. |
B | NSLEEP2 and NSLEEP1 = '10'. . More information regarding the NSLEEP1 and NSLEEP2 functions can be found under Section 8.4.1.2.4.3. |
WKUP2 | A rising or falling edge detection on a GPIO pin that is configured as WKUP2 or LP_WKUP2. |
SU_MCU_ONLY | A valid On-Request detection when STARTUP_DEST = '10'. |
C | NSLEEP2 and NSLEEP1 = '01'. More information regarding the NSLEEP1 and NSLEEP2 functions can be found under Section 8.4.1.2.4.3. |
D | NSLEEP2 and NSLEEP1 = '00'. More information regarding the NSLEEP1 and NSLEEP2 functions can be found under Section 8.4.1.2.4.3. |
SU_STANDBY | A valid On-Request detection when STARTUP_DEST = '00'. |
SU_X | A valid On-Request detection when STARTUP_DEST = '01'. |
WAIT_TIMEOUT | PFSM WAIT command condition timed out. More information regarding the WAIT command can be found under Section 8.4.1.2.1.11. |
GPIO1 | Input detection at GPIO1 pin. Only processed as trigger if GPIO1 is configured as GPIO. |
GPIO2 | Input detection at GPIO2 pin. Only processed as trigger if GPIO2 is configured as GPIO. |
GPIO3 | Input detection at GPIO3 pin. Only processed as trigger if GPIO3 is configured as GPIO. |
GPIO4 | Input detection at GPIO4 pin. Only processed as trigger if GPIO4 is configured as GPIO. |
GPIO5 | Input detection at GPIO5 pin. Only processed as trigger if GPIO5 is configured as GPIO. |
GPIO6 | Input detection at GPIO6 pin. Only processed as trigger if GPIO6 is configured as GPIO. |
GPIO7 | Input detection at GPIO7 pin. Only processed as trigger if GPIO7 is configured as GPIO. |
GPIO8 | Input detection at GPIO8 pin. Only processed as trigger if GPIO8 is configured as GPIO. |
GPIO9 | Input detection at GPIO9 pin. Only processed as trigger if GPIO9 is configured as GPIO. |
GPIO10 | Input detection at GPIO10 pin. Only processed as trigger if GPIO10 is configured as GPIO. |
GPIO11 | Input detection at GPIO11 pin. Only processed as trigger if GPIO11 is configured as GPIO. |
I2C_0 | Input detection of TRIGGER_I2C_0 bit (in register FSM_I2C_TRIGGERS) |
I2C_1 | Input detection of TRIGGER_I2C_1 bit (in register FSM_I2C_TRIGGERS) |
I2C_2 | Input detection of TRIGGER_I2C_2 bit (in register FSM_I2C_TRIGGERS) |
I2C_3 | Input detection of TRIGGER_I2C_3 bit (in register FSM_I2C_TRIGGERS) |
I2C_4 | Input detection of TRIGGER_I2C_4 bit (in register FSM_I2C_TRIGGERS) |
I2C_5 | Input detection of TRIGGER_I2C_5 bit (in register FSM_I2C_TRIGGERS) |
I2C_6 | Input detection of TRIGGER_I2C_6 bit (in register FSM_I2C_TRIGGERS) |
I2C_7 | Input detection of TRIGGER_I2C_7 bit (in register FSM_I2C_TRIGGERS) |
SREG0_0 | Input detection of bit 0 in PFSM storage register R0 |
SREG0_1 | Input detection of bit 1 in PFSM storage register R0 |
SREG0_2 | Input detection of bit 2 in PFSM storage register R0 |
SREG0_3 | Input detection of bit 3 in PFSM storage register R0 |
SREG0_4 | Input detection of bit 4 in PFSM storage register R0 |
SREG0_5 | Input detection of bit 5 in PFSM storage register R0 |
SREG0_6 | Input detection of bit 6 in PFSM storage register R0 |
SREG0_7 | Input detection of bit 7 in PFSM storage register R0 |
0 | Always '0' |
1 | Always '1' |