DS1307-placa de conexiones

Quiero construir un reloj RTC para Raspberry Pi. Adafruit tiene una guía para lograr esto con Dallas DS1307. En el esquema ponen una resistencia de 2.2K entre VCC y SCL y hacen lo mismo para VCC y SDA. SQLW está recién conectado. Pero en la hoja de datos del IC, se propone que las resistencias estén en otro lugar:

Entrada/salida de datos en serie. SDA es la entrada/salida de datos para la interfaz serial I2C. El pin SDA es de drenaje abierto y requiere una resistencia pullup externa. El voltaje pullup puede ser de hasta 5,5 V, independientemente del voltaje en VCC.

Controlador de salida/onda cuadrada. Cuando está habilitado, el bit SQWE establecido en 1, el pin SQW/OUT genera una de cuatro frecuencias de onda cuadrada (1 Hz, 4 kHz, 8 kHz, 32 kHz). El pin SQW/OUT es de drenaje abierto y requiere una resistencia pullup externa. SQW/OUT funciona con VCC o VBAT aplicado. El voltaje pullup puede ser de hasta 5,5 V, independientemente del voltaje en VCC. Si no se usa, este pin se puede dejar flotando.

Entonces, la pregunta es: ¿por qué hay una resistencia en SCL y por qué no hay ninguna en SQW?

Respuestas (3)

Parece solo una omisión de línea de la hoja de datos . En la sección Descripción del pin de la página 6

Pin 5-SDA:

Entrada/salida de datos en serie. SDA es la entrada/salida de datos para la interfaz serial I2C. El pin SDA es de drenaje abierto y requiere una resistencia pullup externa. El voltaje pullup puede ser de hasta 5,5 V, independientemente del voltaje en VCC.

Clavija 6- SCL:

Entrada de reloj serie. SCL es la entrada de reloj para la interfaz I2C y se utiliza para sincronizar el movimiento de datos en la interfaz serial. El voltaje pullup puede ser de hasta 5,5 V, independientemente del voltaje en VCC.

Parece que simplemente se salta una línea que indica que el pasador está abierto y requiere el drenaje externo, pero luego agrega la misma línea, indicando el valor de extracción. Mirando versiones anteriores de la hoja de datos, cuando Maxim Integrated era Maxim-Dallas e incluso solo Dallas Semi, la omisión siempre ha estado ahí.

Dicho esto, el diagrama de cableado típico siempre ha sido correcto, mostrando el pull up necesario en ambas líneas i2c, como lo requiere el estándar i2c.

En cuanto al pin SQW/Out, el Pull Up solo es necesario si estás usando la línea. Se puede deshabilitar en la configuración del rtc (o debería decir, viene deshabilitado, debe encenderse). Tener una resistencia pull up en la línea, cuando no la va a usar, desperdiciará energía, agotando innecesariamente una batería (lentamente) en aplicaciones de batería. Como dice la hoja de datos, esto se puede dejar flotando, es decir, sin tirar, si no es necesario. El dispositivo Adafruit lo desglosa para su conveniencia si desea usarlo, pero debe agregar el pull-up externamente si lo desea (o usar la opción pull-up interna de Arduino)

Esas resistencias en SDA y SCL son pullups I 2 C. Para poder trabajar, el autobús I 2 C necesita pullups adecuados. Esto se debe a que las E/S del bus son de drenaje abierto.

Aquí hay un extracto de 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).

El mejor lugar que explica SQW es la hoja de datos . En el diseño de referencia a continuación, el pullup está en la salida SDA, SCL y SQW.

ingrese la descripción de la imagen aquí
A continuación se muestra el diagrama de bloques que representa la etapa de salida SQW.

ingrese la descripción de la imagen aquí

Consulte también la descripción del pin SQW que menciona el requisito de una resistencia pullup.

ingrese la descripción de la imagen aquí

Ambas salidas son de drenaje abierto, lo que significa que necesitan un pull up para estar en rojo correctamente. Adafruit probablemente acaba de hacer que la placa se use como un dispositivo I2C y depende de usted sacar SQW/OUT si va a usarlo.

En otra nota, puede habilitar la extracción interna para el pin del microcontrolador que está utilizando para leer la señal SQW/OUT.