SmartSnippets DA1459x SDK
Data Structures | Macros | Typedefs | Enumerations | Functions

Definition of API for the Real Time Clock Low Level Driver. More...

#include <stdbool.h>
#include <stdint.h>
#include "sdk_defs.h"

Go to the source code of this file.

Data Structures

struct  hw_rtc_calendar_t
 Calendar configuration for RTC. More...
 
struct  hw_rtc_alarm_calendar_t
 Alarm Calendar configuration for RTC. More...
 
struct  hw_rtc_time_t
 Time configuration for RTC. More...
 
struct  hw_rtc_config_pdc_evt_t
 RTC to Power Domain Controller event configuration. More...
 

Macros

#define HW_RTC_REG_GETF(reg, field)   ((RTC->reg & (RTC_##reg##_##field##_Msk)) >> (RTC_##reg##_##field##_Pos))
 Get the value of a field of an RTC register. More...
 
#define HW_RTC_REG_SETF(reg, field, val)
 Set the value of a field of a RTC register. More...
 
#define RTC_PDC_EVENT_PERIOD_MAX_VAL   0x1fff
 Maximum value of RTC to PDC event period (13bits). More...
 
#define RTC_ALL_STATUS_VALID   0xf
 All entries are valid in the RTC status register. More...
 
#define RTC_TIME_CLDR_STATUS_VALID   0x3
 Time and Calendar entries are valid in the RTC status register. More...
 
#define RTC_ALARM_TIME_CLDR_STATUS_VALID   0xc
 Alarm Time and Calendar entries are valid in the RTC status register. More...
 

Typedefs

typedef void(* hw_rtc_interrupt_cb) (uint8_t event)
 Callback that is fired on RTC events. More...
 

Enumerations

enum  HW_RTC_LP_CLK
 RTC lp_clk sources. More...
 
enum  HW_RTC_HOUR_MODE { RTC_24H_CLK = 0, RTC_12H_CLK }
 Hour clock mode. More...
 
enum  HW_RTC_DIV_DENOM { RTC_DIV_DENOM_1000 = 0x0, RTC_DIV_DENOM_1024 = 0x1 }
 RTC denominator for the fractional division of the source clock. More...
 
enum  HW_RTC_INTR {
  HW_RTC_INT_ALRM = RTC_RTC_INTERRUPT_MASK_REG_RTC_ALRM_INT_MSK_Msk, HW_RTC_INT_MONTH = RTC_RTC_INTERRUPT_MASK_REG_RTC_MNTH_INT_MSK_Msk, HW_RTC_INT_MDAY = RTC_RTC_INTERRUPT_MASK_REG_RTC_DATE_INT_MSK_Msk, HW_RTC_INT_HOUR = RTC_RTC_INTERRUPT_MASK_REG_RTC_HOUR_INT_MSK_Msk,
  HW_RTC_INT_MIN = RTC_RTC_INTERRUPT_MASK_REG_RTC_MIN_INT_MSK_Msk, HW_RTC_INT_SEC = RTC_RTC_INTERRUPT_MASK_REG_RTC_SEC_INT_MSK_Msk, HW_RTC_INT_HSEC = RTC_RTC_INTERRUPT_MASK_REG_RTC_HOS_INT_MSK_Msk
}
 RTC interrupt source. More...
 
enum  HW_RTC_EVENT {
  HW_RTC_EVENT_ALRM = RTC_RTC_EVENT_FLAGS_REG_RTC_EVENT_ALRM_Msk, HW_RTC_EVENT_MONTH = RTC_RTC_EVENT_FLAGS_REG_RTC_EVENT_MNTH_Msk, HW_RTC_EVENT_MDAY = RTC_RTC_EVENT_FLAGS_REG_RTC_EVENT_DATE_Msk, HW_RTC_EVENT_HOUR = RTC_RTC_EVENT_FLAGS_REG_RTC_EVENT_HOUR_Msk,
  HW_RTC_EVENT_MIN = RTC_RTC_EVENT_FLAGS_REG_RTC_EVENT_MIN_Msk, HW_RTC_EVENT_SEC = RTC_RTC_EVENT_FLAGS_REG_RTC_EVENT_SEC_Msk, HW_RTC_EVENT_HSEC = RTC_RTC_EVENT_FLAGS_REG_RTC_EVENT_HOS_Msk
}
 RTC Events. More...
 
