Forum: Mikrocontroller und Digitale Elektronik STM32L0 RTC verliert Wert nach Standby


von Maxi L. (stmnooby)


Lesenswert?

Hallo,

Ich versuche mich derzeit mit den Einstieg in die STM32L0 Reihe. Ich 
benutze das Nucleo64 Board mit einen STM32L053R8.

Ich habe bereits an den VBat Anschluss eine  Knopfzelle mit 3 Volt 
gelötet und habe für den RTC die LSE Clock initialisiert.

Ich nutze HAL Funktionen um den uC in den Standbymodus zu versetzen. Er 
wacht auch wie gewollt nach einer gewissen Zeit wieder auf. Leider läuft 
die RTC scheinbar nicht im Standby weiter.

In der Initialisierung wird zwischen Wakeup aus den Standby und Reset 
unterschieden.

Habt Ihr einen Tipp für mich an welchen Stellen ich weiter suchen 
könnte?

Vielen Dank!

STMNOOBY

: Bearbeitet durch User
von A. B. (Gast)


Lesenswert?

Im UM1724: SB45 entfernt?

von Maxi L. (stmnooby)


Lesenswert?

A. B. schrieb:
> Im UM1724: SB45 entfernt?

Ja wurde entfernt. Doch selbst ist ja nur die verbindung von VBat zu VDD 
und VDD liegt ja auch bei Standby an (Batterie sollt bei meiner 
Anwendung nur als kurzzeitiger puffer dienen)

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Zeige mal den InitialisierungsCode, der für die RTC relevant ist.

von foobar (Gast)


Lesenswert?

> Er wacht auch wie gewollt nach einer gewissen Zeit wieder auf. Leider
> läuft die RTC scheinbar nicht im Standby weiter.

Widerspricht sich das nicht?

von Maxi L. (stmnooby)


Lesenswert?

Stefanus F. schrieb:
> Zeige mal den InitialisierungsCode, der für die RTC relevant ist.

Hallo, danke für den tipp da war jetzt auch entgültig der Fehler und der 
RTC läuft nach dem Stanby problemlos weiter. Vielen Dank!

if(__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET)
  {
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);

    hrtc.Instance = RTC;

    hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
    hrtc.Init.AsynchPrediv = 127;
    hrtc.Init.SynchPrediv = 255;
    hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
    hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
    hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
    hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;

    if (HAL_RTC_Init(&hrtc) != HAL_OK)
    {
      _Error_Handler(_FILE_, _LINE_);
    }

  }
else
  {
    MX_RTC_Init();
  }

von Maxi L. (stmnooby)


Lesenswert?

foobar schrieb:
>> Er wacht auch wie gewollt nach einer gewissen Zeit wieder auf. Leider
>> läuft die RTC scheinbar nicht im Standby weiter.
>
> Widerspricht sich das nicht?

Deswegen hat es mich gewundert wo das Problem liegt.

von Stefan F. (Gast)


Lesenswert?

Meine beiden ersten Versuche mit Cube MX scheiterten an falsch 
generiertem Code. Seit dem programmiere ich lieber selbst.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.