DS1307-Breakout-Board

Ich möchte eine RTC-Uhr für den Raspberry Pi bauen. Adafruit hat eine Anleitung , um dies mit Dallas DS1307 zu erreichen. Auf dem Schaltplan setzen sie einen 2,2-K-Widerstand zwischen VCC und SCL und tun dasselbe für VCC und SDA. SQLW ist nur verdrahtet. Auf dem Datenblatt des ICs werden die Widerstände jedoch an anderer Stelle vorgeschlagen:

Serielle Dateneingabe/-ausgabe. SDA ist der Dateneingang/-ausgang für die serielle I2C-Schnittstelle. Der SDA-Pin ist Open-Drain und erfordert einen externen Pullup-Widerstand. Die Pullup-Spannung kann unabhängig von der Spannung an VCC bis zu 5,5 V betragen.

Rechteckwellen-/Ausgangstreiber. Wenn aktiviert, das SQWE-Bit auf 1 gesetzt, gibt der SQW/OUT-Pin eine von vier Rechteckwellenfrequenzen (1 Hz, 4 kHz, 8 kHz, 32 kHz) aus. Der SQW/OUT-Pin ist Open-Drain und erfordert einen externen Pullup-Widerstand. SQW/OUT arbeitet entweder mit angelegtem VCC oder VBAT. Die Pullup-Spannung kann unabhängig von der Spannung an VCC bis zu 5,5 V betragen. Wenn er nicht verwendet wird, kann dieser Pin schwebend gelassen werden.

Die Frage ist also: Warum gibt es bei SCL einen Widerstand und warum bei SQW keinen?

Antworten (3)

Scheint nur eine Zeilenauslassung aus dem Datenblatt zu sein . Im Abschnitt Pin-Beschreibung auf Seite 6

Pin 5-SDA:

Serielle Dateneingabe/-ausgabe. SDA ist der Dateneingang/-ausgang für die serielle I2C-Schnittstelle. Der SDA-Pin ist Open-Drain und erfordert einen externen Pullup-Widerstand. Die Pullup-Spannung kann unabhängig von der Spannung an VCC bis zu 5,5 V betragen.

Pin 6-SCL:

Serieller Takteingang. SCL ist der Takteingang für die I2C-Schnittstelle und wird verwendet, um die Datenbewegung auf der seriellen Schnittstelle zu synchronisieren. Die Pullup-Spannung kann unabhängig von der Spannung an VCC bis zu 5,5 V betragen.

Es scheint nur eine Zeile zu überspringen, die besagt, dass der Pin ein Open-Drain ist und den externen Pull-up erfordert, fügt dann aber dieselbe Zeile hinzu und gibt den Pull-up-Wert an. Wenn man sich ältere Versionen des Datenblatts ansieht, als Maxim Integrated Maxim-Dallas und sogar nur Dallas Semi war, war die Auslassung immer da.

Allerdings war der typische Schaltplan immer korrekt und zeigt den erforderlichen Pull-up auf beiden i2c-Leitungen, wie es der i2c-Standard erfordert.

Wie beim SQW/Out-Pin ist der Pull Up nur erforderlich, wenn Sie die Leitung verwenden. Es kann in den RTC-Einstellungen deaktiviert werden (oder sollte ich sagen, kommt deaktiviert, muss eingeschaltet werden). Wenn Sie einen Pull-up-Widerstand in der Leitung haben, wenn Sie ihn nicht verwenden, wird Energie verschwendet, wodurch eine Batterie unnötig (langsam) in Batterieanwendungen entladen wird. Wie das Datenblatt sagt, kann dies schwebend gelassen werden, dh kein Hochziehen, wenn es nicht benötigt wird. Das Adafruit-Gerät bricht es für Ihre Bequemlichkeit aus, wenn Sie es verwenden möchten, aber Sie müssen den Pull-up extern hinzufügen, wenn Sie möchten (oder die interne Pull-up-Option des Arduino verwenden).

Diese Widerstände auf SDA und SCL sind I 2 C-Pullups. Um zu funktionieren, benötigt der I 2 C-Bus richtige Klimmzüge. Dies liegt daran, dass die IOs auf dem Bus Open-Drain sind.

Hier ein Auszug von i2c-bus.org:

The I2C bus transmits data and clock with SDA and SCL. First thing to realize: SDA and SCL are open-drain (also known as open-collector in the TTL world), that is I2C master and slave devices can only drive these lines low or leave them open. The termination resistor Rp pulls the line up to Vcc if no I2C device is pulling it down. This allows for features like concurrent operation of more than one I2C master (if they are multi-master capable) or stretching (slaves can slow down communication by holding down SCL).

Der beste Ort, der SQW erklärt, ist das Datenblatt . Im Ref-Design unten befindet sich der Pullup auf dem SDA-, SCL- und SQW-Ausgang.

Geben Sie hier die Bildbeschreibung ein
Das folgende Blockdiagramm zeigt die SQW-Ausgangsstufe.

Geben Sie hier die Bildbeschreibung ein

Siehe auch die Beschreibung des SQW-Pins, in der die Anforderung eines Pullup-Widerstands erwähnt wird.

Geben Sie hier die Bildbeschreibung ein

Beide Ausgänge sind Open-Drain - was bedeutet, dass sie einen Pull-up benötigen, um richtig rot zu sein. Adafruit hat wahrscheinlich gerade dafür gesorgt, dass das Board als I2C-Gerät verwendet wird, und es liegt an Ihnen, SQW/OUT hochzuziehen, wenn Sie es verwenden möchten.

Eine weitere Anmerkung: Sie können den internen Pullup für Ihren Mikrocontroller-Pin aktivieren, den Sie zum Lesen des SQW/OUT-Signals verwenden.