enum  HW_RTC_ALARM_EN {
  HW_RTC_ALARM_MONTH = RTC_RTC_ALARM_ENABLE_REG_RTC_ALARM_MNTH_EN_Msk, HW_RTC_ALARM_MDAY = RTC_RTC_ALARM_ENABLE_REG_RTC_ALARM_DATE_EN_Msk, HW_RTC_ALARM_HOUR = RTC_RTC_ALARM_ENABLE_REG_RTC_ALARM_HOUR_EN_Msk, HW_RTC_ALARM_MIN = RTC_RTC_ALARM_ENABLE_REG_RTC_ALARM_MIN_EN_Msk,
  HW_RTC_ALARM_SEC = RTC_RTC_ALARM_ENABLE_REG_RTC_ALARM_SEC_EN_Msk, HW_RTC_ALARM_HSEC = RTC_RTC_ALARM_ENABLE_REG_RTC_ALARM_HOS_EN_Msk
}
 RTC Alarm enable mask. More...
 
enum  HW_RTC_STATUS { HW_RTC_VALID_CLNDR_ALM = RTC_RTC_STATUS_REG_RTC_VALID_CAL_ALM_Msk, HW_RTC_VALID_TIME_ALM = RTC_RTC_STATUS_REG_RTC_VALID_TIME_ALM_Msk, HW_RTC_VALID_CLNDR = RTC_RTC_STATUS_REG_RTC_VALID_CAL_Msk, HW_RTC_VALID_TIME = RTC_RTC_STATUS_REG_RTC_VALID_TIME_Msk }
 RTC status. More...
 
enum  HW_RTC_SET_REG_STATUS {
  HW_RTC_VALID_ENTRY = 0x1, HW_RTC_INVALID_TIME_HOUR_MODE_ALM = 0x3, HW_RTC_INVALID_CLNDR_ALM = 0x7, HW_RTC_INVALID_TIME_ALM = 0xB,
  HW_RTC_INVALID_CLNDR = 0xD, HW_RTC_INVALID_TIME = 0xE, HW_RTC_INVALID_TIME_CLNDR = 0xC
}
 RTC status. More...
 

Functions

void hw_rtc_config_RTC_to_PDC_evt (const hw_rtc_config_pdc_evt_t *cfg)
 RTC to PDC event configuration. More...
 
void hw_rtc_register_intr (hw_rtc_interrupt_cb handler, uint8_t mask)
 Register an interrupt handler. More...
 
void hw_rtc_unregister_intr (void)
 Unregister the event handler and disable RTC interrupt (NVIC) More...
 
HW_RTC_SET_REG_STATUS hw_rtc_set_time_clndr (const hw_rtc_time_t *time, const hw_rtc_calendar_t *clndr)
 Set RTC time and/or calendar date. More...
 
__STATIC_INLINE void hw_rtc_set_time_bcd (uint32_t time_bcd)
 Set RTC time. More...
 
__STATIC_INLINE void hw_rtc_set_clndr_bcd (uint32_t clndr_bcd)
 Set RTC Calendar date. More...
 
void hw_rtc_get_time_clndr (hw_rtc_time_t *time, hw_rtc_calendar_t *clndr)
 Get RTC time and/or calendar date. More...
 
__STATIC_INLINE uint32_t hw_rtc_get_time_bcd (void)
 Get RTC time. More...
 
__STATIC_INLINE uint32_t hw_rtc_get_clndr_bcd (void)
 Get RTC Calendar date. More...
 
__STATIC_INLINE void hw_rtc_time_start (void)
 Start RTC time. More...
 
__STATIC_INLINE void hw_rtc_time_stop (void)
 Stop RTC time. More...
 
__STATIC_INLINE void hw_rtc_clndr_start (void)
 Start RTC Calendar. More...
 
__STATIC_INLINE void hw_rtc_clndr_stop (void)
 Stop RTC Calendar. More...
 
__STATIC_INLINE void hw_rtc_start (void)
 Start RTC. Starts both time and calendar. More...
 
__STATIC_INLINE void hw_rtc_stop (void)
 Stop RTC. Stops both time and calendar. More...
 
HW_RTC_SET_REG_STATUS hw_rtc_set_alarm (const hw_rtc_time_t *time, const hw_rtc_alarm_calendar_t *clndr, const uint8_t mask)
 Set RTC alarm. More...
 
__STATIC_INLINE void hw_rtc_set_alarm_time_bcd (uint32_t time_bcd)
 Set RTC alarm time. More...
 
__STATIC_INLINE void hw_rtc_set_alarm_clndr_bcd (uint32_t clndr_bcd)
 Set RTC alarm Calendar. More...
 
void hw_rtc_get_alarm (hw_rtc_time_t *time, hw_rtc_alarm_calendar_t *clndr, uint8_t *mask)
 Get RTC time and/or calendar alarms. More...
 
__STATIC_INLINE uint32_t hw_rtc_get_alarm_time_bcd (void)
 Get RTC alarm time. More...
 
__STATIC_INLINE uint32_t hw_rtc_get_alarm_clndr_bcd (void)
 Get RTC alarm calendar. More...
 
