An welcher Stelle muss man einen I2C-Puffer verwenden?

Ich entwerfe ein System, das auf einem abstrakten Schema wie folgt ausgedrückt werden kann:

Geben Sie hier die Bildbeschreibung ein

Es gibt eine Haupt-MCU, die als I2C-Master fungiert, und einige Slaves. Einige von ihnen befinden sich auf derselben Leiterplatte, andere sind jedoch mit Kabeln auf anderen Leiterplatten verbunden. Bei Slave7 und Slave8 gibt es eine "serielle" Verbindung: Ein langes Kabel geht von PCB1 zu PCB4 und dann von PCB4 zu PCB5.

Ich arbeite im Standardmodus (100 kHz). Geschwindigkeit ist hier nicht der Fall, sondern Zuverlässigkeit. Diese Schaltung scheint mir aufgrund vieler angeschlossener Geräte und langer Kabel (von 1 m bis 2 m) viel Kapazität zu haben. Ich denke darüber nach, I2C-Puffer wie PCA9515A zu verwenden.

Ich ziehe einige Optionen in Betracht:

Verwenden Sie überhaupt keine Puffer, vielleicht ist es bei dieser Geschwindigkeit gut genug für Klimmzüge mit geringem Widerstand?

Verwenden Sie nur 1 Puffer, um den Bus auf 2 Seiten zu teilen: Auf der 1. Seite: Master, Slave1, Slave2, Slave3 und Slave4. auf der anderen Seite: Slave5, 6, 7, 8.

Verwenden Sie viele Puffer (jede Leiterplatte hätte einen). PCB4 hätte 2, da es den Bus zu PCB5 "überbrückt".

Was wäre Ihrer Meinung nach notwendig? Ich verstehe, dass dies eine Funktion der Buskapazität und der Kabellängen ist, aber ich suche hier nach einem skalierbaren generischen Ansatz. Ich würde mich über jede Hilfe freuen.

Seitenhinweise: Alle Geräte sind 3V3-Logik, also keine Verstärkung, wenn die Signalamplitude höher gemacht wird. Ich habe mich auch gefragt, ob die SDA-Bussignale mit dedizierten ICs in Differenzpaare umgewandelt werden sollen, aber das scheint zu viel zu sein, die Kabel sind nicht so lang.

Antworten (1)

Sie sollten immer dann einen Puffer verwenden, wenn die Buskapazität über 400 pF liegt . Wenn Sie das gerade so schaffen, können Sie die Entscheidung treffen, stärkere Klimmzüge anstelle eines Puffers zu verwenden.

Wenn Sie von Bord zu einem Kabel gehen, sollten Sie im Allgemeinen dort einen Puffer haben. Wenn Sie jemals längere Kabel haben wollten, wären Sie froh, dass es einen Puffer gibt, der dies unterstützt. Weitere Informationen dazu finden Sie in dieser Frage .

Ich denke auch so. Aber würden Sie zum Beispiel 3 Puffer auf PCB1 verwenden, da es auf 3 verschiedene Platinen aufgeteilt ist, oder würde 1 für alle ausreichen?
@Bremen Ein Puffer pro Offboarding-Verbindung. Wenn Sie die Slave-Boards verketten, haben Sie nur einen Puffer an jedem Anschlusspunkt.
Das scheint am vernünftigsten zu sein, aber es sind viele Puffer ... 8, um genau zu sein.
@Bremen Nun, I2C ist nicht als Board-to-Board-Kommunikationsprotokoll konzipiert. Wenn Sie es also auf diese Weise verwenden, sollte es nicht sauber und einfach sein.