Umgang mit mehreren Pull-up-Widerständen an Modulen


9

Ich habe darüber nachgedacht, ein Modul für ein Entwicklungsboard zu erstellen, das ich vor einigen Tagen erstellt habe und das spi / i2c-Schnittstellen enthält.

Das Problem ist, dass ich keine Pull-up-Widerstände in die MCU-Pins auf der Hauptplatine aufgenommen habe und überlegte, sie in die Module aufzunehmen, um sie "allgemeiner" zu gestalten, damit jeder Benutzer sie verwenden kann, ohne zusätzliche Widerstände hinzufügen zu müssen das Prototyp-Board.

Aber dann stand ich vor dem nächsten Problem. Wenn ich die Pull-up-Widerstände in die zusätzlichen Module einbaue und beispielsweise zwei oder mehr Module an denselben Bus anschließe, werden diese Widerstände parallel geschaltet, sodass der Widerstand abfällt und ihre Funktion nicht erfüllt.

Aber wenn ich die Pull-up-Widerstände zur Hauptplatine hinzufüge, habe ich diese Pins in der MCU immer so aktiv niedrig.

Die Hauptfrage lautet also:

Wie können mehrere Module an denselben Bus angeschlossen werden, auf denen jeweils Pull-up-Widerstände vorhanden sind, die jedoch nicht parallel geschaltet werden, wenn Sie mehr als ein Modul haben? Ist das möglich?

Oder ist die beste Lösung hier, die Pullup-Widerstände in der MCU zu aktivieren und sie nicht in die Module aufzunehmen?

Vielen Dank.-


Erstellen Sie ein separates Modul, das nur Pull-up-Widerstände enthält :)
Alexandr Zarubkin

Antworten:


14

Ich gehe davon aus, dass die Gesamtlänge jedes Ihrer Busse unter 1 Meter liegt, was typisch für I 2 C und SPI ist. Auch die Buskapazität liegt innerhalb der Spezifikation.

Es sollte nur einen (1) Satz Pull-up-Widerstände geben. Daher ist der beste Platz für sie auf der Hauptplatine. Setzen Sie die Klimmzüge nicht auf die Module.

Wenn Sie in einigen Fällen Pull-up haben möchten und in anderen Fällen nicht.

  • Bestücken Sie die Pull-up-Widerstände nicht, wenn Sie sie nicht benötigen.
  • Entwerfen Sie die Hauptsteuerplatine so, dass Klimmzüge über Steckbrücken mit den Signalleitungen verbunden sind. Entfernen Sie die Kurzschlussblöcke, wenn Sie die Klimmzüge nicht benötigen.

edit: Ehrlich gesagt denke ich, dass es ein Fehler ist, dass Sparkfun Klimmzüge an I 2 C-Slave-Modulen anbringt . Leider erkennt nicht jeder, der Module kauft, dass übermäßiges Pull-up ein Problem sein kann. Es wäre schöner, wenn die Controller-Karten (anstelle der Slave-Peripherie-Karten) Klimmzüge mit Lötbrücken hätten. Oh ... Warte ... Arduino trägt keine (optionalen) Klimmzüge (obwohl es vielleicht sollte). Lassen Sie uns also überall Klimmzüge schleppen. Einfachere anfängliche Out-of-the-Box-Erfahrung. Fügen Sie jedoch einige Slave-Module hinzu, und der Bus funktioniert nicht mehr.

Update (Mai 2015):
- Verwandte Diskussion in Kommentaren in einem anderen Thread.
- In den letzten Modulen hat SparkFun begonnen, Löt-Blob-Jumper zwischen Vcc und den I 2 C-Pull-up-Widerständen hinzuzufügen ( Beispiel ). Dadurch können die Klimmzüge leichter getrennt werden.

Update (Dezember 2015):
Ähnliche Fragen zur Fehlerbehebung bei I 2 C mit mehreren Modulen tauchen immer wieder in Message Boards auf. Versuch einer erweiterten allgemeinen Antwort.


Ja, eigentlich war mein Fall ein Beispiel. Zum Beispiel enthalten alle in einigen Geschäften verkauften RTC-Module die Pullup-Resitoren, um ... wie in diesem Fall mit diesen Modulen umzugehen ist. Deshalb habe ich die Hauptfrage fett markiert. :)
Sein Oxygen

1
@SeinOxygen Wenn Sie Module mit Pull-Up-Widerständen sowie einen Controller mit eigenen Pull-Ups haben, werden alle diese Widerstände parallel angezeigt und weisen einen steiferen Pull-Up (kleinerer Widerstand) auf. Angenommen, Sie haben insgesamt 3x (drei) 2,2-kΩ-Widerstände als Klimmzüge. Der gesamte Pull-up-Widerstand beträgt 733 Ω. Das verstößt gegen die I2C-Spezifikation. Was ist zu tun? Entfernen Sie die zusätzlichen Klimmzüge von den Modulen (möglicherweise sollten sie gar nicht vorhanden sein).
Nick Alexeev

@SeinOxygen Mehr zu I2C-Pullup-Werten in diesem Thread .
Nick Alexeev

4

Eine Möglichkeit besteht darin, SIL- oder DIL-Widerstandspakete zu verwenden und diese in Sockel an jedem Modul einzubauen. Wenn Sie ein System mit mehreren Modulen erstellen, ziehen Sie diese aus jedem Modul mit Ausnahme des letzten heraus. Dies spart ein wenig Platz auf dem Board über Jumpern.

Zu den Variationen dieses Themas können FET-Schalter zum Anschließen oder Trennen der Widerstände gehören, die von einem einzelnen Jumper gesteuert werden, oder ein Ersatzstift am Stecker (sodass die Widerstände automatisch getrennt werden, wenn ein anderes Modul eingesteckt wird).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.