Interfaz de RTC (DS1307) con microcontrolador y su programación

Pruebe Nuestro Instrumento Para Eliminar Los Problemas





RTC es un dispositivo electrónico que juega un papel esencial en diseño de sistema integrado en tiempo real . Proporciona una hora y una fecha precisas en varias aplicaciones, como el reloj del sistema, el sistema de asistencia de los estudiantes y la alarma, etc., que realizan un seguimiento de la hora actual y proporcionan un resultado consistente para la tarea respectiva. Este artículo presenta la interfaz de RTC con el microcontrolador 8051 y el acceso básico a los registros internos.

Interfaz RTC con microcontrolador 8051

Interfaz RTC con microcontrolador 8051



Programación e interfaz de RTC

La interfaz del RTC con el microcontrolador 8051 es similar a todos los demás tipos de “relojes de tiempo real” conectados a él. Así que veamos la interfaz simple de RTC con Microcontrolador 8051 y procedimiento de programación que interviene en él.


Paso 1: seleccione el dispositivo RTC

Los diversos tipos de chips RTC están disponibles en el mundo integrado en tiempo real, que se clasifican en función de varios criterios, como el tipo de paquete, la tensión de alimentación y la configuración de las clavijas, etc. Algunos tipos de dispositivos RTC son



  • Interfaz serial de dos cables (bus I2C)
  • Interfaz serial de tres cables (BUS USB)
  • Interfaz serial de cuatro hilos (SPI BUS)

Primero, debemos seleccionar el tipo de dispositivo RTC por categoría según los requisitos, como I2C Bus RTC o SPI Bus RTC u otro, que se adapte a la interfaz con el microcontrolador respectivo. Luego, podemos seleccionar características del dispositivo RTC según los requisitos de la aplicación, como la duración de la batería, el paquete adecuado y la frecuencia del reloj. Consideremos la interfaz de dos cables RTC con microcontrolador 8051 como DS1307 .

Paso 2: Registro interno y dirección del dispositivo RTC

RTC significa reloj en tiempo real que proporciona años, meses, semanas, días, horas, minutos y segundos según la frecuencia del cristal. RTC consta de incorporado Memoria RAM para almacenamiento de datos . Se proporcionará una batería de respaldo en caso de falla de la fuente de alimentación principal conectando una batería al dispositivo RTC.

Configuración de RTC DB1307:

Bloques internos de RTC y diagrama de clavijas

Bloques internos de RTC y diagrama de clavijas

A0, A1, A2: son pines de dirección del chip RTC DB1307, que se pueden usar para comunicarse con el dispositivo maestro. Podemos controlar ocho dispositivos con interfaz RTC con Microcontrolador 8051 por bits A0, A1, A2 utilizando el protocolo I2C.


VCC y GND: VCC y GND son pines de alimentación y tierra respectivamente. Este dispositivo funciona con un rango de 1.8V a 5.5V.

VBT: VBT es un pin de alimentación de batería. La fuente de alimentación de la batería debe mantenerse entre 2 V y 3,5 V.

SCL: SCL es un pin de reloj en serie y se utiliza para sincronizar datos en la interfaz en serie.

SDL: Es un pin de entrada y salida en serie. Se utiliza para transmitir y recibir datos en la interfaz serial.

Salida del reloj: Es un pin de salida de onda cuadrada opcional.

OSC0 y OSC1: Estos son pines de oscilador de cristal que se utilizan para proporcionar las señales de reloj al dispositivo RTC. La frecuencia estándar del cristal de cuarzo es de 22,768 KHz.

Direccionamiento del dispositivo:

El protocolo de bus I2C permite muchos dispositivos esclavos a la vez. Cada dispositivo esclavo debe constar de su propia dirección para representarlo. El dispositivo maestro se comunica con un dispositivo esclavo particular mediante una dirección. La dirección del dispositivo RTC es '0xA2', donde '1010' viene dado por el fabricante y A0, A1, A2 son direcciones definidas por el usuario, que se utilizan para comunicar ocho dispositivos RTC en el Protocolo de bus I2C .

Dirección de dispositivo

Dirección de dispositivo

El bit R / W se utiliza para realizar operaciones de lectura y escritura en RTC. Si R / W = 0, se realiza la operación de escritura y R / W = 1 para la operación de lectura.

Dirección de operación de lectura de RTC = '0xA3'

Dirección de operación de escritura de RTC = '0xA2'

