RTCC - Real Timer Counter/Calendar

Description

Real Time Counter and Calendar (RTCC) Peripheral API.

This module contains functions to control the RTCC peripheral of Silicon Labs 32-bit MCUs and SoCs. The RTCC ensures timekeeping in low energy modes. The RTCC also includes a BCD calendar mode for easy time and date keeping.

Data Structures

struct  RTCC_Init_TypeDef
 RTCC initialization structure.
 
struct  RTCC_CCChConf_TypeDef
 RTCC capture/compare channel configuration structure.
 

Functions

uint32_t RTCC_ChannelCompareValueGet (int ch)
 Get RTCC compare register value for selected channel.
 
void RTCC_ChannelCompareValueSet (int ch, uint32_t value)
 Set RTCC compare register value for selected channel.
 
uint32_t RTCC_ChannelCaptureValueGet (int ch)
 Get RTCC input capture register value for selected channel.
 
uint32_t RTCC_ChannelCCVGet (int ch)
 Get RTCC capture/compare register value for selected channel.
 
void RTCC_ChannelCCVSet (int ch, uint32_t value)
 Set RTCC capture/compare register value for selected channel.
 
uint32_t RTCC_ChannelDateGet (int ch)
 Get the calendar DATE register content for selected channel.
 
void RTCC_ChannelDateSet (int ch, uint32_t date)
 Set calendar DATE register for selected channel.
 
uint32_t RTCC_ChannelTimeGet (int ch)
 Get calendar TIME register content for selected channel.
 
void RTCC_ChannelTimeSet (int ch, uint32_t time)
 Set calendar TIME register for selected channel.
 
uint32_t RTCC_CombinedCounterGet (void)
 Get combined CNT/PRECNT register content.
 
uint32_t RTCC_CounterGet (void)
 Get RTCC counter value.
 
void RTCC_CounterSet (uint32_t value)
 Set RTCC CNT counter.
 
uint32_t RTCC_DateGet (void)
 Get DATE register value.
 
void RTCC_DateSet (uint32_t date)
 Set RTCC DATE register.
 
void RTCC_EM4WakeupEnable (bool enable)
 Enable/disable EM4 wakeup capability.
 
void RTCC_Enable (bool enable)
 Enable/disable RTCC counting.
 
void RTCC_Init (const RTCC_Init_TypeDef *init)
 Initialize RTCC.
 
void RTCC_ChannelInit (int ch, RTCC_CCChConf_TypeDef const *confPtr)
 Configure the selected capture/compare channel of the RTCC.
 
void RTCC_IntClear (uint32_t flags)
 Clear one or more pending RTCC interrupts.
 
void RTCC_IntDisable (uint32_t flags)
 Disable one or more RTCC interrupts.
 
void RTCC_IntEnable (uint32_t flags)
 Enable one or more RTCC interrupts.
 
uint32_t RTCC_IntGet (void)
 Get pending RTCC interrupt flags.
 
uint32_t RTCC_IntGetEnabled (void)
 Get enabled and pending RTCC interrupt flags.
 
void RTCC_IntSet (uint32_t flags)
 Set one or more pending RTCC interrupts from SW.
 
void RTCC_Lock (void)
 Lock RTCC registers.
 
uint32_t RTCC_PreCounterGet (void)
 Get RTCC pre-counter value.
 
void RTCC_PreCounterSet (uint32_t preCntVal)
 Set RTCC pre-counter value.
 
void RTCC_Reset (void)
 Restore RTCC to its reset state.
 
void RTCC_RetentionRamPowerDown (void)
 Power down retention RAM.
 
void RTCC_StatusClear (void)
 Clear the STATUS register.
 
uint32_t RTCC_StatusGet (void)
 Get STATUS register value.
 
uint32_t RTCC_TimeGet (void)
 Get TIME register value.
 
void RTCC_TimeSet (uint32_t time)
 Set RTCC TIME register.
 
void RTCC_Unlock (void)
 Unlock RTCC registers.
 

Macros

#define RTCC_INIT_DEFAULT
 Default RTCC initialization structure.
 
#define RTCC_CH_INIT_COMPARE_DEFAULT
 Default RTCC channel output compare initialization structure.
 
#define RTCC_CH_INIT_CAPTURE_DEFAULT
 Default RTCC channel input capture initialization structure.
 
#define RTCC_CC_NUM   3UL
 Number of RTCC capture/compare channels.
 
#define RTCC_CH_VALID(ch)   ((unsigned)(ch) < RTCC_CC_NUM)
 Validation of valid RTCC channel for assert statements.
 

Typedefs

typedef uint8_t RTCC_PRSSel_TypeDef
 PRS channel number.
 

