Ich werde Ihren gesamten Beitrag nach und nach verdauen ...
Angenommen, ein Slave oder Master sendet mehrere Bytes an den Empfänger
auf dem I2C-Bus und die Anzahl der Bytes ist nicht vorher definiert.
Aber es sollte definiert werden. Wenn zufällige Informationen gesendet oder empfangen wurden, können Sie diese niemals interpretieren.
Wie wird der Absender dem Empfänger dann mitteilen, dass er keine Daten mehr hat?
senden?
Der Hersteller bestimmt, wie viele Bits vom Slave empfangen werden müssen. Der Master wird normalerweise von einem Logikgerät wie einem Mikrocontroller, einer CPU usw. geschrieben.
Soweit ich weiß, ist das für den Fall, dass der Absender ist
Der Master sendet dann einen NACK, um dem Slave (Empfänger) mitzuteilen, dass es einen gibt
Keine Daten mehr zu senden.
Nein, nicht ganz richtig. Ein "NACK" tritt auf, wenn der Master nichts vom Slave "hört", nachdem er dieses Bit an den Slave gesendet hat. Es ist, als würde man telefonieren und sagen: "Hallo, bist du da?"
Aber ich frage mich, wie dieses Händeschütteln zwischen einem Meister stattfindet
und Slave, wenn der Slave Sender und der Master Empfänger ist und nur
Der Slave (Absender) weiß, wann keine Daten mehr an den gesendet werden müssen
Empfänger?
Ihre Definition von Sender und Empfänger ist verzerrt. Sowohl der Master als auch der Slave fungieren als Sender und Empfänger. Der Master kann je nach Schreib- bzw. Lesevorgang sowohl senden als auch empfangen.
H Hilfreicher Rat: Lesen Sie möglicherweise ein I2C-Slave-Datenblatt. Suchen Sie nach dem Schlüsselwort "message". Dies sind die Informationen, die der Master an den Slave sendet.
Bild von hier... nicht mein Bild.
Der Master sollte so programmiert sein, dass er die gleiche Länge des Adressrahmens wie der Slave liest, die im Datenblatt des Slaves definiert ist.Möglicherweise können Sie auch eine Adresse eines Slaves festlegen, aber normalerweise nicht viel.Dies hilft bei der Behebung von Konflikten, wenn zwei Slaves dieselbe Adresse haben.
Hier ist ein Beispiel für einen Teil, mit dem ich erst kürzlich gearbeitet habe: einen ADM1276-Hot-Swap-Controller.Es entspricht den PMBUS-Spezifikationen, die I2C-Topologie gilt jedoch weiterhin.Es zeigt Ihnen die Interaktionen von Master und Slave beim Senden, Empfangen, Lesen und Schreiben von Bytes.