36#ifdef LIBOPENCM3_RTC_H
38#ifndef LIBOPENCM3_RTC2_H
39#define LIBOPENCM3_RTC2_H
49#define RTC_TR MMIO32(RTC_BASE + 0x00)
52#define RTC_DR MMIO32(RTC_BASE + 0x04)
55#define RTC_CR MMIO32(RTC_BASE + 0x08)
58#define RTC_ISR MMIO32(RTC_BASE + 0x0c)
61#define RTC_PRER MMIO32(RTC_BASE + 0x10)
64#define RTC_WUTR MMIO32(RTC_BASE + 0x14)
67#define RTC_CALIBR MMIO32(RTC_BASE + 0x18)
70#define RTC_ALRMAR MMIO32(RTC_BASE + 0x1c)
71#define RTC_ALRMBR MMIO32(RTC_BASE + 0x20)
74#define RTC_WPR MMIO32(RTC_BASE + 0x24)
77#define RTC_SSR MMIO32(RTC_BASE + 0x28)
80#define RTC_SHIFTR MMIO32(RTC_BASE + 0x2c)
83#define RTC_TSTR MMIO32(RTC_BASE + 0x30)
85#define RTC_TSDR MMIO32(RTC_BASE + 0x34)
87#define RTC_TSSSR MMIO32(RTC_BASE + 0x38)
90#define RTC_CALR MMIO32(RTC_BASE + 0x3c)
93#define RTC_TAFCR MMIO32(RTC_BASE + 0x40)
96#define RTC_ALRMASSR MMIO32(RTC_BASE + 0x44)
97#define RTC_ALRMBSSR MMIO32(RTC_BASE + 0x48)
99#define RTC_BKP_BASE (RTC_BASE + 0x50)
101#define RTC_BKPXR(reg) MMIO32(RTC_BKP_BASE + (4 * (reg)))
111#define RTC_TR_PM (1 << 22)
113#define RTC_TR_HT_SHIFT (20)
115#define RTC_TR_HT_MASK (0x3)
117#define RTC_TR_HU_SHIFT (16)
119#define RTC_TR_HU_MASK (0xf)
121#define RTC_TR_MNT_SHIFT (12)
123#define RTC_TR_MNT_MASK (0x7)
125#define RTC_TR_MNU_SHIFT (8)
127#define RTC_TR_MNU_MASK (0xf)
129#define RTC_TR_ST_SHIFT (4)
131#define RTC_TR_ST_MASK (0x7)
133#define RTC_TR_SU_SHIFT (0)
135#define RTC_TR_SU_MASK (0xf)
143#define RTC_DR_YT_SHIFT (20)
145#define RTC_DR_YT_MASK (0xf)
147#define RTC_DR_YU_SHIFT (16)
149#define RTC_DR_YU_MASK (0xf)
151#define RTC_DR_WDU_SHIFT (13)
153#define RTC_DR_WDU_MASK (0x7)
155#define RTC_DR_MT_SHIFT (12)
157#define RTC_DR_MT_MASK (1)
159#define RTC_DR_MU_SHIFT (8)
161#define RTC_DR_MU_MASK (0xf)
163#define RTC_DR_DT_SHIFT (4)
165#define RTC_DR_DT_MASK (0x3)
167#define RTC_DR_DU_SHIFT (0)
169#define RTC_DR_DU_MASK (0xf)
182#define RTC_CR_COE (1<<23)
184#define RTC_CR_OSEL_SHIFT 21
185#define RTC_CR_OSEL_MASK (0x3)
190#define RTC_CR_OSEL_DISABLED (0x0)
191#define RTC_CR_OSEL_ALARMA (0x1)
192#define RTC_CR_OSEL_ALARMB (0x2)
193#define RTC_CR_OSEL_WAKEUP (0x3)
197#define RTC_CR_POL (1<<20)
199#define RTC_CR_COSEL (1<<19)
201#define RTC_CR_BKP (1<<18)
203#define RTC_CR_SUB1H (1<<17)
205#define RTC_CR_ADD1H (1<<16)
207#define RTC_CR_TSIE (1<<15)
209#define RTC_CR_WUTIE (1<<14)
211#define RTC_CR_ALRBIE (1<<13)
213#define RTC_CR_ALRAIE (1<<12)
215#define RTC_CR_TSE (1<<11)
217#define RTC_CR_WUTE (1<<10)
219#define RTC_CR_ALRBE (1<<9)
221#define RTC_CR_ALRAE (1<<8)
223#define RTC_CR_DCE (1<<7)
225#define RTC_CR_FMT (1<<6)
227#define RTC_CR_BYPSHAD (1<<5)
229#define RTC_CR_REFCKON (1<<4)
231#define RTC_CR_TSEDGE (1<<3)
234#define RTC_CR_WUCLKSEL_SHIFT (0)
235#define RTC_CR_WUCLKSEL_MASK (0x7)
236#define RTC_CR_WUCLKSEL_RTC_DIV16 (0x0)
237#define RTC_CR_WUCLKSEL_RTC_DIV8 (0x1)
238#define RTC_CR_WUCLKSEL_RTC_DIV4 (0x2)
239#define RTC_CR_WUCLKSEL_RTC_DIV2 (0x3)
240#define RTC_CR_WUCLKSEL_SPRE (0x4)
241#define RTC_CR_WUCLKSEL_SPRE_216 (0x6)
250#define RTC_ISR_RECALPF (1<<16)
252#define RTC_ISR_TAMP3F (1<<15)
254#define RTC_ISR_TAMP2F (1<<14)
256#define RTC_ISR_TAMP1F (1<<13)
258#define RTC_ISR_TSOVF (1<<12)
260#define RTC_ISR_TSF (1<<11)
262#define RTC_ISR_WUTF (1<<10)
264#define RTC_ISR_ALRBF (1<<9)
266#define RTC_ISR_ALRAF (1<<8)
268#define RTC_ISR_INIT (1<<7)
270#define RTC_ISR_INITF (1<<6)
272#define RTC_ISR_RSF (1<<5)
274#define RTC_ISR_INITS (1<<4)
276#define RTC_ISR_SHPF (1<<3)
278#define RTC_ISR_WUTWF (1<<2)
280#define RTC_ISR_ALRBWF (1<<1)
282#define RTC_ISR_ALRAWF (1<<0)
289#define RTC_PRER_PREDIV_A_SHIFT (16)
291#define RTC_PRER_PREDIV_A_MASK (0x7f)
293#define RTC_PRER_PREDIV_S_SHIFT (0)
295#define RTC_PRER_PREDIV_S_MASK (0x7fff)
299#define RTC_CALIBR_DCS (1 << 7)
301#define RTC_CALIBR_DC_SHIFT (0)
302#define RTC_CALIBR_DC_MASK (0x1f)
308#define RTC_ALRMXR_MSK4 (1<<31)
309#define RTC_ALRMXR_WDSEL (1<<30)
310#define RTC_ALRMXR_DT_SHIFT (28)
311#define RTC_ALRMXR_DT_MASK (0x3)
312#define RTC_ALRMXR_DU_SHIFT (24)
313#define RTC_ALRMXR_DU_MASK (0xf)
314#define RTC_ALRMXR_MSK3 (1<<23)
315#define RTC_ALRMXR_PM (1<<22)
316#define RTC_ALRMXR_HT_SHIFT (20)
317#define RTC_ALRMXR_HT_MASK (0x3)
318#define RTC_ALRMXR_HU_SHIFT (16)
319#define RTC_ALRMXR_HU_MASK (0xf)
320#define RTC_ALRMXR_MSK2 (1<<15)
321#define RTC_ALRMXR_MNT_SHIFT (12)
322#define RTC_ALRMXR_MNT_MASK (0x7)
323#define RTC_ALRMXR_MNU_SHIFT (8)
324#define RTC_ALRMXR_MNU_MASK (0xf)
325#define RTC_ALRMXR_MSK1 (1<<7)
326#define RTC_ALRMXR_ST_SHIFT (4)
327#define RTC_ALRMXR_ST_MASK (0x7)
328#define RTC_ALRMXR_SU_SHIFT (0)
329#define RTC_ALRMXR_SU_MASK (0xf)
333#define RTC_SHIFTR_ADD1S (1<<31)
335#define RTC_SHIFTR_SUBFS_SHIFT (0)
336#define RTC_SHIFTR_SUBFS_MASK (0x7fff)
341#define RTC_TSTR_PM (1<<22)
342#define RTC_TSTR_HT_SHIFT (20)
343#define RTC_TSTR_HT_MASK (0x3)
344#define RTC_TSTR_HU_SHIFT (16)
345#define RTC_TSTR_HU_MASK (0xf)
346#define RTC_TSTR_MNT_SHIFT (12)
347#define RTC_TSTR_MNT_MASK (0x7)
348#define RTC_TSTR_MNU_SHIFT (8)
349#define RTC_TSTR_MNU_MASK (0xf)
350#define RTC_TSTR_ST_SHIFT (4)
351#define RTC_TSTR_ST_MASK (0x7)
352#define RTC_TSTR_SU_SHIFT (0)
353#define RTC_TSTR_SU_MASK (0xf)
359#define RTC_TSDR_WDU_SHIFT (13)
360#define RTC_TSDR_WDU_MASK (0x7)
361#define RTC_TSDR_MT (1<<12)
362#define RTC_TSDR_MU_SHIFT (8)
363#define RTC_TSDR_MU_MASK (0xf)
364#define RTC_TSDR_DT_SHIFT (4)
365#define RTC_TSDR_DT_MASK (0x3)
366#define RTC_TSDR_DU_SHIFT (0)
367#define RTC_TSDR_DU_MASK (0xf)
373#define RTC_CALR_CALP (1 << 15)
374#define RTC_CALR_CALW8 (1 << 14)
375#define RTC_CALR_CALW16 (1 << 13)
376#define RTC_CALR_CALM_SHIFT (0)
377#define RTC_CALR_CALM_MASK (0x1ff)
383#define RTC_TAFCR_ALARMOUTTYPE (1<<18)
384#define RTC_TAFCR_TAMPPUDIS (1<<15)
386#define RTC_TAFCR_TAMPPRCH_SHIFT (13)
387#define RTC_TAFCR_TAMPPRCH_MASK (0x3)
388#define RTC_TAFCR_TAMPPRCH_1RTC (0x0)
389#define RTC_TAFCR_TAMPPRCH_2RTC (0x1)
390#define RTC_TAFCR_TAMPPRCH_4RTC (0x2)
391#define RTC_TAFCR_TAMPPRCH_8RTC (0x3)
393#define RTC_TAFCR_TAMPFLT_SHIFT (11)
394#define RTC_TAFCR_TAMPFLT_MASK (0x3)
395#define RTC_TAFCR_TAMPFLT_EDGE1 (0x0)
396#define RTC_TAFCR_TAMPFLT_EDGE2 (0x1)
397#define RTC_TAFCR_TAMPFLT_EDGE4 (0x2)
398#define RTC_TAFCR_TAMPFLT_EDGE8 (0x3)
400#define RTC_TAFCR_TAMPFREQ_SHIFT (8)
401#define RTC_TAFCR_TAMPFREQ_MASK (0x7)
402#define RTC_TAFCR_TAMPFREQ_RTCDIV32K (0x0)
403#define RTC_TAFCR_TAMPFREQ_RTCDIV16K (0x1)
404#define RTC_TAFCR_TAMPFREQ_RTCDIV8K (0x2)
405#define RTC_TAFCR_TAMPFREQ_RTCDIV4K (0x3)
406#define RTC_TAFCR_TAMPFREQ_RTCDIV2K (0x4)
407#define RTC_TAFCR_TAMPFREQ_RTCDIV1K (0x5)
408#define RTC_TAFCR_TAMPFREQ_RTCDIV512 (0x6)
409#define RTC_TAFCR_TAMPFREQ_RTCDIV256 (0x7)
411#define RTC_TAFCR_TAMPTS (1<<7)
412#define RTC_TAFCR_TAMP3TRG (1<<6)
413#define RTC_TAFCR_TAMP3E (1<<5)
414#define RTC_TAFCR_TAMP2TRG (1<<4)
415#define RTC_TAFCR_TAMP2E (1<<3)
416#define RTC_TAFCR_TAMPIE (1<<2)
417#define RTC_TAFCR_TAMP1TRG (1<<1)
418#define RTC_TAFCR_TAMP1E (1<<0)
423#define RTC_ALRMXSSR_MASKSS_SHIFT (24)
424#define RTC_ALARXSSR_MASKSS_MASK (0xf)
426#define RTC_ALRMXSSR_SS_SHIFT (0)
427#define RTC_ALARXSSR_SS_MASK (0x7fff)
464void rtc_time_set_time(uint8_t hour, uint8_t minute, uint8_t second,
bool use_am_notation);
472#warning "rtc_common_l1f024.h should not be included explicitly, only via rtc.h"
void rtc_calendar_set_weekday(enum rtc_weekday rtc_dr_wdu)
Sets the RTC BCD calendar weekday.
void rtc_disable_bypass_shadow_register(void)
Clears the bypass shadow bit in RTC_CR.
void rtc_unlock(void)
Unlock write access to the RTC registers.
void rtc_wait_for_synchro(void)
Wait for RTC registers to be synchronised with the APB1 bus.
void rtc_time_set_hour(uint8_t hour, bool use_am_notation)
Sets the RTC BCD time hour value.
void rtc_set_init_flag(void)
Sets the initialization flag.
void rtc_lock(void)
Lock write access to the RTC registers.
void rtc_time_set_minute(uint8_t minute)
Sets the RTC BCD time minute value.
void rtc_calendar_set_date(uint8_t year, uint8_t month, uint8_t day, enum rtc_weekday rtc_dr_wdu)
Sets the RTC BCD calendar value.
void rtc_calendar_set_month(uint8_t month)
Sets the RTC BCD calendar month value.
void rtc_clear_init_flag(void)
Clears (resets) the initialization flag.
void rtc_set_am_format(void)
Sets the RTC control register hour format to AM (24h)
bool rtc_init_flag_is_ready(void)
Returns if the RTC_ISR init flag RTC_ISR_INITF is set.
void rtc_set_bypass_shadow_register(void)
void rtc_time_set_time(uint8_t hour, uint8_t minute, uint8_t second, bool use_am_notation)
Sets the RTC BCD time.
void rtc_set_prescaler(uint32_t sync, uint32_t async)
Set RTC prescalars.
void rtc_wait_for_init_ready(void)
Waits infinitely for initialization flag to be set in RTC_ISR.
void rtc_calendar_set_year(uint8_t year)
Sets the RTC BCD calendar year value.
void rtc_enable_bypass_shadow_register(void)
Sets the bypass shadow bit in RTC_CR.
void rtc_time_set_second(uint8_t second)
Sets the RTC BCD time second value.
void rtc_set_wakeup_time(uint16_t wkup_time, uint8_t rtc_cr_wucksel)
Sets the wakeup time auto-reload value.
void rtc_set_pm_format(void)
Sets the RTC control register hour format to PM (12h)
void rtc_clear_wakeup_flag(void)
Clears the wakeup flag.
void rtc_calendar_set_day(uint8_t day)
Sets the RTC BCD calendar day value.