Forum: Mikrocontroller und Digitale Elektronik EEPROM 24C256 und Standby Mode


von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Hallo zusammen,

ich greife auf ein AT24C256 EEPROM zu und schreibe auch darauf.
Es funktioniert vom MSP430 und auch von meinem Terminal aus wunderbar.

Im Datenblatt steht:

5.4 Standby Mode
The AT24C256C features a low power Standby mode that is enabled when any 
one of the following occurs:
1.)   A valid power-up sequence is performed (see 4.5.1  Power-up 
Requirements and Reset Behavior).
2.)   A Stop condition is received by the device unless it initiates an 
internal write cycle (see 7. Write Operations).
3.)   At the completion of an internal write cycle (see 7. Write 
Operations).


Punkt 2 interpretiere ich so:
1
int SetStandby(unsigned char txAdr, unsigned char byteCount, unsigned char *field)
2
{
3
  
4
  TI_USCI_I2C_transmitinit(txAdr, 0x0c); // init I2C/USCI (transmit)
5
  TI_transmit_field = field;
6
  byteCtr = byteCount;
7
  UCB0CTL1 |= UCTR + UCTXSTT;                 // I2C TX, start condition
8
  
9
  UCB0CTL1 |= UCTXSTP;                      // I2C stop condition
10
}

Das EEPROM zieht dann allerdings immer noch 1330µA. Das sagt mir dass 
das EEPROM immer noch aktiv ist. Laut Datenblatt sollte es im Standby 
Mode 2µA bei 3,6V ziehen.

Was mache ich falsch?

P.S.: Wer jemanden beleidigen will oder unsachliche Hinweise geben will 
kann das ja in den dafür üblichen sozialen Netzwerken tun. Allen Anderen 
danke ich im Voraus für Infos!

von Falk B. (falk)


Lesenswert?

Andreas V. schrieb:
> Hallo zusammen,
>
> ich greife auf ein AT24C256 EEPROM zu und schreibe auch darauf.
> Es funktioniert vom MSP430 und auch von meinem Terminal aus wunderbar.
>
> Im Datenblatt steht:
>
> 5.4 Standby Mode
> The AT24C256C features a low power Standby mode that is enabled when any
> one of the following occurs:
> 1.)   A valid power-up sequence is performed (see 4.5.1  Power-up
> Requirements and Reset Behavior).
> 2.)   A Stop condition is received by the device unless it initiates an
> internal write cycle (see 7. Write Operations).
> 3.)   At the completion of an internal write cycle (see 7. Write
> Operations).
>
> Punkt 2 interpretiere ich so:
> int SetStandby(unsigned char txAdr, unsigned char byteCount, unsigned
> char *field)
> {
>
>   TI_USCI_I2C_transmitinit(txAdr, 0x0c); // init I2C/USCI (transmit)
>   TI_transmit_field = field;
>   byteCtr = byteCount;
>   UCB0CTL1 |= UCTR + UCTXSTT;                 // I2C TX, start condition
>
>   UCB0CTL1 |= UCTXSTP;                      // I2C stop condition
> }

Hmm, start und direkt ein STOP? Ob das so OK ist?

> Das EEPROM zieht dann allerdings immer noch 1330µA. Das sagt mir dass
> das EEPROM immer noch aktiv ist. Laut Datenblatt sollte es im Standby
> Mode 2µA bei 3,6V ziehen.
>
> Was mache ich falsch?

Mißt du auch an der richtigen Stelle? Nicht daß dort noch andere ICs an 
deinem VCC Netz dranhängen?

Eigentlich geht der EEPROM nach jeder Transaktion, welche keinen 
Schreibvorgang startet, direkt in den Standby Mode, was aber keine Kunst 
ist, das Ding ist rein aus CMOS aufgebaut. Man braucht kein explizites 
Standby.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Falk B. schrieb:
> Mißt du auch an der richtigen Stelle? Nicht daß dort noch andere ICs an
> deinem VCC Netz dranhängen?

Ich habe einen Multimeter direkt zwischen das Adapter-Modul und 3,3V 
zwischengeschaltet. Ich bin noch am Testen der möglichen Komponenten für 
ein Low Power Projekt.

Der Tip(p) mit den anderen IC's brachte mich darauf den Adapter näher zu 
untersuchen. Da waren tatsächlich 10K SMD-Pullups (R2, R3) verarbeitet. 
Durch das Entfernen der Pullups zieht das Modul jetzt nur noch 900µA bis 
1000µA statt 1330µA bis 1450µA im Ruhezustand. Das ist allerdings immer 
noch weit von 1µA (bis 6µA) Standby Strom entfernt...

Wer natürlich nachdenkt weiss dass auch eine SMD-LED (die ich nicht 
wirklich wahrgenommen hatte) Strom verbraucht. (Oh Neeeeiiiin!) Auch den 
Vorwiderstand der LED (R1) habe ich entfernt.

Stromverbrauch ist jetzt im Standby unter 1µA (0,6µA); im Betrieb 130µA 
lesend (65535 Bytes über Terminal bei 100kHz ausgelesen) und 30µA 
schreibend(mehrfach hintereinander 65535 Byte schreibend) bzw. 460µA 
(Ein Byte schreibend in Endlosschleife vom MSP aus). Alle Werte gelten 
für 3,3V. Damit werden die Werte des Datenblatts (gemessen mit 400kHz 
I2C) weit unterschritten. Im Datenblatt steht typ. 1mA lesend und typ. 
2mA schreibend. Die Maximalwerte sind laut Datenblatt 2mA lesend und 3mA 
schreibend

Sorry, für die verschwendete Zeit! Aber vielleicht kann jemand etwas mit 
den Werten anfangen.

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.