Enumerations

enum  RTCC_CntMode_TypeDef {
  rtccCntModeNormal = _RTCC_CTRL_CNTMODE_NORMAL,
  rtccCntModeCalendar = _RTCC_CTRL_CNTMODE_CALENDAR
}
 Operational mode of the counter.
 
enum  RTCC_CntPresc_TypeDef {
  rtccCntPresc_1 = _RTCC_CTRL_CNTPRESC_DIV1,
  rtccCntPresc_2 = _RTCC_CTRL_CNTPRESC_DIV2,
  rtccCntPresc_4 = _RTCC_CTRL_CNTPRESC_DIV4,
  rtccCntPresc_8 = _RTCC_CTRL_CNTPRESC_DIV8,
  rtccCntPresc_16 = _RTCC_CTRL_CNTPRESC_DIV16,
  rtccCntPresc_32 = _RTCC_CTRL_CNTPRESC_DIV32,
  rtccCntPresc_64 = _RTCC_CTRL_CNTPRESC_DIV64,
  rtccCntPresc_128 = _RTCC_CTRL_CNTPRESC_DIV128,
  rtccCntPresc_256 = _RTCC_CTRL_CNTPRESC_DIV256,
  rtccCntPresc_512 = _RTCC_CTRL_CNTPRESC_DIV512,
  rtccCntPresc_1024 = _RTCC_CTRL_CNTPRESC_DIV1024,
  rtccCntPresc_2048 = _RTCC_CTRL_CNTPRESC_DIV2048,
  rtccCntPresc_4096 = _RTCC_CTRL_CNTPRESC_DIV4096,
  rtccCntPresc_8192 = _RTCC_CTRL_CNTPRESC_DIV8192,
  rtccCntPresc_16384 = _RTCC_CTRL_CNTPRESC_DIV16384,
  rtccCntPresc_32768 = _RTCC_CTRL_CNTPRESC_DIV32768
}
 Counter prescaler selection.
 
enum  RTCC_PrescMode_TypeDef {
  rtccCntTickPresc = _RTCC_CTRL_CNTTICK_PRESC,
  rtccCntTickCCV0Match = _RTCC_CTRL_CNTTICK_CCV0MATCH
}
 Prescaler mode of the RTCC counter.
 
enum  RTCC_CapComChMode_TypeDef {
  rtccCapComChModeOff = _RTCC_CC_CTRL_MODE_OFF,
  rtccCapComChModeCapture = _RTCC_CC_CTRL_MODE_INPUTCAPTURE,
  rtccCapComChModeCompare = _RTCC_CC_CTRL_MODE_OUTPUTCOMPARE
}
 Capture/Compare channel mode.
 
enum  RTCC_CompMatchOutAction_TypeDef {
  rtccCompMatchOutActionPulse = _RTCC_CC_CTRL_CMOA_PULSE,
  rtccCompMatchOutActionToggle = _RTCC_CC_CTRL_CMOA_TOGGLE,
  rtccCompMatchOutActionClear = _RTCC_CC_CTRL_CMOA_CLEAR,
  rtccCompMatchOutActionSet = _RTCC_CC_CTRL_CMOA_SET
}
 Compare match output action mode.
 
enum  RTCC_InEdgeSel_TypeDef {
  rtccInEdgeRising = _RTCC_CC_CTRL_ICEDGE_RISING,
  rtccInEdgeFalling = _RTCC_CC_CTRL_ICEDGE_FALLING,
  rtccInEdgeBoth = _RTCC_CC_CTRL_ICEDGE_BOTH,
  rtccInEdgeNone = _RTCC_CC_CTRL_ICEDGE_NONE
}
 Input edge select.
 
enum  RTCC_CompBase_TypeDef {
  rtccCompBaseCnt = _RTCC_CC_CTRL_COMPBASE_CNT,
  rtccCompBasePreCnt = _RTCC_CC_CTRL_COMPBASE_PRECNT
}
 Capture/Compare channel compare mode.
 
enum  RTCC_DayCompareMode_TypeDef {
  rtccDayCompareModeMonth = _RTCC_CC_CTRL_DAYCC_MONTH,
  rtccDayCompareModeWeek = _RTCC_CC_CTRL_DAYCC_WEEK
}
 Day compare mode.
 

Function Documentation

◆ RTCC_ChannelCompareValueGet()

uint32_t RTCC_ChannelCompareValueGet ( int  ch)
inline

Get RTCC compare register value for selected channel.

Parameters
[in]chChannel selector.
Returns
Compare register value.

◆ RTCC_ChannelCompareValueSet()

