MSP432E4 DriverLib API Guide
1.11.00.03
|
Macros | |
#define | DELAY_USECS 95 |
#define | LOOP_CYCLES 3 |
Functions | |
void | HibernateEnableExpClk (uint32_t ui32HibClk) |
void | HibernateDisable (void) |
void | HibernateClockConfig (uint32_t ui32Config) |
void | HibernateRTCEnable (void) |
void | HibernateRTCDisable (void) |
void | HibernateBatCheckStart (void) |
uint32_t | HibernateBatCheckDone (void) |
void | HibernateWakeSet (uint32_t ui32WakeFlags) |
uint32_t | HibernateWakeGet (void) |
void | HibernateLowBatSet (uint32_t ui32LowBatFlags) |
uint32_t | HibernateLowBatGet (void) |
void | HibernateRTCSet (uint32_t ui32RTCValue) |
uint32_t | HibernateRTCGet (void) |
void | HibernateRTCMatchSet (uint32_t ui32Match, uint32_t ui32Value) |
uint32_t | HibernateRTCMatchGet (uint32_t ui32Match) |
void | HibernateRTCSSMatchSet (uint32_t ui32Match, uint32_t ui32Value) |
uint32_t | HibernateRTCSSMatchGet (uint32_t ui32Match) |
uint32_t | HibernateRTCSSGet (void) |
void | HibernateRTCTrimSet (uint32_t ui32Trim) |
uint32_t | HibernateRTCTrimGet (void) |
void | HibernateDataSet (uint32_t *pui32Data, uint32_t ui32Count) |
void | HibernateDataGet (uint32_t *pui32Data, uint32_t ui32Count) |
void | HibernateRequest (void) |
void | HibernateIntEnable (uint32_t ui32IntFlags) |
void | HibernateIntDisable (uint32_t ui32IntFlags) |
void | HibernateIntRegister (void(*pfnHandler)(void)) |
void | HibernateIntUnregister (void) |
uint32_t | HibernateIntStatus (bool bMasked) |
void | HibernateIntClear (uint32_t ui32IntFlags) |
uint32_t | HibernateIsActive (void) |
void | HibernateGPIORetentionEnable (void) |
void | HibernateGPIORetentionDisable (void) |
bool | HibernateGPIORetentionGet (void) |
void | HibernateCounterMode (uint32_t ui32Config) |
void | HibernateCalendarSet (struct tm *psTime) |
int | HibernateCalendarGet (struct tm *psTime) |
void | HibernateCalendarMatchSet (uint32_t ui32Index, struct tm *psTime) |
void | HibernateCalendarMatchGet (uint32_t ui32Index, struct tm *psTime) |
void | HibernateTamperEventsConfig (uint32_t ui32Config) |
void | HibernateTamperEnable (void) |
void | HibernateTamperDisable (void) |
void | HibernateTamperIOEnable (uint32_t ui32Input, uint32_t ui32Config) |
void | HibernateTamperIODisable (uint32_t ui32Input) |
void | HibernateTamperEventsClear (void) |
void | HibernateTamperEventsClearNoLock (void) |
void | HibernateTamperUnLock (void) |
void | HibernateTamperLock (void) |
uint32_t | HibernateTamperStatusGet (void) |
bool | HibernateTamperEventsGet (uint32_t ui32Index, uint32_t *pui32RTC, uint32_t *pui32Event) |
void | HibernateTamperExtOscRecover (void) |
bool | HibernateTamperExtOscValid (void) |
The Hibernate API provides a set of functions for using the Hibernation module on the MSP432E4 microcontroller. The Hibernation module allows the software application to remove power from the microcontroller, and then be powered on later based on specific time or when the external WAKE pin is asserted. The API provides functions to configure wake conditions, manage interrupts, read status, save and restore program state information, and request hibernation mode.
Some of the features of the Hibernation module are:
The Hibernation module must be enabled before it can be used. Use the HibernateEnableExpClk() function to enable it. If a crystal is used for the clock source, then the initializing code must allow time for the crystal to stabilize after calling the HibernateEnableExpClk() function. Refer to the device data sheet for information about crystal stabilization time. If an oscillator is used, then no delay is necessary. After the module is enabled, the clock source must be configured by calling HibernateClockConfig().
In order to use the RTC feature of the Hibernation module, the RTC must be enabled by calling HibernateRTCEnable(). It can be later disabled by calling HibernateRTCDisable(). These functions can be called at any time to start and stop the RTC. The RTC value can be read or set by using the HibernateRTCGet() and HibernateRTCSet() functions. The match register can be read and set by using the HibernateRTCMatchGet(), and HibernateRTCMatchSet(), functions. The real-time clock rate can be adjusted by using the trim register. Use the HibernateRTCTrimGet() and HibernateRTCTrimSet() functions for this purpose. The value of the subseconds counter can be read using HibernateRTCSSGet(). The match value of the subseconds counter can be set and read using the HibernateRTCSSMatchSet() and HibernateRTCSSMatchSet() functions.
Some devices provide a calendar mode of operation for the RTC. The value of the RTC can be read or set in calendar mode with the HibernateCalendarGet() and HibernateCalendarSet() functions. The match register can also be read and set in calendar mode with the HibernatCalendarMatchGet() and HibernateCalendarMatchSet() functions.
The tamper feature provides mechanisms to detect, respond to, and log system tamper events. A tamper event is detected by state transitions on select GPIOs or the failure of the external oscillator if used as a clock source. Note that the tamper GPIOs do not require special configuration to be used for the tamper function. See the device datasheet to determine which GPIOs support the tamper function.
The tamper GPIOs are configured to use with HibernateTamperIOEnable() and HibernateTamperIODisable(). None of the GPIO API functions are needed to configure the tamper GPIOs. The tamper GPIOs configured by using these functions override any configuration by GPIO APIs. The external oscillator state can be retrieved with HibernateTamperExtOscValid(). If an external oscillator failure is detected, a recovery attempt can be triggered with HibernateTamperExtOscRecover().
The module always reponds to a tamper event by generating a tamper event signal to the System Control module. The tamper feature can be also be configured to respond to a tamper event by clearing all or part of the hibernate memory and/or waking from hibernate via HibernateTamperEventsConfig(). The detected events are logged with a real-time clock time stamp to allow investigation. The logged events can be managed with HibernateTamperEventsGet() and HibernateTamperEventsClear().
The overall status of tamper retrieved with HibernateTamperStatusGet(). The tamper feature can be enabled and disabled with HibernateTamperEnable() and HibernateTamperDisable().
Application state information can be stored in the battery-backed memory of the Hibernation module when the processor is powered off. Use the HibernateDataSet() and HibernateDataGet() functions to access the battery-backed memory area.
The module can be configured to wake when the external WAKE pin is asserted, when an RTC match occurs, and when the battery level has reached a set level. On some devices, the module can also be configured to wake when a GPIO pin is asserted or when the RESET pin is asserted. Finally on devices that support tamper detection, the module can also be configured to wake on a tamper related event. Use the HibernateWakeSet() function to configure the wake conditions. The current configuration can be read by calling HibernateWakeGet().
The Hibernation module can detect a low battery and signal the processor. It can also be configured to abort a hibernation request if the battery voltage is too low. Use the HibernateLowBatSet() and HibernateLowBatGet() functions to configure this feature. The battery level can be measured using the HibernateBatCheckStart() and HibernateBatCheckDone() functions.
Several functions are provided for managing interrupts. Use the HibernateIntRegister() and HibernateIntUnregister() functions to install or uninstall an interrupt handler into the vector table. Refer to the IntRegister() function for notes about using the interrupt vector table. The module can generate several different interrupts. Use the HibernateIntEnable() and HibernateIntDisable() functions to enable and disable specific interrupt sources. The present interrupt status can be found by calling HibernateIntStatus(). In the interrupt handler, all pending interrupts must be cleared. Use the HibernateIntClear() function to clear pending interrupts.
Finally, once the module is appropriately configured, the state saved, and the software application is ready to hibernate, call the HibernateRequest() function. This function initiates the sequence to remove power from the processor. At a power-on reset, the software application can use the HibernateIsActive() function to determine if the Hibernation module is already active and therefore does not need to be enabled. This function can provide a hint to the software that the processor is waking from hibernation instead of a cold start. The software can then use the HibernateIntStatus() and HibernateDataGet() functions to discover the cause of the wake and to get the saved system state.
The HibernateEnable() API from previous versions of the peripheral driver library has been replaced by the HibernateEnableExpClk() API. A macro has been provided in hibernate.h
to map the old API to the new API, allowing existing applications to link and run with the new API. It is recommended that new applications use the new API in favor of the old one.
The following example shows how to determine if the processor reset is due to a wake from hibernation and to restore saved state:
The following example shows how to set up the Hibernation module for a TM4C123x device and initiate hibernation with wake up at a future time:
The following example shows how to use the Hibernation module RTC for a TM4C123x device to generate an interrupt at a certain time:
#define DELAY_USECS 95 |
#define LOOP_CYCLES 3 |
void HibernateEnableExpClk | ( | uint32_t | ui32HibClk | ) |
Enables the Hibernation module for operation.
ui32HibClk | is the rate of the clock supplied to the Hibernation module. |
This function enables the Hibernation module for operation. This function should be called before any of the Hibernation module features are used.
The peripheral clock is the same as the processor clock. The frequency of the system clock is the value returned by SysCtlClockFreqSet(), or it can be explicitly hard coded if it is constant and known (to save the code/execution overhead of fetch of the variable call holding the return value of SysCtlClockFreqSet()).
References HIB_CTL, HIB_CTL_CLK32EN, and HWREG.
void HibernateDisable | ( | void | ) |
Disables the Hibernation module for operation.
This function disables the Hibernation module. After this function is called, none of the Hibernation module features are available.
References HIB_CTL, HIB_CTL_CLK32EN, and HWREG.
void HibernateClockConfig | ( | uint32_t | ui32Config | ) |
Configures the clock input for the Hibernation module.
ui32Config | is one of the possible configuration options for the clock input listed below. |
This function is used to configure the clock input for the Hibernation module. The ui32Config parameter can be one of the following values:
There is an option to use an internal low frequency oscillator (LFIOSC) as the clock source for the Hibernation module. Because of the low accuracy of this oscillator, this option should not be used when the system requires a real time counter. Adding the HIBERNATE_OSC_LFIOSC value enables the LFIOSC as the clock source to the Hibernation module.
This ui32Config also configures how the clock output from the hibernation is used to clock other peripherals in the system. The ALT clock settings allow clocking a subset of the peripherals. The ui32Config parameter can have any combination of the following values:
The HIBERNATE_OSC_DISABLE option is used to disable and power down the internal oscillator if an external clock source or no clock source is used instead of a 32.768-kHz crystal. In the case where an external crystal is used, either the HIBERNATE_OSC_HIGHDRIVE or HIBERNATE_OSC_LOWDRIVE is used. These settings optimizes the oscillator drive strength to match the size of the filter capacitor that is used with the external crystal circuit.
References ASSERT, HIB_CTL, HIB_CTL_CLK32EN, HIBERNATE_OSC_DISABLE, HIBERNATE_OSC_HIGHDRIVE, HIBERNATE_OSC_LFIOSC, HIBERNATE_OSC_LOWDRIVE, and HWREG.
void HibernateRTCEnable | ( | void | ) |
Enables the RTC feature of the Hibernation module.
This function enables the RTC in the Hibernation module. The RTC can be used to wake the processor from hibernation at a certain time, or to generate interrupts at certain times. This function must be called before using any of the RTC features of the Hibernation module.
References HIB_CTL, HIB_CTL_RTCEN, and HWREG.
void HibernateRTCDisable | ( | void | ) |
Disables the RTC feature of the Hibernation module.
This function disables the RTC in the Hibernation module. After calling this function, the RTC features of the Hibernation module are not available.
References HIB_CTL, HIB_CTL_RTCEN, and HWREG.
void HibernateBatCheckStart | ( | void | ) |
Forces the Hibernation module to initiate a check of the battery voltage.
This function forces the Hibernation module to initiate a check of the battery voltage immediately rather than waiting for the next check interval to pass. After calling this function, the application should call the HibernateBatCheckDone() function and wait for the function to return a zero value before calling the HibernateIntStatus() to check if the return code has the HIBERNATE_INT_LOW_BAT set. If HIBERNATE_INT_LOW_BAT is set, the battery level is low. The application can also enable the HIBERNATE_INT_LOW_BAT interrupt and wait for an interrupt to indicate that the battery level is low.
References HIB_CTL, HIB_CTL_BATCHK, and HWREG.
uint32_t HibernateBatCheckDone | ( | void | ) |
Determines whether or not a forced battery check has completed.
This function determines whether the forced battery check initiated by a call to the HibernateBatCheckStart() function has completed. This function returns a non-zero value until the battery level check has completed. Once this function returns a value of zero, the Hibernation module has completed the battery check and the HibernateIntStatus() function can be used to check if the battery was low by checking if the value returned has the HIBERNATE_INT_LOW_BAT set.
References HIB_CTL, HIB_CTL_BATCHK, and HWREG.
void HibernateWakeSet | ( | uint32_t | ui32WakeFlags | ) |
Configures the wake conditions for the Hibernation module.
ui32WakeFlags | specifies which conditions should be used for waking. |
This function enables the conditions under which the Hibernation module wakes. The ui32WakeFlags parameter is the logical OR of any combination of the following:
If the HIBERNATE_WAKE_GPIO flag is set, then one of the GPIO configuration functions GPIOPinTypeWakeHigh() or GPIOPinTypeWakeLow() must be called to properly configure and enable a GPIO as a wake source for hibernation.
References ASSERT, HIB_CTL, HIBERNATE_WAKE_GPIO, HIBERNATE_WAKE_LOW_BAT, HIBERNATE_WAKE_PIN, HIBERNATE_WAKE_RESET, HIBERNATE_WAKE_RTC, and HWREG.
uint32_t HibernateWakeGet | ( | void | ) |
Gets the currently configured wake conditions for the Hibernation module.
This function returns the flags representing the wake configuration for the Hibernation module. The return value is a combination of the following flags:
References HIB_CTL, HIB_IO, HIBERNATE_WAKE_GPIO, HIBERNATE_WAKE_LOW_BAT, HIBERNATE_WAKE_PIN, HIBERNATE_WAKE_RESET, HIBERNATE_WAKE_RTC, and HWREG.
void HibernateLowBatSet | ( | uint32_t | ui32LowBatFlags | ) |
Configures the low-battery detection.
ui32LowBatFlags | specifies behavior of low-battery detection. |
This function enables the low-battery detection and whether hibernation is allowed if a low battery is detected. If low-battery detection is enabled, then a low-battery condition is indicated in the raw interrupt status register, which can be enabled to trigger an interrupt. Optionally, hibernation can be aborted if a low battery condition is detected.
The ui32LowBatFlags parameter is one of the following values:
The other setting in the ui32LowBatFlags allows the caller to set one of the following voltage level trigger values :
Example: Abort hibernate if the voltage level is below 2.1 V.
//! HibernateLowBatSet(HIBERNATE_LOW_BAT_ABORT | HIBERNATE_LOW_BAT_2_1V); //!
\return None.
References ASSERT, HIB_CTL, HIB_CTL_VBATSEL_M, HIBERNATE_LOW_BAT_ABORT, and HWREG.
uint32_t HibernateLowBatGet | ( | void | ) |
Gets the currently configured low-battery detection behavior.
This function returns a value representing the currently configured low battery detection behavior.
The return value is a combination of the values described in the HibernateLowBatSet() function.
References HIB_CTL, HIB_CTL_VBATSEL_M, HIBERNATE_LOW_BAT_ABORT, and HWREG.
void HibernateRTCSet | ( | uint32_t | ui32RTCValue | ) |
Sets the value of the real time clock (RTC) counter.
ui32RTCValue | is the new value for the RTC. |
This function sets the value of the RTC. The RTC counter contains the count in seconds when a 32.768kHz clock source is in use. The RTC must be enabled by calling HibernateRTCEnable() before calling this function.
References HIB_LOCK, HIB_LOCK_HIBLOCK_KEY, and HWREG.
uint32_t HibernateRTCGet | ( | void | ) |
void HibernateRTCMatchSet | ( | uint32_t | ui32Match, |
uint32_t | ui32Value | ||
) |
Sets the value of the RTC match register.
ui32Match | is the index of the match register. |
ui32Value | is the value for the match register. |
This function sets a match register for the RTC. The Hibernation module can be configured to wake from hibernation, and/or generate an interrupt when the value of the RTC counter is the same as the match register.
uint32_t HibernateRTCMatchGet | ( | uint32_t | ui32Match | ) |
Gets the value of the requested RTC match register.
ui32Match | is the index of the match register. |
This function gets the value of the match register for the RTC. The only value that can be used with the ui32Match parameter is zero, other values are reserved for future use.
void HibernateRTCSSMatchSet | ( | uint32_t | ui32Match, |
uint32_t | ui32Value | ||
) |
Sets the value of the RTC sub second match register.
ui32Match | is the index of the match register. |
ui32Value | is the value for the sub second match register. |
This function sets the sub second match register for the RTC in 1/32768 of a second increments. The Hibernation module can be configured to wake from hibernation, and/or generate an interrupt when the value of the RTC counter is the same as the match combined with the sub second match register. The only value that can be used with the ui32Match parameter is zero, other values are reserved for future use.
References ASSERT, HIB_RTCSS, HIB_RTCSS_RTCSSM_S, and HWREG.
uint32_t HibernateRTCSSMatchGet | ( | uint32_t | ui32Match | ) |
Returns the value of the requested RTC sub second match register.
ui32Match | is the index of the match register. |
This function returns the current value of the sub second match register for the RTC. The value returned is in 1/32768 second increments. The only value that can be used with the ui32Match parameter is zero, other values are reserved for future use.
References ASSERT, HIB_RTCSS, HIB_RTCSS_RTCSSM_S, and HWREG.
uint32_t HibernateRTCSSGet | ( | void | ) |
Returns the current value of the RTC sub second count.
This function returns the current value of the sub second count for the RTC in 1/32768 of a second increments. The only value that can be used with the ui32Match parameter is zero, other values are reserved for future use.
References HIB_RTCSS, HIB_RTCSS_RTCSSC_M, and HWREG.
void HibernateRTCTrimSet | ( | uint32_t | ui32Trim | ) |
Sets the value of the RTC pre-divider trim register.
ui32Trim | is the new value for the pre-divider trim register. |
This function sets the value of the pre-divider trim register. The input time source is divided by the pre-divider to achieve a one-second clock rate. Once every 64 seconds, the value of the pre-divider trim register is applied to the pre-divider to allow fine-tuning of the RTC rate, in order to make corrections to the rate. The software application can make adjustments to the pre-divider trim register to account for variations in the accuracy of the input time source. The nominal value is 0x7FFF, and it can be adjusted up or down in order to fine-tune the RTC rate.
uint32_t HibernateRTCTrimGet | ( | void | ) |
Gets the value of the RTC pre-divider trim register.
This function gets the value of the pre-divider trim register. This function can be used to get the current value of the trim register prior to making an adjustment by using the HibernateRTCTrimSet() function.
void HibernateDataSet | ( | uint32_t * | pui32Data, |
uint32_t | ui32Count | ||
) |
Stores data in the battery-backed memory of the Hibernation module.
pui32Data | points to the data that the caller wants to store in the memory of the Hibernation module. |
ui32Count | is the count of 32-bit words to store. |
Stores a set of data in the Hibernation module battery-backed memory. This memory is preserved when the power to the processor is turned off and can be used to store application state information that is needed when the processor wakes. Up to 16 32-bit words can be stored in the battery-backed memory. The data can be restored by calling the HibernateDataGet() function.
void HibernateDataGet | ( | uint32_t * | pui32Data, |
uint32_t | ui32Count | ||
) |
Reads a set of data from the battery-backed memory of the Hibernation module.
pui32Data | points to a location where the data that is read from the Hibernation module is stored. |
ui32Count | is the count of 32-bit words to read. |
This function retrieves a set of data from the Hibernation module battery-backed memory that was previously stored with the HibernateDataSet() function. The caller must ensure that pui32Data points to a large enough memory block to hold all the data that is read from the battery-backed memory.
void HibernateRequest | ( | void | ) |
Requests hibernation mode.
This function requests the Hibernation module to disable the external regulator, thus removing power from the processor and all peripherals. The Hibernation module remains powered from the battery or auxiliary power supply.
The Hibernation module re-enables the external regulator when one of the configured wake conditions occurs (such as RTC match or external WAKE pin). When the power is restored, the processor goes through a power-on reset although the Hibernation module is not reset. The processor can retrieve saved state information with the HibernateDataGet() function. Prior to calling the function to request hibernation mode, the conditions for waking must have already been set by using the HibernateWakeSet() function.
Note that this function may return because some time may elapse before the power is actually removed, or it may not be removed at all. For this reason, the processor continues to execute instructions for some time, and the caller should be prepared for this function to return. There are various reasons why the power may not be removed. For example, if the HibernateLowBatSet() function was used to configure an abort if low battery is detected, then the power is not removed if the battery voltage is too low. There may be other reasons related to the external circuit design, that a request for hibernation may not actually occur.
For all these reasons, the caller must be prepared for this function to return. The simplest way to handle it is to just enter an infinite loop and wait for the power to be removed.
References HIB_CTL, HIB_CTL_HIBREQ, and HWREG.
void HibernateIntEnable | ( | uint32_t | ui32IntFlags | ) |
Enables interrupts for the Hibernation module.
ui32IntFlags | is the bit mask of the interrupts to be enabled. |
This function enables the specified interrupt sources from the Hibernation module.
The ui32IntFlags parameter must be the logical OR of any combination of the following:
References ASSERT, HIB_IM, HIBERNATE_INT_GPIO_WAKE, HIBERNATE_INT_LOW_BAT, HIBERNATE_INT_PIN_WAKE, HIBERNATE_INT_RESET_WAKE, HIBERNATE_INT_RTC_MATCH_0, HIBERNATE_INT_VDDFAIL, HIBERNATE_INT_WR_COMPLETE, and HWREG.
void HibernateIntDisable | ( | uint32_t | ui32IntFlags | ) |
Disables interrupts for the Hibernation module.
ui32IntFlags | is the bit mask of the interrupts to be disabled. |
This function disables the specified interrupt sources from the Hibernation module.
The ui32IntFlags parameter has the same definition as the ui32IntFlags parameter to the HibernateIntEnable() function.
References ASSERT, HIB_IM, HIBERNATE_INT_GPIO_WAKE, HIBERNATE_INT_LOW_BAT, HIBERNATE_INT_PIN_WAKE, HIBERNATE_INT_RESET_WAKE, HIBERNATE_INT_RTC_MATCH_0, HIBERNATE_INT_VDDFAIL, HIBERNATE_INT_WR_COMPLETE, and HWREG.
void HibernateIntRegister | ( | void(*)(void) | pfnHandler | ) |
Registers an interrupt handler for the Hibernation module interrupt.
pfnHandler | points to the function to be called when a hibernation interrupt occurs. |
This function registers the interrupt handler in the system interrupt controller. The interrupt is enabled at the global level, but individual interrupt sources must still be enabled with a call to HibernateIntEnable().
void HibernateIntUnregister | ( | void | ) |
Unregisters an interrupt handler for the Hibernation module interrupt.
This function unregisters the interrupt handler in the system interrupt controller. The interrupt is disabled at the global level, and the interrupt handler is no longer called.
uint32_t HibernateIntStatus | ( | bool | bMasked | ) |
Gets the current interrupt status of the Hibernation module.
bMasked | is false to retrieve the raw interrupt status, and true to retrieve the masked interrupt status. |
This function returns the interrupt status of the Hibernation module. The caller can use this function to determine the cause of a hibernation interrupt. Either the masked or raw interrupt status can be returned.
void HibernateIntClear | ( | uint32_t | ui32IntFlags | ) |
Clears pending interrupts from the Hibernation module.
ui32IntFlags | is the bit mask of the interrupts to be cleared. |
This function clears the specified interrupt sources. This function must be called within the interrupt handler or else the handler is called again upon exit.
The ui32IntFlags parameter has the same definition as the ui32IntFlags parameter to the HibernateIntEnable() function.
References ASSERT, HIB_IC, HIBERNATE_INT_GPIO_WAKE, HIBERNATE_INT_LOW_BAT, HIBERNATE_INT_PIN_WAKE, HIBERNATE_INT_RESET_WAKE, HIBERNATE_INT_RTC_MATCH_0, HIBERNATE_INT_VDDFAIL, HIBERNATE_INT_WR_COMPLETE, and HWREG.
uint32_t HibernateIsActive | ( | void | ) |
Checks to see if the Hibernation module is already powered up.
This function queries the control register to determine if the module is already active. This function can be called at a power-on reset to help determine if the reset is due to a wake from hibernation or a cold start. If the Hibernation module is already active, then it does not need to be re-enabled, and its status can be queried immediately.
The software application should also use the HibernateIntStatus() function to read the raw interrupt status to determine the cause of the wake. The HibernateDataGet() function can be used to restore state. These combinations of functions can be used by the software to determine if the processor is waking from hibernation and the appropriate action to take as a result.
References HIB_CTL, HIB_CTL_CLK32EN, and HWREG.
void HibernateGPIORetentionEnable | ( | void | ) |
Enables GPIO retention after wake from hibernation.
This function enables the GPIO pin state to be maintained during hibernation and remain active even when waking from hibernation. The GPIO module itself is reset upon entering hibernation and no longer controls the output pins. To maintain the current output level after waking from hibernation, the GPIO module must be reconfigured and then the HibernateGPIORetentionDisable() function must be called to return control of the GPIO pin to the GPIO module.
References HIB_CTL, HIB_CTL_RETCLR, HIB_CTL_VDD3ON, and HWREG.
void HibernateGPIORetentionDisable | ( | void | ) |
Disables GPIO retention after wake from hibernation.
This function disables the retention of the GPIO pin state during hibernation and allows the GPIO pins to be controlled by the system. If the HibernateGPIORetentionEnable() function is called before entering hibernation, this function must be called after returning from hibernation to allow the GPIO pins to be controlled by GPIO module.
References HIB_CTL, HIB_CTL_RETCLR, HIB_CTL_VDD3ON, and HWREG.
bool HibernateGPIORetentionGet | ( | void | ) |
Returns the current setting for GPIO retention.
This function returns the current setting for GPIO retention in the hibernate module.
References HIB_CTL, HIB_CTL_RETCLR, HIB_CTL_VDD3ON, and HWREG.
void HibernateCounterMode | ( | uint32_t | ui32Config | ) |
Configures the Hibernation module's internal counter mode.
ui32Config | is the configuration to use for the Hibernation module's counter. |
This function configures the Hibernate module's counter mode to operate as a standard RTC counter or to operate in a calendar mode. The ui32Config parameter is used to provide the configuration for the counter and must include only one of the following values:
The HibernateCalendar functions can only be called when either HIBERNATE_COUNTER_24HR or HIBERNATE_COUNTER_12HR is specified.
Example: Configure hibernate counter to 24-hour calendar mode.
//! //! // //! // Configure the hibernate module counter to 24-hour calendar mode. //! // //! HibernateCounterMode(HIBERNATE_COUNTER_24HR); //! //!
\return None.
References HIB_CALCTL, and HWREG.
void HibernateCalendarSet | ( | struct tm * | psTime | ) |
Sets the Hibernation module's date and time in calendar mode.
psTime | is the structure that holds the information for the current date and time. |
This function uses the psTime parameter to set the current date and time when the Hibernation module is in calendar mode. Regardless of whether 24-hour or 12-hour mode is in use, the psTime structure uses a 24-hour representation of the time. This function can only be called when the hibernate counter is configured in calendar mode using the HibernateCounterMode() function with one of the calendar modes.
int HibernateCalendarGet | ( | struct tm * | psTime | ) |
Returns the Hibernation module's date and time in calendar mode.
psTime | is the structure that is filled with the current date and time. |
This function returns the current date and time in the structure provided by the psTime parameter. Regardless of the calendar mode, the psTime parameter uses a 24-hour representation of the time. This function can only be called when the Hibernation module is configured in calendar mode using the HibernateCounterMode() function with one of the calendar modes.
The only case where this function fails and returns a non-zero value is when the function detects that the counter is passing from the last second of the day to the first second of the next day. This exception must be handled in the application by waiting at least one second before calling again to get the updated calendar information.
References ASSERT, HIB_CAL0, HIB_CAL0_AMPM, HIB_CAL0_HR_M, HIB_CAL0_HR_S, HIB_CAL0_MIN_M, HIB_CAL0_MIN_S, HIB_CAL0_SEC_M, HIB_CAL0_SEC_S, HIB_CAL0_VALID, HIB_CAL1, HIB_CAL1_DOM_M, HIB_CAL1_DOM_S, HIB_CAL1_DOW_M, HIB_CAL1_DOW_S, HIB_CAL1_MON_M, HIB_CAL1_MON_S, HIB_CAL1_VALID, HIB_CAL1_YEAR_M, HIB_CAL1_YEAR_S, HIB_CALCTL, HIB_CALCTL_CAL24, HIB_CALCTL_CALEN, and HWREG.
void HibernateCalendarMatchSet | ( | uint32_t | ui32Index, |
struct tm * | psTime | ||
) |
Sets the Hibernation module's date and time match value in calendar mode.
ui32Index | indicates which match register to access. |
psTime | is the structure that holds all of the information to set the current date and time match values. |
This function uses the psTime parameter to set the current date and time match value in the Hibernation module's calendar. Regardless of the mode, the psTime parameter uses a 24-hour clock representation of time. This function can only be called when the Hibernation module is configured in calendar mode using the HibernateCounterMode() function. The ui32Index value is reserved for future use and should always be zero. Calendar match can be enabled for every day, every hour, every minute or every second, setting any of these fields to 0xFF causes a match for that field. For example, setting the day of month field to 0xFF results in a calendar match daily at the same time.
void HibernateCalendarMatchGet | ( | uint32_t | ui32Index, |
struct tm * | psTime | ||
) |
Returns the Hibernation module's date and time match value in calendar mode.
ui32Index | indicates which match register to access. |
psTime | is the structure to fill with the current date and time match value. |
This function returns the current date and time match value in the structure provided by the psTime parameter. Regardless of the mode, the psTime parameter uses a 24-hour clock representation of time. This function can only be called when the Hibernation module is configured in calendar mode using the HibernateCounterMode() function. The ui32Index value is reserved for future use and should always be zero.
References ASSERT, HIB_CAL0_AMPM, HIB_CAL0_HR_M, HIB_CAL0_HR_S, HIB_CAL0_MIN_M, HIB_CAL0_MIN_S, HIB_CAL0_SEC_M, HIB_CAL0_SEC_S, HIB_CAL1_DOM_M, HIB_CAL1_DOM_S, HIB_CALCTL, HIB_CALCTL_CAL24, HIB_CALCTL_CALEN, HIB_CALM0, HIB_CALM1, and HWREG.
void HibernateTamperEventsConfig | ( | uint32_t | ui32Config | ) |
Configures the tamper feature event response.
ui32Config | specifies the configuration options for tamper events. |
This function is used to configure the event response options for the tamper feature. The ui32Config parameter provides a combination of the HIBERNATE_TAMPER_EVENTS_* features to set these options. The application should choose from the following set of defines to determine what happens to the system when a tamper event occurs:
References HIB_LOCK, HIB_LOCK_HIBLOCK_KEY, HIB_TPCTL, HIB_TPCTL_MEMCLR_M, and HWREG.
void HibernateTamperEnable | ( | void | ) |
Enables the tamper feature.
This function is used to enable the tamper feature functionality. This function should only be called after the global configuration is set with a call to HibernateTamperEventsConfig() and the tamper inputs have been configured with a call to HibernateTamperIOEnable().
References HIB_LOCK, HIB_LOCK_HIBLOCK_KEY, and HWREG.
void HibernateTamperDisable | ( | void | ) |
Disables the tamper feature.
This function is used to disable the tamper feature functionality. All other configuration settings are left unmodified, allowing a call to HibernateTamperEnable() to quickly enable the tamper feature with its previous configuration.
References HIB_LOCK, HIB_LOCK_HIBLOCK_KEY, and HWREG.
void HibernateTamperIOEnable | ( | uint32_t | ui32Input, |
uint32_t | ui32Config | ||
) |
Configures an input to the tamper feature.
ui32Input | is the tamper input to configure. |
ui32Config | holds the configuration options for a given input to the tamper feature. |
This function is used to configure an input to the tamper feature. The ui32Input parameter specifies the tamper signal to configure and has a valid range of 0-3. The ui32Config parameter provides the set of tamper features in the HIBERNATE_TAMPER_IO_* values. The values that are valid in the ui32Config parameter are:
References ASSERT, HIB_LOCK, HIB_LOCK_HIBLOCK_KEY, HIB_TPIO, HIB_TPIO_EN0, HIB_TPIO_GFLTR0, HIB_TPIO_LEV0, HIB_TPIO_PUEN0, and HWREG.
void HibernateTamperIODisable | ( | uint32_t | ui32Input | ) |
Disables an input to the tamper feature.
ui32Input | is the tamper input to disable. |
This function is used to disable an input to the tamper feature. The ui32Input parameter specifies the tamper signal to disable and has a valid range of 0-3.
References ASSERT, HIB_LOCK, HIB_LOCK_HIBLOCK_KEY, and HWREG.
void HibernateTamperEventsClear | ( | void | ) |
Clears the tamper feature events.
This function is used to clear all tamper events. This function always clears the tamper feature event state indicator along with all tamper log entries. Logged event data should be retrieved with HibernateTamperEventsGet() prior to requesting a event clear.
HibernateTamperEventsClear() should be called prior to clearing the system control NMI that resulted from the tamper event.
References HIB_LOCK, HIB_LOCK_HIBLOCK_KEY, and HWREG.
void HibernateTamperEventsClearNoLock | ( | void | ) |
Clears the tamper feature events without Unlock and Lock.
This function is used to clear all tamper events without unlock/locking the tamper control registers, so API HibernateTamperUnLock() should be called before this function, and API HibernateTamperLock() should be called after to ensure that tamper control registers are locked.
This function doesn't block until the write is complete. Therefore, care must be taken to ensure the next immediate write will occure only after the write complete bit is set.
This function is used to implement a software workaround in NMI interrupt handler to fix an issue when a new tamper event could be missed during the clear of current tamper event.
void HibernateTamperUnLock | ( | void | ) |
Unlock temper registers.
This function is used to unlock the temper control registers. This function should be only used before calling API HibernateTamperEventsClearNoLock().
References HIB_LOCK, HIB_LOCK_HIBLOCK_KEY, and HWREG.
void HibernateTamperLock | ( | void | ) |
Lock temper registers.
This function is used to lock the temper control registers. This function should be used after calling API HibernateTamperEventsClearNoLock().
uint32_t HibernateTamperStatusGet | ( | void | ) |
Returns the current tamper feature status.
This function is used to return the tamper feature status. This function returns one of the values from this group of options:
In addition, one of the values is included from this group:
And one of the values is included from this group:
References HIB_TPSTAT, HIB_TPSTAT_STATE_M, HIB_TPSTAT_XOSCFAIL, HIB_TPSTAT_XOSCST, HIBERNATE_TAMPER_STATUS_EXT_OSC_ACTIVE, HIBERNATE_TAMPER_STATUS_EXT_OSC_VALID, HIBERNATE_TAMPER_STATUS_INACTIVE, and HWREG.
Referenced by HibernateTamperExtOscValid().
bool HibernateTamperEventsGet | ( | uint32_t | ui32Index, |
uint32_t * | pui32RTC, | ||
uint32_t * | pui32Event | ||
) |
Returns a tamper log entry.
ui32Index | is the index of the log entry to return. |
pui32RTC | is a pointer to the memory to store the logged RTC data. |
pui32Event | is a pointer to the memory to store the logged tamper event. |
This function is used to return a tamper log entry from the hibernate feature. The ui32Index specifies the zero-based index of the log entry to query and has a valid range of 0-3.
When this function returns, the pui32RTC value contains the time value and pui32Event parameter contains the tamper I/O event that triggered this log.
The format of the returned pui32RTC data is dependent on the configuration of the RTC within the Hibernation module. If the RTC is configured for counter mode, the returned data contains counted seconds from the RTC enable. If the RTC is configured for calendar mode, the data returned is formatted as follows:
//! +----------------------------------------------------------------------+ //! | 31:26 | 25:22 | 21:17 | 16:12 | 11:6 | 5:0 | //! +----------------------------------------------------------------------+ //! | year | month | day of month | hours | minutes | seconds | //! +----------------------------------------------------------------------+ //!
The data returned in the \e pui32Events parameter could include any of the following flags: - \b HIBERNATE_TAMPER_EVENT_0 indicates a tamper event was triggered on I/O signal 0 - \b HIBERNATE_TAMPER_EVENT_1 indicates a tamper event was triggered on I/O signal 1 - \b HIBERNATE_TAMPER_EVENT_2 indicates a tamper event was triggered on I/O signal 2 - \b HIBERNATE_TAMPER_EVENT_3 indicates a tamper event was triggered on I/O signal 3 - \b HIBERNATE_TAMPER_EVENT_XOSC indicates an external oscillator failure triggered the tamper event \note Tamper event logs are not consumed when read and remain available until cleared. Events are only logged if unused log space is available. \return Returns \b true if the \e pui32RTC and \e pui32Events were updated successfully and returns \b false if the values were not updated.
References ASSERT, HIB_CAL0, HIB_CAL0_AMPM, HIB_CALCTL, HIB_CALCTL_CAL24, HIB_CALCTL_CALEN, HIB_TPLOG0, and HWREG.
void HibernateTamperExtOscRecover | ( | void | ) |
Attempts to recover the external oscillator.
This function is used to attempt to recover the external oscillator after a HIBERNATE_TAMPER_STATUS_EXT_OSC_FAILED status is reported. This function must not be called if the external oscillator is not used as the hibernation clock input. HibernateTamperExtOscValid() should be called before calling this function.
References HIB_LOCK, HIB_LOCK_HIBLOCK_KEY, and HWREG.
bool HibernateTamperExtOscValid | ( | void | ) |
Reports if the external oscillator signal is active and stable.
This function should be used to verify the external oscillator is active and valid before attempting to recover from a HIBERNATE_TAMPER_STATUS_EXT_OSC_FAILED status by calling HibernateTamperExtOscRecover().
References HIBERNATE_TAMPER_STATUS_EXT_OSC_ACTIVE, HIBERNATE_TAMPER_STATUS_EXT_OSC_VALID, and HibernateTamperStatusGet().