Synergy Software Package User's Manual

Driver for Low Power Modes. More...

Modules

 Build Time Configurations
 

Data Structures

struct  lpmv2_mcu_cfg_t
 

Enumerations

enum  lpmv2_snooze_request_t { ,
  LPMV2_SNOOZE_REQUEST_ACMPLP = 0x00800000U , LPMV2_SNOOZE_REQUEST_RXD0_FALLING = 0x00000000U, LPMV2_SNOOZE_REQUEST_IRQ0 = 0x00000001U, LPMV2_SNOOZE_REQUEST_IRQ1 = 0x00000002U,
  LPMV2_SNOOZE_REQUEST_IRQ2 = 0x00000004U, LPMV2_SNOOZE_REQUEST_IRQ3 = 0x00000008U, LPMV2_SNOOZE_REQUEST_IRQ4 = 0x00000010U, LPMV2_SNOOZE_REQUEST_IRQ5 = 0x00000020U,
  LPMV2_SNOOZE_REQUEST_IRQ6 = 0x00000040U, LPMV2_SNOOZE_REQUEST_IRQ7 = 0x00000080U, LPMV2_SNOOZE_REQUEST_IRQ8 = 0x00000100U, LPMV2_SNOOZE_REQUEST_IRQ9 = 0x00000200U,
  LPMV2_SNOOZE_REQUEST_IRQ10 = 0x00000400U, LPMV2_SNOOZE_REQUEST_IRQ11 = 0x00000800U, LPMV2_SNOOZE_REQUEST_IRQ12 = 0x00001000U, LPMV2_SNOOZE_REQUEST_IRQ13 = 0x00002000U,
  LPMV2_SNOOZE_REQUEST_IRQ14 = 0x00004000U, LPMV2_SNOOZE_REQUEST_IRQ15 = 0x00008000U, LPMV2_SNOOZE_REQUEST_KEY = 0x00020000U, LPMV2_SNOOZE_REQUEST_ACMPHS0 = 0x00400000U,
  LPMV2_SNOOZE_REQUEST_RTC_ALARM = 0x01000000U, LPMV2_SNOOZE_REQUEST_RTC_PERIOD = 0x02000000U, LPMV2_SNOOZE_REQUEST_AGT1_UNDERFLOW = 0x10000000U, LPMV2_SNOOZE_REQUEST_AGT1_COMPARE_A = 0x20000000U,
  LPMV2_SNOOZE_REQUEST_AGT1_COMPARE_B = 0x40000000U
}
 
enum  lpmv2_snooze_end_t { ,
  LPMV2_SNOOZE_END_SCI0_ADDRESS_MISMATCH = 0x80U , LPMV2_SNOOZE_END_STANDBY_WAKE_SOURCES = 0x00U, LPMV2_SNOOZE_END_AGT1_UNDERFLOW = 0x01U, LPMV2_SNOOZE_END_DTC_TRANS_COMPLETE = 0x02U,
  LPMV2_SNOOZE_END_DTC_TRANS_COMPLETE_NEGATED = 0x04U, LPMV2_SNOOZE_END_ADC0_COMPARE_MATCH = 0x08U, LPMV2_SNOOZE_END_ADC0_COMPARE_MISMATCH = 0x10U, LPMV2_SNOOZE_END_ADC1_COMPARE_MATCH = 0x20U,
  LPMV2_SNOOZE_END_ADC1_COMPARE_MISMATCH = 0x40U, LPMV2_SNOOZE_END_SCI0_ADDRESS_MATCH = 0x80U
}
 
enum  lpmv2_snooze_cancel_t { ,
  LPMV2_SNOOZE_CANCEL_SOURCE_ADC0_WCMPM = (79), LPMV2_SNOOZE_CANCEL_SOURCE_ADC0_WCMPUM = (80), LPMV2_SNOOZE_CANCEL_SOURCE_ADC1_WCMPM = (85), LPMV2_SNOOZE_CANCEL_SOURCE_ADC1_WCMPUM = (86),
  LPMV2_SNOOZE_CANCEL_SOURCE_SCI0_AM = (376), LPMV2_SNOOZE_CANCEL_SOURCE_SCI0_RXI_OR_ERI = (377), LPMV2_SNOOZE_CANCEL_SOURCE_DTC_COMPLETE = (41), LPMV2_SNOOZE_CANCEL_SOURCE_DOC_DOPCI = (134),
  LPMV2_SNOOZE_CANCEL_SOURCE_CTSU_CTSUFN = (18)
}
 
enum  lpmv2_snooze_dtc_t { , LPMV2_SNOOZE_DTC_DISABLE = 0U, LPMV2_SNOOZE_DTC_ENABLE = 1U }
 
