Forum: Mikrocontroller und Digitale Elektronik Warum drei I2C Adressen beim CS3231-Modul für Arduino?


von Thomas Scheidt (Gast)


Lesenswert?

Hallo zusammen,

Ich habe bei einem DS3231 Modul (längliche Bauform mit Batterie) die I²C 
Adresse auslesen wollen und derer gleich drei gefunden (0x51, 0x59 und 
0x68).

0x68 ist der RTC-Baustein bzw. dessen Slave-Adresse - soweit klar (wird 
ja auch in der Standard-Lib genutzt).
0x51 ist der EEPROM AT24C32 mit A1 + A2 auf low - auch klar.

Was ist jetzt 0x59? Sie ändert sich zu 0x58, wenn A0 noch gebrückt wird 
(hängt also wohl auch mit dem EEPROM zusammen)



Vielen Dank
Thomas

von EAF (Gast)


Lesenswert?

Du hast vermutlich ein Problem mit der Schaltung!

Thomas Scheidt schrieb:
> AT24C32
Das hat nur 1 Adresse/ID
Default: 0x50 auf  DS3231 Boards.

von Dip T. (diptionci)


Lesenswert?

manch ein eeprom meldet sich auf zwei adressen, wobei eine read-only ist

von Thomas Scheidt (Gast)


Lesenswert?

Vielen Dank

von EAF (Gast)


Lesenswert?

Dip T. schrieb:
> manch ein eeprom meldet sich auf zwei adressen, wobei eine read-only ist
Könntest du mal die Stelle im AT24C32 Datenblatt benennen?
https://ww1.microchip.com/downloads/en/DeviceDoc/doc0336.pdf

von Thomas Scheidt (Gast)


Lesenswert?

So wie ich das jetzt verstehe, habe ich also 8 Bits (1 0 1 0 A2 A1 A0 
WP)

 das erklärt auch den unterschied von 8 0x51 und 0x59.

von HildeK (Gast)


Lesenswert?

Thomas Scheidt schrieb:
> So wie ich das jetzt verstehe, habe ich also 8 Bits (1 0 1 0 A2 A1 A0
> WP)
>
>  das erklärt auch den unterschied von 8 0x51 und 0x59.

Eigentlich nicht. I2C-Adressen werden meist mit 7 Bit angegeben, in dem 
Fall ist es 101 0 A2 A1 A0, also 0x50 bis 0x57, je nach Ax.
Gibt man sie in 8 Bit an, dann wären es zwei, je eine für Read und Write 
und zwar 1010 A2 A1 A0 R/W; sie würden dann 0xC0 oder 0xC1 lauten, wenn 
die Adressbits auf Null sind.
0x59 kann imho da nicht vorkommen, wenn schon, dann 0xC9 (und 0xC8), 
wenn A2 auf HIGH ist.

von Hubert (Gast)


Lesenswert?

Thomas Scheidt schrieb:
> So wie ich das jetzt verstehe, habe ich also 8 Bits (1 0 1 0 A2 A1 A0
> WP)
>
>  das erklärt auch den unterschied von 8 0x51 und 0x59.

Nein, das erklärt nicht den Unterschied. Die Adresse 0x59 kann es laut 
dem verlinktem Datenblatt nicht geben (1 0 1 0 A2 A1 A0 != 1 0 1 1 0 0 
1). Dein WP ist in Wirklichkeit übrigens das R/W Bit, das an die Adresse 
angehängt wird.
Das deutet auf ein Hardwareproblem hin (Busterminierung, oder 
chinesischer EEPROM Nachbau?), oder deine I2C Scanner Software arbeitet 
nicht sauber.

von Falk B. (falk)


Lesenswert?

Oder eines der Adressbits hängt in der Luft und erzeugt sporadische 
Wechsel der Adresse.

von Thomas Scheidt (Gast)


Lesenswert?

Richtig, mein Fehler

SDA und SCL sind mit 2k gegen 5V und 150R in Serie

von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

Kann man nicht auch noch die Temperatur auslesen?

von Thomas Scheidt (Gast)


Lesenswert?

Gefunden auf Phytec.eu:

"The M24C32-D contains an extra Identification page which is 32 byte 
big. The Identification Page (32 byte) is an additional page which can 
be written and (later) permanently locked in Read-only mode. To start 
communication between the bus master and the slave device, the bus 
master must initiate a Start condition. Following this, the bus master 
sends the device select code, shown
in Table 3 (most significant bit first).

Device select code when addressing the memory array
1 0 1 0 A2 A1 A0 (R/W)

Device select code when accessing the Identification page
1 0 1 1 A2 A1 A0 (R/W) "

k.A. ob Der Atmel da identisch ist...

von EAF (Gast)


Lesenswert?

Thomas Scheidt schrieb:
> k.A. ob Der Atmel da identisch ist...

Aber ich weiß das!
Das Datenblatt ist da klar: Nein!

EAF schrieb:
> Default: 0x50 auf  DS3231 Boards.
Das war allerdings ein Irrtum.
0x57 ist korrekt, für die billig China Boards.

Bei den RTC1307 Boards, aus dem gleichen Teil der Welt, ist die default 
Adresse 0x50

von HildeK (Gast)


Lesenswert?

EAF schrieb:
> EAF schrieb:
>> Default: 0x50 auf  DS3231 Boards.
> Das war allerdings ein Irrtum.
> 0x57 ist korrekt, für die billig China Boards.

Ja, weil sie an den Adressleitungen externe Pullups drin haben, obwohl 
beim Atmel-EE interne Pulldowns vorhanden sind.
Das mag beim M24C32-D auch anders sein, wobei da auch steht: Imput 
impedance für LOW: min. 30kΩ (interessant, für HIGH sind es >500kΩ).
Bei Batteriebetrieb des ganzen Moduls stört das, wie auch die Power-LED. 
Ich habe bei meinem Modul beides ausgebaut.

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.