Forum: Mikrocontroller und Digitale Elektronik MSP430F5310 - Sleep/Current Consumption


von Raffini (Gast)


Lesenswert?

Hi,

Habe hier gerade einen MSP430F5310 herumliegen und möchte ihn gerne sehr 
stromsparend betreiben:

Aktueller Aufbau:
   MSP430 auf Platine (diskret) nur mit VCC-Puffer-Caps und VCore-Cap
   Programmieren via JTAG (FET430UIF)

Aktuell verwende ich die internen Taktgeber (DCO auf 1MHz (FLL))
sonst keinerlei Peripherie etc. (while(1));

Probleme:

- Ich kann nicht mit 1,8V Programmieren sondern nur mit 3V VCC (extern
  versorgt)
- Ich erreiche niemals die angestrebten 3,0uA max bei 2,2V im LPM3 VLO
  (aktuell bin ich bei ca. 50uA)

Zum Rapid Prototyping verwende ich CCS5 mit MSP430ware

Was kann ich nun optimieren um näherungsweise diese Stromwerte zu 
bekommen?

von Jörg S. (joerg-s)


Lesenswert?

Die unbenutzen Pins hast du so geschaltet wie im User Guide steht?

Der Controller steht also nur im LPM3 und hat auch keine Interrupts an?

von Raffini (Gast)


Lesenswert?

genau!

Alles wie es im Datenblatt steht.

Hab sogar eine zweite Platine erstellt/getestet um Leck/Kriechströme 
auszuschließen.

PS: Programmieren geht endlich, habe den RST-Pullup zu groß gewählt ;)
Aber mit dem Stromverbrauch komm ich noch nicht hin.

von Martin (Gast)


Lesenswert?

Hast du den Programmieradapter beim Messen entfernt?

von Raffini (Gast)


Lesenswert?


von Dr.Schäfer (Gast)


Lesenswert?

Also wenn die PINs alle als Ausgänge geschaltet sind würde ich auf 
Peripherie/Clock tippen. 50µA über Kriechströme wäre schon arg viel.

Vielleicht mal ADC an und wieder ausschalten und dann den Strom messen?

Ist die 1MHz Clock wirklich aus? Also nurnoch 12kHz an? Wenn das nicht 
richtig konfiguriert ist kann die schon mal nebenher noch laufen.

von Raffini (Gast)


Lesenswert?

So Update also anscheinend gabs da mal nen Bugfix:
mit Codezusatz...
1
#define SYS14_WORKAROUND                    // Comment this line if silicon revision has SYS14 bug fixed
2
3
#ifdef SYS14_WORKAROUND
4
    #define INIT_MEMORY_ADDR 0x0900
5
    unsigned int *Address = ((unsigned int*)INIT_MEMORY_ADDR);
6
#endif
7
8
.
9
.
10
.
11
12
#ifdef SYS14_WORKAROUND
13
  *Address = 0x9628;
14
  *(Address+4) = 0x0800;
15
  *Address = 0x9600;
16
#endif

... erhalte ich nun 22uA. Die gilt es nun auch zu reduzieren.
Allerdings wundert mich warum eine "Sprungadresse" den Strom ansteigen 
lässt.
Mach ich den "define" weg... geht der Stromverbrauch wieder hoch!

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.