enum  lpmv2_standby_wake_source_t { ,
  LPMV2_STANDBY_WAKE_SOURCE_ACMPLP0 = 0x00800000U , LPMV2_STANDBY_WAKE_SOURCE_VBATT = 0x00100000U , LPMV2_STANDBY_WAKE_SOURCE_IRQ0 = 0x00000001U, LPMV2_STANDBY_WAKE_SOURCE_IRQ1 = 0x00000002U,
  LPMV2_STANDBY_WAKE_SOURCE_IRQ2 = 0x00000004U, LPMV2_STANDBY_WAKE_SOURCE_IRQ3 = 0x00000008U, LPMV2_STANDBY_WAKE_SOURCE_IRQ4 = 0x00000010U, LPMV2_STANDBY_WAKE_SOURCE_IRQ5 = 0x00000020U,
  LPMV2_STANDBY_WAKE_SOURCE_IRQ6 = 0x00000040U, LPMV2_STANDBY_WAKE_SOURCE_IRQ7 = 0x00000080U, LPMV2_STANDBY_WAKE_SOURCE_IRQ8 = 0x00000100U, LPMV2_STANDBY_WAKE_SOURCE_IRQ9 = 0x00000200U,
  LPMV2_STANDBY_WAKE_SOURCE_IRQ10 = 0x00000400U, LPMV2_STANDBY_WAKE_SOURCE_IRQ11 = 0x00000800U, LPMV2_STANDBY_WAKE_SOURCE_IRQ12 = 0x00001000U, LPMV2_STANDBY_WAKE_SOURCE_IRQ13 = 0x00002000U,
  LPMV2_STANDBY_WAKE_SOURCE_IRQ14 = 0x00004000U, LPMV2_STANDBY_WAKE_SOURCE_IRQ15 = 0x00008000U, LPMV2_STANDBY_WAKE_SOURCE_IWDT = 0x00010000U, LPMV2_STANDBY_WAKE_SOURCE_KEY = 0x00020000U,
  LPMV2_STANDBY_WAKE_SOURCE_LVD1 = 0x00040000U, LPMV2_STANDBY_WAKE_SOURCE_LVD2 = 0x00080000U, LPMV2_STANDBY_WAKE_SOURCE_ACMPHS0 = 0x00400000U, LPMV2_STANDBY_WAKE_SOURCE_RTCALM = 0x01000000U,
  LPMV2_STANDBY_WAKE_SOURCE_RTCPRD = 0x02000000U, LPMV2_STANDBY_WAKE_SOURCE_USBHS = 0x04000000U, LPMV2_STANDBY_WAKE_SOURCE_USBFS = 0x08000000U, LPMV2_STANDBY_WAKE_SOURCE_AGT1UD = 0x10000000U,
  LPMV2_STANDBY_WAKE_SOURCE_AGT1CA = 0x20000000U, LPMV2_STANDBY_WAKE_SOURCE_AGT1CB = 0x40000000U, LPMV2_STANDBY_WAKE_SOURCE_IIC0 = 0x80000000U
}
 
enum  lpmv2_output_port_enable_t { , LPMV2_OUTPUT_PORT_ENABLE_HIGH_IMPEDANCE = 0U, LPMV2_OUTPUT_PORT_ENABLE_RETAIN = 1U }
 

Functions

ssp_err_t R_LPMV2_VersionGet (ssp_version_t *const p_version)
 Get the driver version based on compile time macros. More...
 
ssp_err_t R_LPMV2_Init (void)
 Perform any necessary initialization. More...
 
ssp_err_t R_LPMV2_LowPowerConfigure (lpmv2_cfg_t const *const p_cfg)
 Configure a low power mode. More...
 
ssp_err_t R_LPMV2_LowPowerModeEnter (void)
 Enter low power mode (sleep/standby/deep standby) using WFI macro. More...
 
ssp_err_t R_LPMV2_ClearIOKeep (void)
 Clear the IOKEEP bit after deep software stand by. More...
 

Detailed Description

Driver for Low Power Modes.

The LPMV2 driver supports low power modes deep standby, standby, sleep, and snooze.

Note
Not all low power modes are available on all MCU's.

Enumeration Type Documentation

◆ lpmv2_output_port_enable_t

Output port enable (S3A1, S3A3, S3A7, S5D3, S5D5, S5D9, S7G2)

Enumerator
LPMV2_OUTPUT_PORT_ENABLE_HIGH_IMPEDANCE 