void RTCC_ChannelCompareValueSet ( int  ch,
uint32_t  value 
)
inline

Set RTCC compare register value for selected channel.

Parameters
[in]chChannel selector.
[in]valueCompare register value

◆ RTCC_ChannelCaptureValueGet()

uint32_t RTCC_ChannelCaptureValueGet ( int  ch)
inline

Get RTCC input capture register value for selected channel.

Parameters
[in]chChannel selector.
Returns
Capture register value.

◆ RTCC_ChannelCCVGet()

uint32_t RTCC_ChannelCCVGet ( int  ch)
inline

Get RTCC capture/compare register value for selected channel.

For parts with separate capture compare value registers, this function returns the compare value.

Parameters
[in]chChannel selector.
Returns
Capture/compare register value.

◆ RTCC_ChannelCCVSet()

void RTCC_ChannelCCVSet ( int  ch,
uint32_t  value 
)
inline

Set RTCC capture/compare register value for selected channel.

For parts with separate capture compare value registers, this function sets the compare value.

Parameters
[in]chChannel selector.
[in]valueCapture/compare register value

◆ RTCC_ChannelDateGet()

uint32_t RTCC_ChannelDateGet ( int  ch)
inline

Get the calendar DATE register content for selected channel.

Parameters
[in]chChannel selector.
Returns
DATE register value.

◆ RTCC_ChannelDateSet()

void RTCC_ChannelDateSet ( int  ch,
uint32_t  date 
)
inline

Set calendar DATE register for selected channel.

Parameters
[in]chChannel selector.
[in]dateDATE value.

◆ RTCC_ChannelTimeGet()

uint32_t RTCC_ChannelTimeGet ( int  ch)
inline

Get calendar TIME register content for selected channel.

Parameters
[in]chChannel selector.
Returns
TIME register value.

◆ RTCC_ChannelTimeSet()

void RTCC_ChannelTimeSet ( int  ch,
uint32_t  time 
)
inline

Set calendar TIME register for selected channel.

Parameters
[in]chChannel selector.
[in]timeTIME value.

◆ RTCC_CombinedCounterGet()

uint32_t RTCC_CombinedCounterGet ( void  )
inline

Get combined CNT/PRECNT register content.

Returns
CNT/PRECNT register value.

◆ RTCC_CounterGet()

uint32_t RTCC_CounterGet ( void  )
inline

Get RTCC counter value.

Returns
Current RTCC counter value.

◆ RTCC_CounterSet()

void RTCC_CounterSet ( uint32_t  value)
inline

Set RTCC CNT counter.

Parameters
[in]valueCNT value.

◆ RTCC_DateGet()

uint32_t RTCC_DateGet ( void  )
inline

Get DATE register value.

Returns
Current DATE register value.

◆ RTCC_DateSet()

void RTCC_DateSet ( uint32_t  date)
inline

Set RTCC DATE register.

Parameters
[in]dateDATE value.

◆ RTCC_EM4WakeupEnable()

void RTCC_EM4WakeupEnable ( bool  enable)
inline

Enable/disable EM4 wakeup capability.

Parameters
[in]enableSet to true to enable EM4 wakeup, set to false otherwise.

◆ RTCC_Enable()

void RTCC_Enable ( bool  enable)

Enable/disable RTCC counting.

Parameters
[in]enableTrue to enable RTCC counting, false to disable counting.

◆ RTCC_Init()

void RTCC_Init ( const RTCC_Init_TypeDef init)

Initialize RTCC.

Note that the compare values must be set separately with RTCC_CompareSet(), which should probably be done prior to the use of this function if configuring the RTCC to start when initialization is completed.

Parameters
[in]initA pointer to the RTCC initialization structure.

◆ RTCC_ChannelInit()

void RTCC_ChannelInit ( int  ch,
RTCC_CCChConf_TypeDef const *  confPtr 
)

Configure the selected capture/compare channel of the RTCC.

Use this function to configure an RTCC channel. Select capture/compare mode, match output action, overflow output action, and PRS input configuration. See the configuration structure RTCC_CCChConf_TypeDef for more details.

Parameters
[in]chA channel selector.
[in]confPtrA pointer to the configuration structure.

Configure the selected capture/compare channel.

◆ RTCC_IntClear()

void RTCC_IntClear ( uint32_t  flags)
inline

Clear one or more pending RTCC interrupts.

Parameters
[in]flagsRTCC interrupt sources to clear. Use a set of interrupt flags OR-ed together to clear multiple interrupt sources.

◆ RTCC_IntDisable()

void RTCC_IntDisable ( uint32_t  flags)
inline

Disable one or more RTCC interrupts.

