Forum: Mikrocontroller und Digitale Elektronik I2C start/stop condition


von Ralph B. (Gast)


Lesenswert?

Hallo,

ich arbeite mich gerade in die Thematik I2C ein und stieß auf etwas 
Verwirrung bezüglich der start/stop condition. In jedem Beispiel, 
welches ich bisher gesehen habe wird zu Beginn des loops die start 
condition gesendet und am Ende die stop condition. Wenn ich jetzt meinen 
Master so programmieren möchte, dass dieser nur mit einem Slave 
kommuniziert, muss ich dann wirklich jedes mal die start/stop condition 
senden? Reicht es nicht wenn ich einmal zu Beginn des Programms die 
start condition sende und am Ende des Programmes (-> also nie) die stop 
condition sende? Oder gäbe es da Probleme?

von Georg A. (georga)


Lesenswert?

> muss ich dann wirklich jedes mal die start/stop condition
> senden?

Jein, Stop ist nicht immer nötig, aber schon diese Fälle sind seeehr 
selten... Allein zB. der Wechsel Write-Address und dann Read-Data von 
einem Flash braucht ein neues Start mit danach gesetztem unteren Bit im 
I2C-Address-Byte. Gleiches gilt für alles, was Register hat. Beim 
Flash-Beschreiben wird das eigentliche Schreiben auch durch Stop 
ausgelöst.

von Sören K. (foxalem)


Lesenswert?

Im Grunde schon, ohne diese conditions wird der Bus nicht funktionieren 
da die einzelnen Geräte nicht wissen was du machen willst. Es ist zwar 
etwas aufwändig aber dafür kann man viel Peripherie über 2 Drähte 
abwickeln. SPI ist da etwas einfacher ;)

Lg

von Klaus (Gast)


Lesenswert?

Ralph B. schrieb:
> muss ich dann wirklich jedes mal die start/stop condition
> senden?

Ja. Und sei doch froh, daß auf die Art ganz einfach klar ist, wo der 
Anfang und das Ende einer Message ist. Da muß man nicht erst z.B nach 
einem Newline in der Payload suchen. Master und Slave synchronisieren 
sich von ganz alleine auf Message-Ebene.

MfG Klaus

von Clemens L. (c_l)


Lesenswert?

Ralph B. schrieb:
> muss ich dann wirklich jedes mal die start/stop condition senden?

Rein theoretisch nicht. Aber irgendein zufälliges Reset des Slaves führt 
dann dazu, dass dein System nicht mehr funktioniert. Du solltest also 
regelmäßig (Stop+)Start senden, und dieses nur manchmal zu machen ist 
aufwändiger als jedesmal.

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.