0: In Software Standby Mode or Deep Software Standby Mode, the address output pins, data output pins, and other bus control signal output pins are set to the high-impedance state. In Snooze, the status of the address bus and bus control signals are same as before entering Software Standby Mode.

LPMV2_OUTPUT_PORT_ENABLE_RETAIN 

1: In Software Standby Mode, the address output pins, data output pins, and other bus control signal output pins retain the output state.

◆ lpmv2_snooze_cancel_t

Snooze cancel control

Enumerator
LPMV2_SNOOZE_CANCEL_SOURCE_ADC0_WCMPM 

ADC Channel 0 window compare match (all Synergy MCUs).

LPMV2_SNOOZE_CANCEL_SOURCE_ADC0_WCMPUM 

ADC Channel 0 window compare mismatch (all Synergy MCUs).

LPMV2_SNOOZE_CANCEL_SOURCE_ADC1_WCMPM 

ADC Channel 1 window compare match (S5D3, S5D5, S5D9, S7G2).

LPMV2_SNOOZE_CANCEL_SOURCE_ADC1_WCMPUM 

ADC Channel 1 window compare mismatch (S5D3, S5D5, S5D9, S7G2).

LPMV2_SNOOZE_CANCEL_SOURCE_SCI0_AM 

SCI0 address match event (all Synergy MCUs).

LPMV2_SNOOZE_CANCEL_SOURCE_SCI0_RXI_OR_ERI 

SCI0 receive error (all Synergy MCUs).

LPMV2_SNOOZE_CANCEL_SOURCE_DTC_COMPLETE 

DTC transfer completion (all Synergy MCUs).

LPMV2_SNOOZE_CANCEL_SOURCE_DOC_DOPCI 

Data operation circuit interrupt (all Synergy MCUs).

LPMV2_SNOOZE_CANCEL_SOURCE_CTSU_CTSUFN 

CTSU measurement end interrupt (all Synergy MCUs).

◆ lpmv2_snooze_dtc_t

DTC Enable in Snooze Mode

Enumerator
LPMV2_SNOOZE_DTC_DISABLE 

Disable DTC operation (all Synergy MCUs).

LPMV2_SNOOZE_DTC_ENABLE 

Enable DTC operation (all Synergy MCUs).

◆ lpmv2_snooze_end_t

Snooze end control

Enumerator
LPMV2_SNOOZE_END_SCI0_ADDRESS_MISMATCH 

SCI0 address mismatch (S5D3)

LPMV2_SNOOZE_END_STANDBY_WAKE_SOURCES 

Transition from Snooze to Normal mode directly (all Synergy MCUs).

LPMV2_SNOOZE_END_AGT1_UNDERFLOW 

AGT1 underflow (all Synergy MCUs).

LPMV2_SNOOZE_END_DTC_TRANS_COMPLETE 

Last DTC transmission completion (all Synergy MCUs).

LPMV2_SNOOZE_END_DTC_TRANS_COMPLETE_NEGATED 

Not Last DTC transmission completion (all Synergy MCUs).

LPMV2_SNOOZE_END_ADC0_COMPARE_MATCH 

ADC Channel 0 compare match (all Synergy MCUs).

LPMV2_SNOOZE_END_ADC0_COMPARE_MISMATCH 

ADC Channel 0 compare mismatch (all Synergy MCUs).

LPMV2_SNOOZE_END_ADC1_COMPARE_MATCH 

ADC 1 compare match (S5D3, S5D5, S5D9, S7G2).

LPMV2_SNOOZE_END_ADC1_COMPARE_MISMATCH 

ADC 1 compare mismatch (S5D3, S5D5, S5D9, S7G2).

LPMV2_SNOOZE_END_SCI0_ADDRESS_MATCH 

SCI0 address mismatch (S124, S128, S1JA, S3A1, S3A3, S3A6, S3A7, S5D5, S5D9, S7G2)

◆ lpmv2_snooze_request_t

Snooze request sources

Enumerator
LPMV2_SNOOZE_REQUEST_ACMPLP 

Enable Low-speed analog comparator snooze request (S124, S128, S1JA, S3A1, S3A3, S3A6, S3A7).

LPMV2_SNOOZE_REQUEST_RXD0_FALLING 

Enable RXD0 falling edge snooze request (S124, S3A1, S3A3, S3A6, S3A7, S5D3, S5D5, S5D9, S7G2).
Enable RXD0/DALI falling edge snooze request (S128, S1JA).

LPMV2_SNOOZE_REQUEST_IRQ0 

Enable IRQ0 pin snooze request (all Synergy MCUs).

LPMV2_SNOOZE_REQUEST_IRQ1 