Parameters
[in]flagsRTCC interrupt sources to disable. Use a set of interrupt flags OR-ed together to disable multiple interrupt.

◆ RTCC_IntEnable()

void RTCC_IntEnable ( uint32_t  flags)
inline

Enable one or more RTCC interrupts.

Note
Depending on the use, a pending interrupt may already be set prior to enabling the interrupt. To ignore a pending interrupt, consider using RTCC_IntClear() prior to enabling the interrupt.
Parameters
[in]flagsRTCC interrupt sources to enable. Use a set of interrupt flags OR-ed together to set multiple interrupt.

◆ RTCC_IntGet()

uint32_t RTCC_IntGet ( void  )
inline

Get pending RTCC interrupt flags.

Note
Event bits are not cleared by using this function.
Returns
Pending RTCC interrupt sources. Returns a set of interrupt flags OR-ed together for the interrupt sources set.

◆ RTCC_IntGetEnabled()

uint32_t RTCC_IntGetEnabled ( void  )
inline

Get enabled and pending RTCC interrupt flags.

Useful for handling more interrupt sources in the same interrupt handler.

Returns
Pending and enabled RTCC interrupt sources. Returns a set of interrupt flags OR-ed together for the interrupt sources set.

◆ RTCC_IntSet()

void RTCC_IntSet ( uint32_t  flags)
inline

Set one or more pending RTCC interrupts from SW.

Parameters
[in]flagsRTCC interrupt sources to set to pending. Use a set of interrupt flags (RTCC_IFS_nnn).

◆ RTCC_Lock()

void RTCC_Lock ( void  )
inline

Lock RTCC registers.

Note
When RTCC registers are locked, RTCC_CTRL, RTCC_PRECNT, RTCC_CNT, RTCC_TIME, RTCC_DATE, RTCC_IEN, RTCC_POWERDOWN and RTCC_CCx_XXX registers cannot be written to.

◆ RTCC_PreCounterGet()

uint32_t RTCC_PreCounterGet ( void  )
inline

Get RTCC pre-counter value.

Returns
Current RTCC pre-counter value.

◆ RTCC_PreCounterSet()

void RTCC_PreCounterSet ( uint32_t  preCntVal)
inline

Set RTCC pre-counter value.

Parameters
[in]preCntValRTCC pre-counter value to be set.

◆ RTCC_Reset()

void RTCC_Reset ( void  )

Restore RTCC to its reset state.

◆ RTCC_RetentionRamPowerDown()

void RTCC_RetentionRamPowerDown ( void  )
inline

Power down retention RAM.

Note
Once retention RAM is powered down, it cannot be powered up again.

◆ RTCC_StatusClear()

void RTCC_StatusClear ( void  )

Clear the STATUS register.

◆ RTCC_StatusGet()

uint32_t RTCC_StatusGet ( void  )
inline

Get STATUS register value.

Returns
Current STATUS register value.

◆ RTCC_TimeGet()

uint32_t RTCC_TimeGet ( void  )
inline

Get TIME register value.

Returns
Current TIME register value.

◆ RTCC_TimeSet()

void RTCC_TimeSet ( uint32_t  time)
inline

Set RTCC TIME register.

Parameters
[in]timeTIME value.

◆ RTCC_Unlock()

void RTCC_Unlock ( void  )
inline

Unlock RTCC registers.

Note
When RTCC registers are locked, RTCC_CTRL, RTCC_PRECNT, RTCC_CNT, RTCC_TIME, RTCC_DATE, RTCC_IEN, RTCC_POWERDOWN and RTCC_CCx_XXX registers cannot be written to.

Macro Definition Documentation

◆ RTCC_INIT_DEFAULT

#define RTCC_INIT_DEFAULT
Value:
{ \
true, /* Start counting when initialization is done. */ \
false, /* Disable RTCC during debug halt. */ \
false, /* Disable pre-counter wrap on ch. 0 CCV value. */ \
false, /* Disable counter wrap on ch. 1 CCV value. */ \
rtccCntPresc_32, /* 977 us per tick. */ \
rtccCntTickPresc, /* Counter increments according to prescaler value.*/ \
false, /* No RTCC storage on backup mode entry. */ \
false, /* No RTCC oscillator failure detection. */ \
rtccCntModeNormal, /* Normal RTCC mode. */ \
false, /* No leap year correction. */ \
}

Default RTCC initialization structure.

◆ RTCC_CH_INIT_COMPARE_DEFAULT