Registros de memoria y dirección:

Los registros RTC están ubicados en ubicaciones de direcciones de 00h a 0Fh y los registros de memoria RAM están ubicados en ubicaciones de direcciones de 08h a 3Fh como se muestra en la figura. Los registros RTC se utilizan para proporcionar la funcionalidad de calendario y la hora del día de conducción y para mostrar los fines de semana.

Registros de memoria y dirección

Registros de memoria y dirección

Registros de control / estado:

DB1307 consta de dos registros adicionales, como control / status1 y control / status2, que se utilizan para controlar el reloj en tiempo real y interrumpe .

Registro de control / estado 1:

Registro de estado de control 1

Registro de estado de control 1

  • TEST1 = 0 modo normal

= 1 modo de prueba de reloj EXT

  • STOP = 0 RTC comienza

= 1 parada RTC

  • TESTC = 0 encendido reset desactivado

= encendido reinicio habilitado

Registro de control / estado 2:

Registro de estado de control 2

Registro de estado de control 2

  • TI / TP = 0 INT activo todo el tiempo

= 1 INT activo tiempo requerido

  • AF = 0 La alarma no coincide

= 1 coincidencia de alarma

  • TF = 0 No se produce desbordamiento del temporizador

= 1 Se produce un desbordamiento del temporizador

  • ALE = 0 Interrupciones de alarma desactivadas

= 1 Interrupciones de alarma habilitadas

  • TIE = 0 Interrupciones del temporizador desactivadas

= 1 Habilitación de interrupciones del temporizador

Paso 3: Interfaz de RTC ds1307 con 8051

RTC puede ser interconectado al microcontrolador mediante el uso de diferentes protocolos de bus serie como I2C y Protocolos SPI que proporcionan enlace de comunicación entre ellos. La figura muestra la interfaz del reloj en tiempo real con el microcontrolador 8051 utilizando el protocolo de bus I2C. I2C es un protocolo en serie bidireccional, que consta de dos cables, como SCL y SDA, para transferir datos entre dispositivos conectados al bus. El microcontrolador 8051 no tiene un dispositivo RTC incorporado, por lo tanto, lo hemos conectado externamente a través de un comunicación serial para asegurar los datos consistentes.

Interfaz RTC con microcontrolador 8051

Interfaz RTC con microcontrolador 8051

Los dispositivos I2C tienen salidas de drenaje abiertas, por lo tanto, se deben conectar resistencias pull-up a la línea de bus I2C con una fuente de voltaje. Si las resistencias no están conectadas a las líneas SCL y SDL, el bus no funcionará.

Paso 4: formato de encuadre de datos RTC

Dado que la interfaz RTC con el microcontrolador 8051 utiliza el bus I2C, la transferencia de datos se realiza en forma de bytes o paquetes y cada byte va seguido de un acuse de recibo.

Transmisión de marco de datos:

En el modo de transmisión, el maestro libera la condición de inicio después de seleccionar el dispositivo esclavo por bit de dirección. El bit de dirección contiene 7 bits, que indican los dispositivos esclavos como dirección ds1307. Los datos en serie y el reloj en serie se transmiten en líneas SCL y SDL. Las condiciones START y STOP se reconocen como el comienzo y el final de una transferencia en serie. Las operaciones de recepción y transmisión van seguidas del bit R / W.

Transmisión de marco de datos

Transmisión de marco de datos

Comienzo: Principalmente, la secuencia de transferencia de datos iniciada por el maestro que genera la condición de inicio.

Dirección de 7 bits: Después de eso, el maestro envía la dirección del esclavo en dos formatos de 8 bits en lugar de una única dirección de 16 bits.

Dirección de registro de control / estado: La dirección del registro de control / estado es para permitir los registros de estado de control.

Registro de control / estado 1: El registro de estado de control1 utilizado para habilitar el dispositivo RTC

Registro de control / estado 2: Se utiliza para habilitar y deshabilitar interrupciones.

R / W: Si el bit de lectura y escritura es bajo, se realiza la operación de escritura.

POBRE DE MÍ: Si la operación de escritura se realiza en el dispositivo esclavo, el receptor envía un ACK de 1 bit al microcontrolador.

Detener: Una vez finalizada la operación de escritura en el dispositivo esclavo, el microcontrolador envía la condición de parada al dispositivo esclavo.

Recibiendo marco de datos:

Recibiendo marco de datos

Recibiendo marco de datos

