Forum: Mikrocontroller und Digitale Elektronik Fragen zu I²C


von Hans Schwarzkopf (Gast)


Lesenswert?

Hallo!

Ich will in meinem Partykeller 16 Lampen per Relais in bestimmten
Mustern blinken lassen. Nun hab ich mir gedacht dass ich die Muster von
einer CHIP-Karten (die ja nichts anderes als I²C-EEPROMS sind) lese und
dann in die Tat umsetze.
Mir ist da was nicht so klar. Da am I²C-Bus mehrere Slaves
angeschlossen werden können, hat jeder seine eigene Addresse. Woher
weiß ich die aber? Und wie ist dann der Einsatz von mehreren Karten
möglich? Muss ich dann jede Adresse ausprobieren?
Und was passierz eigendlich, wenn zwei Slaves zufällig die selbe
Adresse haben?

mFg

von Florian (Gast)


Lesenswert?

Hallo,

grundsätzlich hat es im normalen I2C-Modus ja nur 7-Bit Adressen, wobei
Adressen mit 0000xxx und 1111xxx reserviert sind, d.h. es blieben noch
112 Möglichkeiten übrig, die man per Software durchprobieren kann. Das
sollte eigentlich kein Problem sein, denn wenn kein Gerät mit der
getesteten Adresse da ist, gibt's auch kein Acknowledge. Unterstützt
der I2C-Slave General Call, dann geht's noch einfacher. Mit der
General Call Address (0000000 --> eine der bereits erwähnten
Reservierten) wird einfach alles am I2C-Bus angesprochen. Damit lässt
sich dann z.B. auch die I2C-Adresse eines Slaves per Software neu
vergeben.

Wenn zwei Slaves die gleiche Adresse haben, dann antworten sie auch
gleichzeitig. Grundsätzlich arbeitet der I2C-Bus nach dem
Wired-And-Prinzip, d.h. eine 1 wird von einer 0 überschrieben. Wenn
zwei Master gleichzeitig senden, dann prüfen sie jeweils, ob das was
sie schreiben auch auf dem Bus ankommt und wenn nicht, dann hören sie
auf zu schreiben. Im Klartext heisst das, daß sich einer der beiden
durchsetzt. Bei den Slaves gibt es also zwei Möglichkeiten: Entweder
das tut genauso und es antwortet eben nur einer von beiden oder es
antworten beide und es gibt Datenmüll...

Grundsätzlich sollte die I2C-Beschreibung weiterhelfen:

http://www.semiconductors.philips.com/acrobat_download/literature/9398/39340011.pdf

Gruss Florian.

von Peter Kasi (Gast)


Lesenswert?

Einfach mal in ein Datenblatt einer I²C-Chipkarte schauen (z.b. bei
Reichelt), da steht auch drin unter welcher Adresse man die ansprechen
kann. Bei Chipkarten dürfte das immer die selbe sein. Wird wohl auch
nicht in der Spezifikation vorgesehen sein mehrere I²C-Karten an einem
Bus gleichzeitig zu betreiben....

Gruß
Peter

von Ratber (Gast)


Lesenswert?

@Hans



Bei den meisten Speicherkarten ist die Adresse 0xA0 vergeben.
(Telefon,Krankenkarte usw.)



Und "NEIN" einen Adress-Pin gibt es bei Chipkarten nicht.

Entweder du läst imeer nur eine Karte laufen oder du mußt 2 I2C-busse
betreiben.

Eine Billige Alternative ist einfach den Bus umzuschalten.

Entweder per Relais,Transen oder komfortabel mit nem kleinen
Busextender der selber über I2C gesteuert wird.


Such dir was aus. ;-)

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.