Doppelt vorhandene Slave Adresse bei I2C

OP #528966
Lesenswert?

Ich muss mehrere uC vernetzen. Dabei gibt es 1 Master und viele Slaves. 
Als Schnittstelle dachte ich an I2C. Die Adresse von den Slaves ist über 
Jumper einstellbar. Soweit alles kein Problem.
Wie kann der Master aber erkennen, dass es mehrere Slaves mit gleicher 
Adresse gibt ?
Da in allen Slaves die gleiche Software läuft, verhalten sich alle 
gleich, daher fällt diese doppelte Belegung eigentlich nur bei 
unterschiedlichen Daten auf. Aber dann werden eigentlich die Daten auch 
nur verfälscht, erkennen kann man das also eigentlich nur wenn der 
empfangene Wert schon bekannt ist.
Gast #529055
Lesenswert?

Wenn am Bus zwei Slaves mit geicher Adresse hängen, werden sie erstmal 
beide mit Ack antworten. Es ist nicht erkennbar, ob nur einer oder beide 
Slaves antworten. Es entfällt also erstmal eine wichtige 
Funktionskontrolle.
Wenn dann beide Slaves Daten liefern sollen, werden sie gleichzeitig auf 
den Bus brabbeln.

Ein Ausweg könnte es sein, in beiden Slaves verschiedene 
Sekundäradressen einzurichten, sodass nur der Slave mit der richtigen 
Slave-Adresse weiter aktiv bleibt. Aber das müsste natürlich individuell 
in die Slaves einprogrammiert werden.
Gast #529647
Lesenswert?

@Benedikt K.

>Wie kann der Master aber erkennen, dass es mehrere Slaves mit gleicher
>Adresse gibt ?

Die Slaves müssen auf ein spezielles Kommando hin mit einer zufälligen 
Antwortzeit antworten. Wenn nun zwei Slaves zeitversetzt antworten gibt 
es zwei mögliche Fälle

a) die Antworten überlagern sich nicht zeitlich -> zwei Antworten
b) die Antworten überlagen sich -> Antwort im Eimer

MFG
Falk
Gast #529657
Lesenswert?

@Gugge 73

>Und wie willst du erkennen, ob eine Überlagerung stattfindet oder ob
>diese Überlagerung nicht die Antwort eines einzelnen Slaves ist?

über die Auswertung des Clock stretching oder eine geschickte Prüfsumme.

MfG
Falk

OP #529684
Lesenswert?

Stimmt, das mit der Checksumme ist eine gute Idee. Bleibt halt nur, dass 
eine Zufallszahl gebraucht wird, und daher das Verfahren wieder etwas 
unsicher ist.
Ich denke ohne Zufallszahlen oder eindeutige Seriennummer in jedem uC 
wird es wohl nicht gehen. Irgendwie müssen sich die uC ja unterscheiden.

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