Warum drei I2C Adressen beim CS3231-Modul für Arduino?

Gast #6876601
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
Gast #6876858
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.
Gast #6876865
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.
Gast #6877126
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...
Gast #6878934
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.

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