#define RTCC_CH_INIT_COMPARE_DEFAULT
Value:
{ \
rtccCapComChModeCompare, /* Select output compare mode. */ \
rtccCompMatchOutActionPulse, /* Create pulse on compare match.*/ \
0, /* PRS channel 0 (not used). */ \
rtccInEdgeNone, /* No edge detection. */ \
rtccCompBaseCnt, /* Counter comparison base. */ \
0, /* No compare mask bits set. */ \
rtccDayCompareModeMonth /* Don't care */ \
}

Default RTCC channel output compare initialization structure.

◆ RTCC_CH_INIT_CAPTURE_DEFAULT

#define RTCC_CH_INIT_CAPTURE_DEFAULT
Value:
{ \
rtccCapComChModeCapture, /* Select input capture mode. */ \
rtccCompMatchOutActionPulse, /* Create pulse on capture. */ \
0, /* PRS channel 0. */ \
rtccInEdgeRising, /* Rising edge detection. */ \
rtccCompBaseCnt, /* Don't care. */ \
0, /* Don't care. */ \
rtccDayCompareModeMonth /* Don't care */ \
}

Default RTCC channel input capture initialization structure.

◆ RTCC_CC_NUM

#define RTCC_CC_NUM   3UL

Number of RTCC capture/compare channels.

◆ RTCC_CH_VALID

#define RTCC_CH_VALID (   ch)    ((unsigned)(ch) < RTCC_CC_NUM)

Validation of valid RTCC channel for assert statements.

Typedef Documentation

◆ RTCC_PRSSel_TypeDef

typedef uint8_t RTCC_PRSSel_TypeDef

PRS channel number.

This type is used when configuring input capture mode on a RTCC channel.

Enumeration Type Documentation

◆ RTCC_CntMode_TypeDef

Operational mode of the counter.

Enumerator
rtccCntModeNormal 

Normal counter mode.

The counter is incremented by 1 for each tick.

rtccCntModeCalendar 

Calendar mode.

Refer to the RTCC chapter of the Reference Manual for more details on the calendar mode.

◆ RTCC_CntPresc_TypeDef

Counter prescaler selection.

Enumerator
rtccCntPresc_1 

Divide clock by 1.


rtccCntPresc_2 

Divide clock by 2.


rtccCntPresc_4 

Divide clock by 4.


rtccCntPresc_8 

Divide clock by 8.


rtccCntPresc_16 

Divide clock by 16.


rtccCntPresc_32 

Divide clock by 32.


rtccCntPresc_64 

Divide clock by 64.


rtccCntPresc_128 

Divide clock by 128.


rtccCntPresc_256 

Divide clock by 256.


rtccCntPresc_512 

Divide clock by 512.


rtccCntPresc_1024 

Divide clock by 1024.


rtccCntPresc_2048 

Divide clock by 2048.


rtccCntPresc_4096 

Divide clock by 4096.


rtccCntPresc_8192 

Divide clock by 8192.


rtccCntPresc_16384 

Divide clock by 16384.

rtccCntPresc_32768 

Divide clock by 32768.

◆ RTCC_PrescMode_TypeDef

Prescaler mode of the RTCC counter.

Enumerator
rtccCntTickPresc 

CNT register ticks according to prescaler value.

rtccCntTickCCV0Match 

CNT register ticks when PRECNT matches the 15 least significant bits of ch.

0 CCV register.

◆ RTCC_CapComChMode_TypeDef

Capture/Compare channel mode.

Enumerator
rtccCapComChModeOff 

Capture/Compare channel turned off.

rtccCapComChModeCapture 

Capture mode.

rtccCapComChModeCompare 

Compare mode.

◆ RTCC_CompMatchOutAction_TypeDef

Compare match output action mode.

Enumerator
rtccCompMatchOutActionPulse 

Generate a pulse.

rtccCompMatchOutActionToggle 

Toggle output.

rtccCompMatchOutActionClear 

Clear output.

rtccCompMatchOutActionSet 

Set output.

◆ RTCC_InEdgeSel_TypeDef

Input edge select.

Enumerator
rtccInEdgeRising 

Rising edges detected.

rtccInEdgeFalling 

Falling edges detected.

rtccInEdgeBoth 

Both edges detected.

rtccInEdgeNone 

No edge detection, signal is left as is.

◆ RTCC_CompBase_TypeDef

Capture/Compare channel compare mode.

Enumerator
rtccCompBaseCnt 

CCVx is compared with the CNT register.

rtccCompBasePreCnt 

CCVx is compared with a CNT[16:0] and PRECNT[14:0].

◆ RTCC_DayCompareMode_TypeDef

Day compare mode.

Enumerator
rtccDayCompareModeMonth 

Day of month is selected for Capture/Compare.

rtccDayCompareModeWeek 

Day of week is selected for Capture/Compare.