![]() |
![]() |
Power manager interface for CC27XX.
============================================================================
The Power header file should be included in an application by including the top level header file as follows:
Refer to Power.h for a complete description of APIs.
This header file defines the power resources, constraints, events, sleep states and transition latencies for CC27XX.
The CC27XX Power driver will configure the HFXT amplitude to the highest possible value at boot (in Power_init()). Each time the device enters standby the HFXT amplitude will be updated to ensure the optimal amplitude is used. It will take up to 5 iterations (5 standby entries) after boot until the optimal amplitude has been found. This process will ensure that the amplitude is kept in an optimal range if the operating conditions change, as long as the device regularly enters standby.
The amplitude adjustments done at standby entry is sufficient for applications that regularly enters standby, but if the application does not regularly enter standby, then PowerLPF3_getHfxtAmpAdjustment() and PowerLPF3_adjustHfxtAmp() can be used to check if an adjustment is needed, and perform the adjustment if needed.
If the application requires that the HFXT amplitude is already in the optimal range after boot, then Initial HFXT Amplitude Compensation can be enabled with PowerCC27XX_Config.startInitialHfxtAmpCompFxn. If initial HFXT amplitude compensation is enabled, the optimal amplitude will be found at/after boot, meaning it will take longer before HFXT is ready after boot, but when it is ready the amplitude will already be in the optimal range. This process is done asynchronously, so the application can do other tasks while waiting for HFXT to be ready.
Enabling initial HFXT amplitude compensation will result in more flash usage and longer time from boot to the first RF operation.
HFXT frequency is known to vary with temperature, landing outside acceptable operational range. By enabling compensation, the device will correct for this variation above the selected temperature. The compensation is enabled by default on CC27X0 devices. The ppm offset used to compensate the HFXT can be approximated by a third order polynomial function of temperature in Celsius, see PowerLPF3_initHFXTCompensation().
The Power driver has certain restrictions and limitations in TFM enabled application and certain APIs operate slightly differently compared to secure-only applications. Some APIs are also not available from non-secure contexts.
When called from non-secure context, Power_getDependencyCount(), Power_getConstraintCount() and Power_getConstraintMask() will return the non-secure dependency count, constraint count and constraint mask, respectively. This means that a count or mask bit of zero does not necessarily mean that there are no dependencies or constraints set, since the secure side might still have a dependency or constraints set.
#include <ti/drivers/dpl/HwiP.h>#include <ti/drivers/dpl/ClockP.h>#include <ti/drivers/Power.h>#include <ti/devices/DeviceFamily.h>#include <DeviceFamily_constructPath(inc/hw_pmctl.h)>#include <DeviceFamily_constructPath(inc/hw_clkctl.h)>#include <DeviceFamily_constructPath(inc/hw_lrfddbell.h)>#include <DeviceFamily_constructPath(inc/hw_memmap.h)>#include <DeviceFamily_constructPath(inc/hw_types.h)>#include <DeviceFamily_constructPath(driverlib/pmctl.h)>

