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?
> 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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.