Guten Tag,
ich hätte eine kurze Frage zum Datenblatt bzgl. der Power Consumption im
Active-Mode (bei 1MHz).
https://www.ti.com/product/MSP430FR2422
Direkt auf Seite 1 ist zu lesen:
Optimized ultra-low-power modes
– Active mode: 120 µA/MHz (typical)
Detailliertere Angaben finden man weiter hinten im Dokument --> 8.4
Active Mode Supply Current, Seite 15.
Hier wird in der oberen Tabelle in der letzten Zeile plötzlich 216uA /
MHz bei EXECUTION MEMORY = RAM für 3V angegeben.
Für FRAM 100% cache hit ratio hingegen 199uA.
Was hat zu bedeuten?
Widerspricht sich dies nicht irgendwie mit Seite 1?
Sollte man das Programm dann ausschlißelich aus dem FRAM ausführen, um
hier Energie zu sparen?
In der Tabelle unter 8.5 Active Mode Supply Current Per MHz taucht dann
wieder in der einzigen Zeile die 120uA/MHz auf...
"Active mode current consumption per MHz, execution from FRAM, no wait
states"
Ich kann mir derzeit keinen Reim daraus machen...
Bei einem ersten kleinen Breadboard-Aufbau habe ich mit meinem
Multimeter einen Verbrauch von 220uA gemessen bei 1 Mhz und 3,0V.
Ich hatte hier allerdings die 120uA erwartet, da damit auf der 1. Seite
"geworben" worden ist.
Ist dies nur eine leere Versprechung und die 220uA sind realistisch?
Wie kann es sein das FRAM sparsamer ist?
Muss ich mein gesamtes Programm via "#pragma memory section" in den FRAM
Bereich verlegen?
Herzlichen Dank!
In 8.5 steht, dass mit "120 µA/MHz" gemeint ist, dass zwischen 1 MHz und
8 MHz der Verbrauch um 120 µA pro MHz ansteigt.
Das erste MHz verbraucht mehr. In 8.4 findest du die Absolutwerte.
> Sollte man das Programm dann ausschlißelich aus dem FRAM ausführen, um> hier Energie zu sparen?
Kommt drauf an, wie viel im Cache gehalten werden kann.
> Muss ich mein gesamtes Programm via "#pragma memory section" in den FRAM> Bereich verlegen?
Nein, ist eh schon Standard.
Okay, DANKE!
Ich habe jetzt noch versucht den MSP430FR2422 in den LPM3 zu bringen.
Dabei verwende ich nahezu fast nur den uC, nur mit einem 100nF
Abblockkondensator und einem 47kOhm PullUp-Widerstand an Reset, da
low-active.
Ich hätte jetzt hier einen Stromverbauch um die 1uA erwartet.
ICh messe hingegen 16uA!
Hat hier jemand spontan eine Idee woran das liegen könnte?
Der Watchdog Timer ist abgeschaltet, der ADC auch.
Der Mechanismus "gehe nach LPM3 und lass dich aufwecken durch Timer_A
Interrupt" funktioniert einwandfrei.
Ich weiß es leider im Moment nicht...
Danke!
Danke für eure Hinweise.
Meine Schaltung ist falsch ist mir aufgefallen. :-)
Ich war es gewohnt am MSP430G2553 einen 100nF-Abblockkondensator oben an
den IC zu packen (zwischen Pin 1 und Pin 20).
Dies hatte ich leider für den MSP430FR2422 übernommen.
Was natürlich falsch ist, hier liegen Vcc und Vss auf der linken Seite
(Pin 5 und Pin 6).
Meine Schaltung muss ich noch "umbauen", aber ich denke das ist der
Fehler mit dem zu hohen Strom.
Hoffe das der uC nicht kaputt gegangen ist dadurch...
Okay, ich habe jetzt meine Beschaltung korrekt umgebaut.
Also 100nF zwischen Vcc und Vss.
An der Stromaufnahme hat sich allerdings nichts getan.
Ich messe hier immer noch 15,9uA in LPM3 - was sehr verwunderlich ist...
Ich möchte den uC eigentlich so konfigurieren, dass als Clocksource der
DCO ohne FLL verwendet wird bei 1MHz.
Was kann evtl. auf dem uC eingeschaltet sein, dass ein so hoher
DeepSleep-Strom zustande kommt?
Im Active-Mode bin ich bei 223uA was passen sollte.
Danke und Viele Grüße
Okay..
Kurze Hinweise zu meinem Code.
Also der MCU soll per Timer-Interrupt aufgeweckt werden. Das
funktioniert bereits auch sehr gut.
Den WDT stoppe demnach gleich am Anfang, da dieser im Moment nicht
benötigt wird.
Nach jedem Aufwecken lasse ich die CPU für einige Zeit im active-Mode
mit
__delay_cycles(5000000);
Das Beispiel von TI verwendet offenbar einen externen Crystal. Diese
äußere Beschaltung gibt es bei mir nicht.
Ich möchte die gesamte Schaltung mit dem DCO (ohne FLL) betreiben und im
LPM3 mit VLO.
Ich glaube dies ist standardmäßig auch so eingestellt bzw. wird
automatisch eingenommen wenn an XT1 kein Crystal erkannt wird. (?)
Ich messe wie gesagt derzeit ca. 213uA während Active und 17uA in LPM3.
Hier also mein aktuelles Testprogramm:
1
#include<msp430.h>
2
3
intmain(void)
4
{
5
WDTCTL=WDTPW+WDTHOLD;//Stop watchdog timer
6
7
// configure timer A1 for wake-up interrupts
8
TA1CCTL0=CCIE;// CCR0 interrupt enabled
9
TA1CCR0=55000;// Upper limit of count for TAR // incremented by a 187,5Hz clock (VLO / 64 = 12000Hz / 64)
10
TA1CTL=MC_1|TASSEL_1|TACLR|ID_3;// Set up and start Timer A: "up to CCR0" mode, divide clock by 8, clock from ACLK, clear timer
11
12
// Port Configuration all un-used pins to output low
13
P1OUT=0x00;
14
P2OUT=0x00;
15
P3OUT=0x00;
16
P4OUT=0x00;
17
P5OUT=0x00;
18
P6OUT=0x00;
19
P1REN=0xFF;
20
P2REN=0xFF;
21
P3REN=0xFF;
22
P4REN=0xFF;
23
P5REN=0xFF;
24
P6REN=0xFF;
25
26
P1DIR=0xff;
27
P2DIR=0xff;
28
P3DIR=0xff;
29
P4DIR=0xff;
30
P5DIR=0xff;
31
P6DIR=0xff;
32
33
// Disable the GPIO power-on default high-impedance mode
34
// to activate previously configured port settings
35
PM5CTL0&=~LOCKLPM5;
36
37
while(1)
38
{
39
// Enter LPM3 --> standard low power mode
40
// waiting for timer_A1 interrupt for wakeup
41
__bis_SR_register(LPM3_bits+GIE);
42
//P1OUT ^= BIT7; // Toggle P1.0 (LED) every 1s
43
44
// do something
45
__delay_cycles(5000000);// Delay for 10000000*(1/MCLK)=1.25s
Also ich glaube es liegt daran, dass bei der Konfiguration ohne externem
Cyrstal (XT1) der REFO Oscillator IMMER mitläuft. Eben auch in LPM3.
Der benötigt laut Datenblatt 15uA. Das ist so ziemlich genau der Wert
den ich messe.
Kann das jemand bestätigen?
Herzlichen Dank und viele Grüße