__STATIC_INLINE void hw_rtc_alarm_enable (const uint8_t mask)
 RTC alarm enable. More...
 
__STATIC_INLINE uint8_t hw_rtc_get_alarm_enable_msk (void)
 Get RTC alarm enable bitmask. More...
 
__STATIC_INLINE void hw_rtc_interrupt_enable (const uint8_t mask)
 Enable RTC interrupt(s) More...
 
__STATIC_INLINE void hw_rtc_interrupt_disable (const uint8_t mask)
 Disable RTC interrupt(s) More...
 
__STATIC_INLINE uint8_t hw_rtc_get_event_flags (void)
 Get RTC event flags. More...
 
__STATIC_INLINE uint8_t hw_rtc_get_interrupt_mask (void)
 Get RTC interrupt mask. More...
 
__STATIC_INLINE void hw_rtc_set_hour_clk_mode (HW_RTC_HOUR_MODE mode)
 Set RTC hour clock mode. More...
 
__STATIC_INLINE HW_RTC_HOUR_MODE hw_rtc_get_hour_clk_mode (void)
 Get RTC hour clock mode. More...
 
__STATIC_INLINE uint8_t hw_rtc_get_status (void)
 Get RTC status. More...
 
__STATIC_INLINE void hw_rtc_set_keep_reg_on_reset (bool keep)
 Configure RTC to keep or reset its registers after reset. More...
 
__STATIC_INLINE bool hw_rtc_get_keep_reg_on_reset (void)
 Get RTC keep register status. More...
 
__STATIC_INLINE void hw_rtc_pdc_event_enable (void)
 Enable RTC to Power Domains Controller (PDC) event. More...
 
__STATIC_INLINE void hw_rtc_pdc_event_disable (void)
 Disable RTC to Power Domains Controller event. More...
 
__STATIC_INLINE bool hw_rtc_get_pdc_event_cntrl (void)
 Get status of control of RTC to Power Domains Controller event. More...
 
__STATIC_INLINE void hw_rtc_set_pdc_event_period (uint16_t period)
 Set RTC to PDC event period. More...
 
__STATIC_INLINE uint16_t hw_rtc_get_pdc_event_period (void)
 Get RTC to PDC event period. More...
 
__STATIC_INLINE bool hw_rtc_pdc_event_clear (void)
 Clear RTC to PDC event. More...
 
__STATIC_INLINE uint16_t hw_rtc_get_pdc_event_cnt (void)
 Get PDC event count. More...
 
__STATIC_INLINE void hw_rtc_reset (void)
 Reset RTC module. More...
 
__STATIC_INLINE void hw_rtc_reset_set (void)
 Set RTC reset high. More...
 
__STATIC_INLINE void hw_rtc_reset_clear (void)
 Clear RTC reset. More...
 
__STATIC_INLINE void hw_rtc_clk_config (HW_RTC_DIV_DENOM div_denom, uint16_t div_int, uint16_t div_frac)
 Configure RTC clock. More...
 
__STATIC_INLINE void hw_rtc_clock_enable (void)
 Enable for the 100 Hz generation for the RTC block. More...
 

Detailed Description

Definition of API for the Real Time Clock Low Level Driver.

Copyright (C) 2017-2023 Renesas Electronics Corporation and/or its affiliates. All rights reserved. Confidential Information.

This software ("Software") is supplied by Renesas Electronics Corporation and/or its affiliates ("Renesas"). Renesas grants you a personal, non-exclusive, non-transferable, revocable, non-sub-licensable right and license to use the Software, solely if used in or together with Renesas products. You may make copies of this Software, provided this copyright notice and disclaimer ("Notice") is included in all such copies. Renesas reserves the right to change or discontinue the Software at any time without notice.

THE SOFTWARE IS PROVIDED "AS IS". RENESAS DISCLAIMS ALL WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. TO THE MAXIMUM EXTENT PERMITTED UNDER LAW, IN NO EVENT SHALL RENESAS BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE, EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. USE OF THIS SOFTWARE MAY BE SUBJECT TO TERMS AND CONDITIONS CONTAINED IN AN ADDITIONAL AGREEMENT BETWEEN YOU AND RENESAS. IN CASE OF CONFLICT BETWEEN THE TERMS OF THIS NOTICE AND ANY SUCH ADDITIONAL LICENSE AGREEMENT, THE TERMS OF THE AGREEMENT SHALL TAKE PRECEDENCE. BY CONTINUING TO USE THIS SOFTWARE, YOU AGREE TO THE TERMS OF THIS NOTICE.IF YOU DO NOT AGREE TO THESE TERMS, YOU ARE NOT PERMITTED TO USE THIS SOFTWARE.