Skip to content

Commit

Permalink
Merge pull request #7463 from RetiredWizard/teensyrtc
Browse files Browse the repository at this point in the history
Use low power RTC on mimxrt10xx (Teensy41) boards
  • Loading branch information
tannewt committed Jan 18, 2023
2 parents 1c1cf1c + f66e865 commit 936ecdd
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
1 change: 1 addition & 0 deletions ports/mimxrt10xx/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ SRC_SDK := \
drivers/fsl_ocotp.c \
drivers/fsl_pwm.c \
drivers/fsl_snvs_hp.c \
drivers/fsl_snvs_lp.c \
drivers/fsl_tempmon.c \
drivers/fsl_trng.c \
system_$(CHIP_FAMILY).c \
Expand Down
22 changes: 15 additions & 7 deletions ports/mimxrt10xx/common-hal/rtc/RTC.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,18 +36,26 @@
#include "supervisor/shared/translate/translate.h"

#include "fsl_snvs_hp.h"
#include "fsl_snvs_lp.h"

void rtc_init(void) {
snvs_hp_rtc_config_t config;
SNVS_HP_RTC_GetDefaultConfig(&config);
snvs_hp_rtc_config_t hpconfig;
SNVS_HP_RTC_GetDefaultConfig(&hpconfig);

SNVS_HP_RTC_Init(SNVS, &config);
SNVS_HP_RTC_Init(SNVS, &hpconfig);

snvs_lp_srtc_config_t lpconfig;
SNVS_LP_SRTC_GetDefaultConfig(&lpconfig);

SNVS_LP_SRTC_Init(SNVS, &lpconfig);

SNVS_LP_SRTC_StartTimer(SNVS);
SNVS_HP_RTC_StartTimer(SNVS);
}

void common_hal_rtc_get_time(timeutils_struct_time_t *tm) {
snvs_hp_rtc_datetime_t rtcDate;
SNVS_HP_RTC_GetDatetime(SNVS, &rtcDate);
snvs_lp_srtc_datetime_t rtcDate;
SNVS_LP_SRTC_GetDatetime(SNVS, &rtcDate);

tm->tm_year = rtcDate.year;
tm->tm_mon = rtcDate.month;
Expand All @@ -58,15 +66,15 @@ void common_hal_rtc_get_time(timeutils_struct_time_t *tm) {
}

void common_hal_rtc_set_time(timeutils_struct_time_t *tm) {
snvs_hp_rtc_datetime_t rtcDate;
snvs_lp_srtc_datetime_t rtcDate;
rtcDate.year = tm->tm_year;
rtcDate.month = tm->tm_mon;
rtcDate.day = tm->tm_mday;
rtcDate.hour = tm->tm_hour;
rtcDate.minute = tm->tm_min;
rtcDate.second = tm->tm_sec;

SNVS_HP_RTC_SetDatetime(SNVS, &rtcDate);
SNVS_LP_SRTC_SetDatetime(SNVS, &rtcDate);
}

int common_hal_rtc_get_calibration(void) {
Expand Down

0 comments on commit 936ecdd

Please sign in to comment.