ATSAMD51: Wie mehr Strom einsparen im Sleep-Mode?

OP #7652135
Lesenswert?

Hi,

wenn ich meinen ATSAMD51J19A (TQFP-64) in den Schalf-Modus versetze mittels PM->SLEEPCFG.bit.SLEEPMODE = STANDBY; // 0x4 (Datenblatt: "18.8.2 Sleep Configuration", S. 211), dann kann ich den Stromverbrauch schon mal gut verringern auf rund 2.7 mA (genau: 2735 uA). Ein tieferer Schlaf geht nicht, weil ich den Pin-Interrupt brauche zum wieder aufwachen.

Allerdings ist das noch viel zu viel. Im Datenblatt steht unter "Table 54-7. Current Consumption - Active and Idle Mode" (Seite 1843), dass man für LDO mit 3.3V und FDPLL 120 MHz auf Typ. 43uA - Max. 870uA kommt für STANDBY. Dass das vielleicht etwas Wunschdenken ist ist klar, aber trotzdem weit weg von meinen 2.7 mA. Dabei steht noch:

  • Fast wake-up disabled (PM.STDBYCFG.FASTWKUP = 0x0) --> habe ich gemacht **
  • No System RAM retained (PM.STDBYCFG.RAMCFG = 0x2). 8 KB backup RAM retained --> habe ich gemacht **
  • no peripheral running --> Keine Ahnung wie man Peripherals abschaltet; ich habe nur MCLK->AHBMASK.reg = ... gefunden aber das ändert nix so richtig

Hat jemand eine Idee wo dran ich noch drehen könnte?

Testweise habe ich mal für alle Ports DIR = 0x000000 und PINCFG = 0 gesetzt, d.h. alle Pins als Input und den Input-Buffer aus aber das hat irgendwie nur 200 uA Ersparnis gebracht (und deaktiviert auch den Pin-Interrupt).

**) Unter der Annahme, dass man die "PAC Write-Protection" über PAC->WRCTRL.reg = PAC_WRCTRL_PERID(ID_PM) | PAC_WRCTRL_KEY_CLR; abschaltet. Sicher bin ich mir dabei nicht aber es scheint zu funktionieren (also dass man dann das Register beschreiben darf)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren