Browse Source

mimxrt/machine_rtc: Improve the RTC init at boot.

By clearing the tamper bits and enabling access to the registers for all
code, just in case that this was set.  It keeps the clock running on
battery and the calibration setting.

Signed-off-by: robert-hh <robert@hammelrath.com>
pull/12482/head
robert-hh 1 year ago
committed by Damien George
parent
commit
4e5611c55a
  1. 1
      ports/mimxrt/Makefile
  2. 7
      ports/mimxrt/machine_rtc.c

1
ports/mimxrt/Makefile

@ -137,6 +137,7 @@ SRC_HAL_IMX_C += \
$(MCU_DIR)/drivers/fsl_pit.c \ $(MCU_DIR)/drivers/fsl_pit.c \
$(MCU_DIR)/drivers/fsl_pwm.c \ $(MCU_DIR)/drivers/fsl_pwm.c \
$(MCU_DIR)/drivers/fsl_sai.c \ $(MCU_DIR)/drivers/fsl_sai.c \
$(MCU_DIR)/drivers/fsl_snvs_hp.c \
$(MCU_DIR)/drivers/fsl_snvs_lp.c \ $(MCU_DIR)/drivers/fsl_snvs_lp.c \
$(MCU_DIR)/drivers/fsl_wdog.c \ $(MCU_DIR)/drivers/fsl_wdog.c \
$(MCU_DIR)/system_$(MCU_SERIES)$(MCU_CORE).c \ $(MCU_DIR)/system_$(MCU_SERIES)$(MCU_CORE).c \

7
ports/mimxrt/machine_rtc.c

@ -30,6 +30,7 @@
#include "modmachine.h" #include "modmachine.h"
#include "ticks.h" #include "ticks.h"
#include "fsl_snvs_lp.h" #include "fsl_snvs_lp.h"
#include "fsl_snvs_hp.h"
typedef struct _machine_rtc_obj_t { typedef struct _machine_rtc_obj_t {
mp_obj_base_t base; mp_obj_base_t base;
@ -41,6 +42,12 @@ STATIC const machine_rtc_obj_t machine_rtc_obj = {{&machine_rtc_type}};
// Start the RTC Timer. // Start the RTC Timer.
void machine_rtc_start(void) { void machine_rtc_start(void) {
// Enable Non-Privileged Software Access
SNVS->HPCOMR |= SNVS_HPCOMR_NPSWA_EN_MASK;
// Do a basic init.
SNVS_LP_Init(SNVS);
// Disable all external Tamper
SNVS_LP_DisableAllExternalTamper(SNVS);
SNVS_LP_SRTC_StartTimer(SNVS); SNVS_LP_SRTC_StartTimer(SNVS);
// If the date is not set, set it to a more recent start date, // If the date is not set, set it to a more recent start date,

Loading…
Cancel
Save