Go to the source code of this file.
Data Structures | |
| struct | PowerCC27XX_Config |
| Global configuration structure. More... | |
| struct | PowerLPF3_LfoscCompensationProfile |
| LFOSC Compensation Profile structure. More... | |
Macros | |
| #define | PowerCC27XX_RESUMETIMESTANDBY (400U) |
| #define | PowerCC27XX_TOTALTIMESTANDBY (500U) |
| #define | PowerCC27XX_WAKEDELAYSTANDBY (150U) |
| #define | PowerCC27XX_HFXT_THRESHOLD_TEMP_DEFAULT (-40) |
| #define | PowerLPF3_PERIPH_GPIO (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_GPIO_S) |
| #define | PowerLPF3_PERIPH_UART0 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_UART0_S) |
| #define | PowerLPF3_PERIPH_UART1 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_UART1_S) |
| #define | PowerLPF3_PERIPH_I2C0 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_I2C0_S) |
| #define | PowerLPF3_PERIPH_SPI0 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_SPI0_S) |
| #define | PowerLPF3_PERIPH_SPI1 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_SPI1_S) |
| #define | PowerLPF3_PERIPH_ADC0 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_ADC0_S) |
| #define | PowerLPF3_PERIPH_AES (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_LAES_S) |
| #define | PowerLPF3_PERIPH_DMA (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_DMA_S) |
| #define | PowerLPF3_PERIPH_I2S (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_I2S_S) |
| #define | PowerLPF3_PERIPH_LGPT0 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_LGPT0_S) |
| #define | PowerLPF3_PERIPH_LGPT1 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_LGPT1_S) |
| #define | PowerLPF3_PERIPH_LGPT2 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_LGPT2_S) |
| #define | PowerLPF3_PERIPH_LGPT3 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_LGPT3_S) |
| #define | PowerLPF3_PERIPH_HSM (PowerCC27XX_PERIPH_GROUP_CLKCTL1 | CLKCTL_DESCEX1_HSM_S) |
| #define | PowerLPF3_PERIPH_APU (PowerCC27XX_PERIPH_GROUP_CLKCTL1 | CLKCTL_DESCEX1_APU_S) |
| #define | PowerLPF3_PERIPH_MCAN (PowerCC27XX_PERIPH_GROUP_CLKCTL1 | CLKCTL_DESCEX1_MCAN_S) |
| #define | PowerLPF3_PERIPH_LFRD_TRC (PowerCC27XX_PERIPH_GROUP_LRFD | LRFDDBELL_CLKCTL_TRC_S) |
| #define | PowerLPF3_PERIPH_LFRD_S2RRAM (PowerCC27XX_PERIPH_GROUP_LRFD | LRFDDBELL_CLKCTL_S2RRAM_S) |
| #define | PowerLPF3_STANDBY (0x1U) |
| #define | PowerLPF3_ENTERING_STANDBY ((uint_fast16_t)((uint_fast16_t)1U << 0)) |
| #define | PowerLPF3_ENTERING_SHUTDOWN ((uint_fast16_t)((uint_fast16_t)1U << 1)) |
| #define | PowerLPF3_AWAKE_STANDBY ((uint_fast16_t)((uint_fast16_t)1U << 2)) |
| #define | PowerLPF3_HFXT_AVAILABLE ((uint_fast16_t)((uint_fast16_t)1U << 3)) |
| #define | PowerLPF3_LFCLK_SWITCHED ((uint_fast16_t)((uint_fast16_t)1U << 4)) |
Typedefs | |
| typedef void(* | PowerLPF3_StartInitialHfxtAmpCompFxn) (void) |
| Function pointer to PowerLPF3_startInitialHfxtAmpComp() or NULL. More... | |
Enumerations | |
| enum | PowerLPF3_ResetReason { PowerLPF3_RESET_SHUTDOWN_IO = PMCTL_RESET_SHUTDOWN_IO, PowerLPF3_RESET_SHUTDOWN_SWD = PMCTL_RESET_SHUTDOWN_SWD, PowerLPF3_RESET_WATCHDOG = PMCTL_RESET_WATCHDOG, PowerLPF3_RESET_SYSTEM = PMCTL_RESET_SYSTEM, PowerLPF3_RESET_CPU = PMCTL_RESET_CPU, PowerLPF3_RESET_LOCKUP = PMCTL_RESET_LOCKUP, PowerLPF3_RESET_TSD = PMCTL_RESET_TSD, PowerLPF3_RESET_SWD = PMCTL_RESET_SWD, PowerLPF3_RESET_LFXT = PMCTL_RESET_LFXT, PowerLPF3_RESET_VDDR = PMCTL_RESET_VDDR, PowerLPF3_RESET_VDDS = PMCTL_RESET_VDDS, PowerLPF3_RESET_PIN = PMCTL_RESET_PIN, PowerLPF3_RESET_POR = PMCTL_RESET_POR, PowerLPF3_RESET_UNKNOWN = UINT32_MAX, PowerLPF3_RESET_SHUTDOWN_IO = PMCTL_RESET_SHUTDOWN_IO, PowerLPF3_RESET_SHUTDOWN_SWD = PMCTL_RESET_SHUTDOWN_SWD, PowerLPF3_RESET_WATCHDOG = PMCTL_RESET_WATCHDOG, PowerLPF3_RESET_SYSTEM = PMCTL_RESET_SYSTEM, PowerLPF3_RESET_CPU = PMCTL_RESET_CPU, PowerLPF3_RESET_LOCKUP = PMCTL_RESET_LOCKUP, PowerLPF3_RESET_TSD = PMCTL_RESET_TSD, PowerLPF3_RESET_SWD = PMCTL_RESET_SWD, PowerLPF3_RESET_LFXT = PMCTL_RESET_LFXT, PowerLPF3_RESET_VDDR = PMCTL_RESET_VDDR, PowerLPF3_RESET_VDDS = PMCTL_RESET_VDDS, PowerLPF3_RESET_PIN = PMCTL_RESET_PIN, PowerLPF3_RESET_POR = PMCTL_RESET_POR, PowerLPF3_RESET_UNKNOWN = UINT32_MAX } |
| Reasons the device has booted or rebooted. More... | |
| enum | PowerLPF3_AfoscFreq { PowerLPF3_AFOSC_FREQ_80MHZ = 80000000U, PowerLPF3_AFOSC_FREQ_90P3168MHZ = 90316800U, PowerLPF3_AFOSC_FREQ_98P304MHZ = 98304000U } |
| The possible frequencies to configure the AFOSC to. More... | |
| enum | PowerLPF3_LfoscCompensationPpmRequirement { PowerLPF3_LFOSC_PPM_500 = 500U } |
| Possible LFOSC PPM requirements to be used by the LFOSC compensation. More... | |
Functions | |
| void | PowerCC27XX_doWFI (void) |
| The wait for interrupt (WFI) policy. More... | |
| PowerLPF3_ResetReason | PowerLPF3_getResetReason (void) |
| Returns the reason for the most recent reset or wakeup. More... | |
| void | PowerLPF3_releaseLatches (void) |
| Unlatch all IOs. More... | |
| void | PowerCC27XX_standbyPolicy (void) |
| The STANDBY Power Policy. More... | |
| void | PowerLPF3_selectLFOSC (void) |
| Select LFOSC as LFCLK source. More... | |
| void | PowerLPF3_selectLFXT (void) |
| Select LFXT as LFCLK source. More... | |
| void | PowerLPF3_selectEXTLF (void) |
| Select EXTLF as LFCLK source. More... | |
| void | PowerLPF3_initHFXTCompensation (int32_t P0, int32_t P1, int32_t P2, int32_t P3, uint8_t shift, bool fcfgInsertion) |
| Initialize HFXT temperature compensation coefficients. More... | |
| void | PowerLPF3_enableHFXTCompensation (int16_t tempThreshold, int16_t tempDelta) |
| Enable HFXT temperature compensation. More... | |
| void | PowerLPF3_disableHFXTCompensation (void) |
| Disable HFXT temperature compensation. More... | |
| void | PowerLPF3_forceHFXTCompensationUpdate (void) |
| Force HFXT temperature compensation update. More... | |
| uint32_t | PowerLPF3_getHFXTCompensationRatio (void) |
| Get the current HFXT compensation ratio. More... | |
| int_fast16_t | PowerLPF3_startAFOSC (PowerLPF3_AfoscFreq frequency) |
| Start the AFOSC. More... | |
| void | PowerLPF3_stopAFOSC (void) |
| Stop the AFOSC. More... | |
| void | PowerLPF3_startInitialHfxtAmpComp (void) |
| Start initial compensation of the HFXT amplitude. More... | |
| int_fast8_t | PowerLPF3_getHfxtAmpAdjustment (void) |
| Check if HFXT amplitude needs to be adjusted. More... | |
| void | PowerLPF3_adjustHfxtAmp (int_fast8_t adjustment) |
| Adjust the HFXT amplitude. More... | |
| void | PowerLPF3_initLfoscCompensation (void) |
| Initialize LFOSC Compensation. More... | |
| void | PowerLPF3_setLfoscCompensationProfile (const PowerLPF3_LfoscCompensationProfile *profile) |
| Set LFOSC Compensation Profile. More... | |
| void | PowerLPF3_enableLfoscCompensation (void) |
| Enable LFOSC Compensation. More... | |
| void | PowerLPF3_disableLfoscCompensation (void) |
| Disable LFOSC Compensation. More... | |
| int_fast16_t | PowerLPF3_sleep (uint32_t nextEventTimeUs) |
| Transition the device into standby and configure RTC to wakeup the device ahead of a specified time. More... | |
| bool | PowerLPF3_isLfincFilterAllowingStandby (void) |
| Checks if the LFINC filter is ready to go to standby or not. More... | |
| void | PowerCC27XX_schedulerDisable (void) |
| void | PowerCC27XX_schedulerRestore (void) |
| #define PowerCC27XX_RESUMETIMESTANDBY (400U) |
The latency to reserve for resume from STANDBY (usec).
| #define PowerCC27XX_TOTALTIMESTANDBY (500U) |
The total latency to reserve for entry to and exit from STANDBY (usec).
| #define PowerCC27XX_WAKEDELAYSTANDBY (150U) |
The initial delay when waking from STANDBY (usec).
| #define PowerCC27XX_HFXT_THRESHOLD_TEMP_DEFAULT (-40) |
| #define PowerLPF3_PERIPH_GPIO (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_GPIO_S) |
Resource ID: General Purpose I/O
| #define PowerLPF3_PERIPH_UART0 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_UART0_S) |
Resource ID: UART 0
| #define PowerLPF3_PERIPH_UART1 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_UART1_S) |
Resource ID: UART 1
| #define PowerLPF3_PERIPH_I2C0 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_I2C0_S) |
Resource ID: I2C 0
| #define PowerLPF3_PERIPH_SPI0 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_SPI0_S) |
Resource ID: SPI 0
| #define PowerLPF3_PERIPH_SPI1 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_SPI1_S) |
Resource ID: SPI 1
| #define PowerLPF3_PERIPH_ADC0 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_ADC0_S) |
Resource ID: ADC
| #define PowerLPF3_PERIPH_AES (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_LAES_S) |
Resource ID: AES Security Module
| #define PowerLPF3_PERIPH_DMA (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_DMA_S) |
Resource ID: uDMA Controller
| #define PowerLPF3_PERIPH_I2S (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_I2S_S) |
Resource ID: I2S
| #define PowerLPF3_PERIPH_LGPT0 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_LGPT0_S) |
Resource ID: General Purpose Timer 0
| #define PowerLPF3_PERIPH_LGPT1 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_LGPT1_S) |
Resource ID: General Purpose Timer 1
| #define PowerLPF3_PERIPH_LGPT2 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_LGPT2_S) |
Resource ID: General Purpose Timer 2
| #define PowerLPF3_PERIPH_LGPT3 (PowerCC27XX_PERIPH_GROUP_CLKCTL0 | CLKCTL_DESCEX0_LGPT3_S) |
Resource ID: General Purpose Timer 3
| #define PowerLPF3_PERIPH_HSM (PowerCC27XX_PERIPH_GROUP_CLKCTL1 | CLKCTL_DESCEX1_HSM_S) |
Resource ID: Hardware Security Module
| #define PowerLPF3_PERIPH_APU (PowerCC27XX_PERIPH_GROUP_CLKCTL1 | CLKCTL_DESCEX1_APU_S) |
Resource ID: Algorithm Processing Unit
| #define PowerLPF3_PERIPH_MCAN (PowerCC27XX_PERIPH_GROUP_CLKCTL1 | CLKCTL_DESCEX1_MCAN_S) |
Resource ID: MCAN
| #define PowerLPF3_PERIPH_LFRD_TRC (PowerCC27XX_PERIPH_GROUP_LRFD | LRFDDBELL_CLKCTL_TRC_S) |
Resource ID: LRFD Tracer
| #define PowerLPF3_PERIPH_LFRD_S2RRAM (PowerCC27XX_PERIPH_GROUP_LRFD | LRFDDBELL_CLKCTL_S2RRAM_S) |
Resource ID: LRFD S2R RAM
| #define PowerLPF3_STANDBY (0x1U) |
The STANDBY sleep state
| #define PowerLPF3_ENTERING_STANDBY ((uint_fast16_t)((uint_fast16_t)1U << 0)) |
Power event: The device is entering the STANDBY sleep state
| #define PowerLPF3_ENTERING_SHUTDOWN ((uint_fast16_t)((uint_fast16_t)1U << 1)) |
Power event: The device is entering the SHUTDOWN state
| #define PowerLPF3_AWAKE_STANDBY ((uint_fast16_t)((uint_fast16_t)1U << 2)) |
Power event: The device is waking up from the STANDBY sleep state
| #define PowerLPF3_HFXT_AVAILABLE ((uint_fast16_t)((uint_fast16_t)1U << 3)) |
Power event: The high frequency (HF) crystal oscillator is now available for use (HFXT) by the digital domain
| #define PowerLPF3_LFCLK_SWITCHED ((uint_fast16_t)((uint_fast16_t)1U << 4)) |
Power event: The system has switched to the low frequency clock source configured in CCFG
| typedef void(* PowerLPF3_StartInitialHfxtAmpCompFxn) (void) |
Function pointer to PowerLPF3_startInitialHfxtAmpComp() or NULL.
This type is only allowed to have the value NULL or be a pointer to PowerLPF3_startInitialHfxtAmpComp().
Reasons the device has booted or rebooted.
| enum PowerLPF3_AfoscFreq |
| void PowerCC27XX_doWFI | ( | void | ) |
The wait for interrupt (WFI) policy.
This is a lightweight Power Policy which simply invokes CPU wait for interrupt.
This policy can be selected statically via the policyFxn pointer in the PowerCC27XX_Config structure, or dynamically at runtime, via Power_setPolicy().
| PowerLPF3_ResetReason PowerLPF3_getResetReason | ( | void | ) |
Returns the reason for the most recent reset or wakeup.
| void PowerLPF3_releaseLatches | ( | void | ) |
Unlatch all IOs.
This function releases the latches on all frozen IOs. This function should be called after waking up from shutdown and reconfiguring the IO state so as not to cause glitches.
| void PowerCC27XX_standbyPolicy | ( | void | ) |
The STANDBY Power Policy.
This is an agressive Power Policy, which considers active constraints, sleep state transition latencies, and time until the next scheduled work, and automatically transitions the device into the deepest sleep state possible.
The first goal is to enter STANDBY; if that is not appropriate given current conditions (e.g., the sleep transition latency is greater greater than the time until the next scheduled Clock event), then the secondary goal is the IDLE state; if that is disallowed (e.g., if the PowerLPF3_DISALLOW_IDLE constraint is declared), then the policy will fallback and simply invoke WFI, to clock gate the CPU until the next interrupt.
In order for this policy to run, it must be selected as the Power Policy (either by being specified as the 'policyFxn' in the PowerCC27XX_Config structure, or specified at runtime with Power_setPolicy()), and the Power Policy must be enabled (either via 'enablePolicy' in the PowerCC27XX_Config structure, or via a call to Power_enablePolicy() at runtime).
| void PowerLPF3_selectLFOSC | ( | void | ) |
Select LFOSC as LFCLK source.
Turn on the LFOSC and choose it as LFCLK source. Once LFCLK has switched, the PowerLPF3_LFCLK_SWITCHED notification will be issued and all subscribers to this event will be notified.
| void PowerLPF3_selectLFXT | ( | void | ) |
Select LFXT as LFCLK source.
Turn on the LFXT and choose it as LFCLK source. Once LFCLK has switched, the PowerLPF3_LFCLK_SWITCHED notification will be issued and all subscribers to this event will be notified.
| void PowerLPF3_selectEXTLF | ( | void | ) |
Select EXTLF as LFCLK source.
Choose an external 31.25 kHz square wave as the LFCLK source as input. Once LFCLK has switched, the PowerLPF3_LFCLK_SWITCHED notification will be issued and all subscribers to this event will be notified.
This function requires the following symbols to be defined.
PowerLPF3_extlfPin (uint8_t): The DIO number of the pin to be used as the EXTLF pin.PowerLPf3_extlfPinMux (uint8_t): Mux value used to mux the EXTLF signal to PowerLPF3_extlfPin. If using SysConfig, the symbols will be defined in ti_drivers_config.c.| void PowerLPF3_initHFXTCompensation | ( | int32_t | P0, |
| int32_t | P1, | ||
| int32_t | P2, | ||
| int32_t | P3, | ||
| uint8_t | shift, | ||
| bool | fcfgInsertion | ||
| ) |
Initialize HFXT temperature compensation coefficients.
Initialize the parameters used for HFXT temperature coefficients. They approximate the ppm offset of the HFXT frequency with the following polynomial as a function of temperature (degC), where P_3 = P3 / 2^shift, P_2 = P2 / 2^shift, etc.. ppm(T) = P_3*T^3 + P_2*T^2 + P_1*T + P_0
| [in] | P0 | 0th-order coefficient, multiplied by 2^shift |
| [in] | P1 | 1st-order coefficient, multiplied by 2^shift |
| [in] | P2 | 2nd-order coefficient, multiplied by 2^shift |
| [in] | P3 | 3rd-order coefficient, multiplied by 2^shift |
| [in] | shift | Shift-value for scaling fixed-point coefficients |
| [in] | fcfgInsertion | Boolean used to indicate presence of HFXT FCFG data. |
| void PowerLPF3_enableHFXTCompensation | ( | int16_t | tempThreshold, |
| int16_t | tempDelta | ||
| ) |
Enable HFXT temperature compensation.
Enable automatic compensation for temperature-based frequency-drift of HFXT
This function should only be called once, but can be invoked again if PowerLPF3_enableHFXTCompensation has been called
| [in] | tempThreshold | Threshold above which temperature compensation will be performed. This can be useful to save power consumption if HFXT performance is acceptable at low temperatures, and only required at high temperatures. If the threshold is set to for example 80 degrees, then the first compensation will occur once the temperature reaches 81 degrees. Units in degrees Celsius. |
| [in] | tempDelta | Delta describing how much the temperature can drift before compensation is applied. If compensation is performed at 81 degrees, and the delta is set to 5, then a re-compensation is performed at either 76 degrees or 86 degrees, depending on which temperature state occurs first. Units in degrees Celsius. |
| void PowerLPF3_disableHFXTCompensation | ( | void | ) |
Disable HFXT temperature compensation.
Disable automatic compensation for temperature-based frequency-drift of HFXT
| void PowerLPF3_forceHFXTCompensationUpdate | ( | void | ) |
Force HFXT temperature compensation update.
Should be called after releasing the PowerLPF3_DISALLOW_SWTCXO constraint to ensure the correct HFXT frequency.
| uint32_t PowerLPF3_getHFXTCompensationRatio | ( | void | ) |
Get the current HFXT compensation ratio.
The compensation ratio is the ratio between the nominal HFXT freqeuncy (48MHz) and the currently expected HFXT frequency.
The format of the ratio is 4.22 (4 integer bits and 22 fractional bits).
48MHz*2^22/f where f is the currently expected HFXT frequency. | int_fast16_t PowerLPF3_startAFOSC | ( | PowerLPF3_AfoscFreq | frequency | ) |
Start the AFOSC.
This function will start the AFOSC if it is not already running. The AFOSC will be configured to the specified frequency and it will be configured to automatically be disabled when entering STANDBY, meaning this function will need to be called again after waking up from STANDBY.
If the AFOSC is already running, no change will be done, and an error code will be returned. This indicates that another SW component is "owning" the AFOSC.
| [in] | frequency | The desired frequency of the AFOSC. |
| void PowerLPF3_stopAFOSC | ( | void | ) |
| void PowerLPF3_startInitialHfxtAmpComp | ( | void | ) |
Start initial compensation of the HFXT amplitude.
| int_fast8_t PowerLPF3_getHfxtAmpAdjustment | ( | void | ) |
Check if HFXT amplitude needs to be adjusted.
The HFXT amplitude needs to regularly be checked and if needed adjusted. The Power driver will check the amplitude and adjust it when the device enters standby. However if the device does not enter standby often enough, then additional checks and adjustments are needed.
This function can be used to check if adjustment of the amplitude is needed, and PowerLPF3_adjustHfxtAmp() can be used to adjust the amplitude if needed.
| void PowerLPF3_adjustHfxtAmp | ( | int_fast8_t | adjustment | ) |
Adjust the HFXT amplitude.
This function is to be used to adjust the HFXT amplitude if an adjustment is needed according to PowerLPF3_getHfxtAmpAdjustment(). Please refer to the documentation of PowerLPF3_getHfxtAmpAdjustment() for more details.
| adjustment | the value returned by PowerLPF3_getHfxtAmpAdjustment(). No other value is allowed. |
| void PowerLPF3_initLfoscCompensation | ( | void | ) |
Initialize LFOSC Compensation.
This function initializes the internal state of the LFOSC compensation. It must be called before calling any other LFOSC Compensation functions. Calling this function multiple times will only have an effect the first time.
Calling context: Task, Main.
| void PowerLPF3_setLfoscCompensationProfile | ( | const PowerLPF3_LfoscCompensationProfile * | profile | ) |
Set LFOSC Compensation Profile.
Set the LFOSC Compensation profile to use when LFOSC compensation is enabled.
This must be called before enabling LFOSC compensation, and it can be called while the compensation is enabled to change the profile to be used for the compensation.
Calling context: Task, Main.
| [in] | profile | Pointer to the LFOSC Compensation Profile to be used. The profile data will be copied to an internal structure, meaning the profile can be changed or deleted after this function returns without affecting the LFOSC compensation. |
| void PowerLPF3_enableLfoscCompensation | ( | void | ) |
Enable LFOSC Compensation.
Enable compensation of LFOSC.
This function should only be called once, but can be invoked again if PowerLPF3_disableLfoscCompensation() has been called.
Calling context: Task, Main.
| void PowerLPF3_disableLfoscCompensation | ( | void | ) |
Disable LFOSC Compensation.
Disable compensation of LFOSC.
Calling context: Task, Main.
| int_fast16_t PowerLPF3_sleep | ( | uint32_t | nextEventTimeUs | ) |
Transition the device into standby and configure RTC to wakeup the device ahead of a specified time.
This function is called from the power policy when the decision has been made to put the device in standby. This function returns to the caller (the policy function) after the device wakes up from standby.
The function is doing the following:
nextEventTimeUs. This is to ensure that the device is ready to service the event at time nextEventTimeUs.nextEventTimeUs is far enough in the future. If standby is not allowed and idle is allowed, the device will enter idle instead. In this case nextEventTimeUs will be ignored, so it is the caller's responsibility to set up the necessary wake up source in case the device enters idle instead of standby. For example setting up SysTick or SysTimer. If idle is also not allowed, the function will return immediately.| [in] | nextEventTimeUs | the SysTimer time of the next event, this must be far enough in the future. |
| Power_SOK | on success, the device has slept and is awake again. |
| Power_EFAIL | if an error occurred during client notifications, or if a general failure occurred. |
| bool PowerLPF3_isLfincFilterAllowingStandby | ( | void | ) |
Checks if the LFINC filter is ready to go to standby or not.
| void PowerCC27XX_schedulerDisable | ( | void | ) |
| void PowerCC27XX_schedulerRestore | ( | void | ) |