Comienzo: Principalmente, la secuencia de transferencia de datos iniciada por el maestro que genera la condición de inicio.

Dirección de 7 bits: Después de eso, el maestro envía la dirección del esclavo en dos formatos de 8 bits en lugar de una única dirección de 16 bits.

Dirección de registro de control / estado: La dirección del registro de control / estado es para permitir registros de control de estado.

Registro de control / estado 1: El registro de estado de control 1 utilizado para habilitar el dispositivo RTC

Registro de control / estado 2: Se utiliza para habilitar y deshabilitar interrupciones.

R / W: Si el bit de lectura y escritura es alto, se realiza la operación de lectura.

POBRE DE MÍ: Si la operación de escritura se realiza en el dispositivo esclavo, el receptor envía un ACK de 1 bit al microcontrolador.

Detener: Una vez finalizada la operación de escritura en el dispositivo esclavo, el microcontrolador envía la condición de parada al dispositivo esclavo.

Paso 5: programación de RTC

Operación de escritura de maestro a esclavo:

  1. Emitir la condición de inicio de maestro a esclavo
  2. Transfiera la dirección del esclavo en modo de escritura en la línea SDL
  3. Envíe la dirección del registro de control
  4. Enviar el valor de registro de control / estado
  5. Enviar el valor del registro de control / estado 2
  6. Envíe la fecha de los minutos, segundos y horas similares
  7. Envía el bit de parada

#incluir

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
inicio vacío ()
hosts vacíos (carácter sin firmar)
retraso (carácter sin firmar)

vacío principal()
{

comienzo()
escribir (0xA2) // dirección de esclavo //
write (0x00) // dirección de registro de control //
escribir (0x00) // valor del registro de control 1 //
escribir (0x00) // controlar regiter2 vlaue //
escribir (0x28) // valor seg //
write (0x50) // valor del minuto //
write (0x02) // valor de horas //
}

inicio vacío ()
{

SDA = 1 // procesando los datos //
SCL = 1 // reloj alto //
retraso (100)
SDA = 0 // envió los datos //
retraso (100)
SCL = 0 // la señal del reloj es baja //
}
escritura vacía (carácter d sin firmar)
{

carácter sin signo k, j = 0 × 80
para (k = 0k<8k++)
{
SDA = (d y j)
J = j >> 1
SCL = 1
retraso (4)
SCL = 0
}
SDA = 1
SCL = 1
retraso (2)
c = SDA
retraso (2)
SCL = 0
}
retraso vacío (int p)
{
unsignedinta, b
Para (a = 0a<255a++) //delay function//
Para (b = 0b}

Leer operación de esclavo a maestro:

#incluir
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
inicio vacío ()
escritura vacía (carácter utilizado)
lectura vacía ()
vacío ack ()
demora nula (carácter sin firmar)
vacío principal()
{
comienzo()
write (0xA3) // dirección esclava en modo lectura //
leer()
Pobre de mí()
sec = valor
}
inicio vacío ()
{

SDA = 1 // procesando los datos //
SCL = 1 // reloj alto //
retraso (100)
SDA = 0 // envió los datos //
retraso (100)
SCL = 0 // la señal del reloj es baja //
}
escritura vacía (carácter d sin firmar)
{

carácter sin signo k, j = 0 × 80
para (k = 0k<8k++)
{
SDA = (d y j)
J = j >> 1
SCL = 1
retraso (4)
SCL = 0
}
SDA = 1
SCL = 1
retraso (2)
c = SDA
retraso (2)
SCL = 0
}
retraso vacío (int p)
{
unsignedinta, b
Para (a = 0a<255a++) //delay function//
Para (b = 0b}
Lectura nula ()
{
Carácter sin signo j, z = 0 × 00, q = 0 × 80
SDA = 1
para (j = 0j<8j++)
{
SCL = 1
retraso (100)
bandera = SDA
si (bandera == 1)

z = (z
vacío ack ()
{
SDA = 0 // La línea SDA baja //
SCL = 1 // el reloj va de mayor a menor //
retraso (100)
SCL = 0
}

Estos son los pasos necesarios para la interconexión de RTC con el microcontrolador 8051. Además de estos pasos, los marcos de datos utilizados para transferir y recibir los datos también se analizan en este artículo para que el usuario los comprenda con la programación adecuada. Para obtener más ayuda con respecto a este concepto, puede dejar un comentario a continuación.