Interfaz serie de dos hilos frente a tres hilos para RTC

Estoy buscando elegir un RTC para un proyecto que tengo en mente.

Tengo las siguientes opciones (vinculadas a la hoja de datos):

  1. DS1307
  2. DS1302

La principal diferencia parece ser el protocolo de comunicación. El DS1307 parece usar algo llamado "interfaz serial de dos cables", mientras que el DS1302 usa algo llamado "interfaz de 3 cables".

Me gustaría usar uno de estos chips para mantener el tiempo en mi microcontrolador ATMega (probablemente ATmega8).

Entonces, ¿en qué se diferencian estos dos y cómo los conectaría?

Respuestas (4)

La principal diferencia entre SPI (interfaz de 3 cables) e I2C (interfaz de 2 cables) es que debe enviar una dirección cuando usa I2C. Entonces no será tan rápido como SPI porque tienes que enviar más datos.

Cuando use SPI, necesitará un pin adicional para la señal de activación del chip. Esto será necesario para cada esclavo. Entonces es más rápido, pero necesita más pines de salida.

Preferiría I2C porque la velocidad no importa en este escenario.

El microcontrolador ATMega tiene periféricos de hardware para ambos métodos, así que depende de usted

Gracias, respondió mi pregunta perfectamente, con una recomendación concisa.
Con solo un esclavo, puede cablear la señal de habilitación al riel de alimentación y usarla como una interfaz de 2 cables. Entonces, SPI es mucho más fácil de depurar porque no necesita lidiar con un protocolo.
@Potatoswatter: eso no es correcto. Primero, SS debe estar conectado a tierra, no a la alimentación. En segundo lugar, aún necesita 3 líneas: reloj, salida de datos y entrada de datos (SCK, MOSI, MISO).
@Potatoswatter: algunos dispositivos SPI pueden usarse con SS forzado habilitado, pero muchos dispositivos lo usan no solo para identificar qué comunicaciones están destinadas a ellos, sino también para marcar el inicio de cada comando.

El primero funciona con I2C . La información de tiempo se encuentra en la Figura 5 en la página 7 de la hoja de datos.

El segundo funciona con SPI . La información de tiempo se encuentra en la Figura 4 en la página 8 de la hoja de datos.

Parece que el ATmega8 tiene TWI y SPI al igual que todas las demás partes de ATmega, puede usar ambos con él, simultáneamente si lo desea. Mi preferencia sería SPI. Es un poco más fácil trabajar con él y, como protocolo, tiende a ser un poco menos temperamental.

Muchas gracias. Tú y Hardwarefreak respondieron simultáneamente, pero encontré que su respuesta fue un poco más completa. Muchas gracias de nuevo.

Depende de algunos factores:

  1. Diseño de hardware: si está utilizando solo este chip con su microcontrolador, cualquiera de ellos servirá. Pero si su diseño consta de dos o más dispositivos que usan la interfaz I2C, entonces tiene sentido usar I2C RTC para que no tenga que hacer una interfaz adicional, simplemente agregue el RTC al bus existente. Lo mismo se aplica a SPI, pero tenga en cuenta que cuando agrega más dispositivos al bus SPI, necesita una señal SS adicional por dispositivo. También depende de los periféricos de hardware que tenga en su microcontrolador. Si su micro tiene un periférico SPI de hardware pero no I2C, entonces tiene sentido usar un dispositivo SPI sobre un dispositivo I2C. Lo mismo ocurre con el periférico I2C.

  2. Diseño de software: otro factor decisivo es si está implementando cualquiera de los protocolos en el software. I2C implica un poco más de trabajo que SPI. También puede encontrar algunas implementaciones de código en la web. Si ya tiene un código I2C con alta confianza, utilícelo. Lo mismo se aplica si tiene bastante confianza con un fragmento de código para SPI que encontró en la web.

  3. Su comprensión: la elección también depende de su comprensión de cualquiera de los protocolos y de lo bien versado que esté con ellos. Si ha usado alguno de ellos antes, tiene sentido usar la experiencia previa.

Gracias Chetán. Aunque no respondió mi pregunta directamente, su respuesta es un excelente complemento a las respuestas anteriores. Extremadamente útil.

Realmente DS1302no utiliza SPI estándar porque la única señal de datos "I/O" se multiplexa en el tiempo durante la comunicación (impulsada por el chip durante una lectura entre el flanco descendente de "CLK" y justo después del flanco ascendente de "CLK ", z alta en todos los demás momentos).

El SPI estándar tiene pines MOSI (Master-Out/Slave-In) y MISO (Master-In/Slave-Out) separados para cada periférico (aunque el MISO puede ser de tres estados por el periférico si está multiplexado con múltiples esclavos).

El DS1302"CE" (anteriormente denominado "/RST") es absolutamente esencial en la comunicación para iniciar/detener cada transmisión, además de almacenar los datos RTC después de una "ráfaga" (NO puede simplemente conectarlo a un riel). Además, el primer bit enviado después de la afirmación de CE indica si está realizando una lectura (1) o una escritura (0). Dicho esto, todavía hay menos sobrecarga de protocolo que usar I2C, porque no necesita preocuparse por el direccionamiento y la sincronización específicos de I2C.

Incluso con la especificación de 2V (la hoja de datos proporciona el tiempo para 2V y 5V), DS1302sigue siendo más rápido que usar I2C y MUCHO más rápido cuando se usa 5V. Tenga en cuenta que cada uno de los 3 pines de comunicaciones tiene DS1302una resistencia pull-down (nominal) de 40k, para evitar que los pines floten.