Enable IRQ1 pin snooze request (all Synergy MCUs).

LPMV2_SNOOZE_REQUEST_IRQ2 

Enable IRQ2 pin snooze request (all Synergy MCUs).

LPMV2_SNOOZE_REQUEST_IRQ3 

Enable IRQ3 pin snooze request (all Synergy MCUs).

LPMV2_SNOOZE_REQUEST_IRQ4 

Enable IRQ4 pin snooze request (all Synergy MCUs).

LPMV2_SNOOZE_REQUEST_IRQ5 

Enable IRQ5 pin snooze request (all Synergy MCUs).

LPMV2_SNOOZE_REQUEST_IRQ6 

Enable IRQ6 pin snooze request (all Synergy MCUs).

LPMV2_SNOOZE_REQUEST_IRQ7 

Enable IRQ7 pin snooze request (all Synergy MCUs).

LPMV2_SNOOZE_REQUEST_IRQ8 

Enable IRQ8 pin snooze request (S3A1, S3A3, S3A6, S3A7, S5D3, S5D5, S5D9, S7G2).

LPMV2_SNOOZE_REQUEST_IRQ9 

Enable IRQ9 pin snooze request (S3A1, S3A3, S3A6, S3A7, S5D3, S5D5, S5D9, S7G2).

LPMV2_SNOOZE_REQUEST_IRQ10 

Enable IRQ10 pin snooze request (S3A1, S3A3, S3A6, S3A7, S5D3, S5D5, S5D9, S7G2).

LPMV2_SNOOZE_REQUEST_IRQ11 

Enable IRQ11 pin snooze request (S3A1, S3A3, S3A6, S3A7, S5D3, S5D5, S5D9, S7G2).

LPMV2_SNOOZE_REQUEST_IRQ12 

Enable IRQ12 pin snooze request (S3A1, S3A3, S3A6, S3A7, S5D3, S5D5, S5D9, S7G2).

LPMV2_SNOOZE_REQUEST_IRQ13 

Enable IRQ13 pin snooze request (S3A1, S3A3, S3A7, S5D3, S5D5, S5D9, S7G2).

LPMV2_SNOOZE_REQUEST_IRQ14 

Enable IRQ14 pin snooze request (S3A1, S3A3, S3A6, S3A7, S5D5, S5D9, S7G2).

LPMV2_SNOOZE_REQUEST_IRQ15 

Enable IRQ15 pin snooze request (S3A1, S3A3, S3A6, S3A7, S5D5, S5D9, S7G2).

LPMV2_SNOOZE_REQUEST_KEY 

Enable KR snooze request (all Synergy MCUs).

LPMV2_SNOOZE_REQUEST_ACMPHS0 

Enable High-speed analog comparator 0 snooze request (S5D3, S5D5, S5D9, S7G2).

LPMV2_SNOOZE_REQUEST_RTC_ALARM 

Enable RTC alarm snooze request (all Synergy MCUs).

LPMV2_SNOOZE_REQUEST_RTC_PERIOD 

Enable RTC period snooze request (all Synergy MCUs).

LPMV2_SNOOZE_REQUEST_AGT1_UNDERFLOW 

Enable AGT1 underflow snooze request (all Synergy MCUs).

LPMV2_SNOOZE_REQUEST_AGT1_COMPARE_A 

Enable AGT1 compare match A snooze request (all Synergy MCUs).

LPMV2_SNOOZE_REQUEST_AGT1_COMPARE_B 

Enable AGT1 compare match B snooze request (all Synergy MCUs).

◆ lpmv2_standby_wake_source_t

Wake from standby mode sources, does not apply to sleep or deep standby modes

Enumerator
LPMV2_STANDBY_WAKE_SOURCE_ACMPLP0 

Analog Comparator Low-speed 0 interrupt (S124, S128, S1JA, S3A1, S3A3, S3A6, S3A7).

LPMV2_STANDBY_WAKE_SOURCE_VBATT 

VBATT Monitor interrupt (S3A1, S3A3, S3A6, S3A7).

LPMV2_STANDBY_WAKE_SOURCE_IRQ0 

IRQ0 (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_IRQ1 

IRQ1 (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_IRQ2 

IRQ2 (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_IRQ3 

IRQ3 (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_IRQ4 

IRQ4 (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_IRQ5 

IRQ5 (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_IRQ6 

IRQ6 (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_IRQ7 

IRQ7 (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_IRQ8 

IRQ8 (S3A1, S3A3, S3A6, S3A7, S5D3, S5D5, S5D9, S7G2).

LPMV2_STANDBY_WAKE_SOURCE_IRQ9 

IRQ9 (S3A1, S3A3, S3A6, S3A7, S5D3, S5D5, S5D9, S7G2).

LPMV2_STANDBY_WAKE_SOURCE_IRQ10 

IRQ10 (S3A1, S3A3, S3A6, S3A7, S5D3, S5D5, S5D9, S7G2).

LPMV2_STANDBY_WAKE_SOURCE_IRQ11 

IRQ11 (S3A1, S3A3, S3A6, S3A7, S5D3, S5D5, S5D9, S7G2).

LPMV2_STANDBY_WAKE_SOURCE_IRQ12 

IRQ12 (S3A1, S3A3, S3A6, S3A7, S5D3, S5D5, S5D9, S7G2).

LPMV2_STANDBY_WAKE_SOURCE_IRQ13 

IRQ13 (S3A1, S3A3, S3A7, S5D3, S5D5, S5D9, S7G2).

LPMV2_STANDBY_WAKE_SOURCE_IRQ14 

IRQ14 (S3A1, S3A3, S3A6, S3A7, S5D5, S5D9, S7G2).

LPMV2_STANDBY_WAKE_SOURCE_IRQ15 

IRQ15 (S3A1, S3A3, S3A6, S3A7, S5D5, S5D9, S7G2).

LPMV2_STANDBY_WAKE_SOURCE_IWDT 

Independent watchdog interrupt (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_KEY 

Key interrupt (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_LVD1 

Low Voltage Detection 1 interrupt (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_LVD2 

Low Voltage Detection 2 interrupt (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_ACMPHS0 

Analog Comparator High-speed 0 interrupt (S5D3, S5D5, S5D9, S7G2).

LPMV2_STANDBY_WAKE_SOURCE_RTCALM 

RTC Alarm interrupt (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_RTCPRD 

RTC Period interrupt (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_USBHS 

USB High-speed interrupt (S5D9, S7G2).

LPMV2_STANDBY_WAKE_SOURCE_USBFS 

USB Full-speed interrupt (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_AGT1UD 

AGT1 underflow interrupt (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_AGT1CA 

AGT1 compare match A interrupt (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_AGT1CB 

AGT1 compare match B interrupt (all Synergy MCUs).

LPMV2_STANDBY_WAKE_SOURCE_IIC0 

I2C 0 interrupt (all Synergy MCUs).

Function Documentation

◆ R_LPMV2_ClearIOKeep()

ssp_err_t R_LPMV2_ClearIOKeep ( void  )

Clear the IOKEEP bit after deep software stand by.

Return values
SSP_SUCCESSDSPBYCR_b.IOKEEP bit cleared Successfully.
SSP_ERR_UNSUPPORTEDDeep stand by mode not supported on this MCU.

◆ R_LPMV2_Init()

ssp_err_t R_LPMV2_Init ( void  )

Perform any necessary initialization.

Return values
SSP_SUCCESSLPMV2 Software lock initialized

◆ R_LPMV2_LowPowerConfigure()

ssp_err_t R_LPMV2_LowPowerConfigure ( lpmv2_cfg_t const *const  p_cfg)

Configure a low power mode.

NOTE: This function does not enter the low power mode, it only configures parameters of the mode. Execution of the WFI instruction is what causes the low power mode to be entered.

Return values
SSP_SUCCESSLow power mode successfully applied
SSP_ERR_INVALID_POINTERp_cfg is NULL
SSP_ERR_IN_USELock was not acquired
SSP_ERR_INVALID_HW_CONDITIONOperating mode change transition was detected (OPCMTSF, SOPCMTSF bits)

Get hardware lock

Unlock LPMV2 registers

Check for ongoing operating mode transition (OPCMTSF, SOPCMTSF)

Configure MCU specific settings related to low power modes

Lock LPMV2 registers

Release hardware lock.

◆ R_LPMV2_LowPowerModeEnter()

ssp_err_t R_LPMV2_LowPowerModeEnter ( void  )

Enter low power mode (sleep/standby/deep standby) using WFI macro.

Function will return after waking from low power mode.

Return values
SSP_SUCCESSSuccessful.
SSP_ERR_INVALID_HW_CONDITIONHOCO was unstable during attempt to revert operating mode.

Get hardware lock

Check for ongoing operating mode transition (OPCMTSF, SOPCMTSF)

Enter low power mode

Release hardware lock.

◆ R_LPMV2_VersionGet()

ssp_err_t R_LPMV2_VersionGet ( ssp_version_t *const  p_version)

Get the driver version based on compile time macros.

Return values
SSP_SUCCESSSuccessful close.
SSP_ERR_INVALID_POINTERp_version is NULL.