Cómo conectar I2C-EEPROM con el microcontrolador 8051

Cómo conectar I2C-EEPROM con el microcontrolador 8051

El término abreviatura I2C o IIC es una circuito integrado y se llama como elevé C. I2C es un bus de computadora en serie , que es inventado por semiconductores NXP, anteriormente se denominaba semiconductores Philips. El bus I2C se utiliza para conectar circuitos integrados periféricos de baja velocidad a microcontroladores y procesadores . En el año 2006, para implementar el protocolo I2C no es necesaria ninguna tarifa de licencia. Pero se necesita una tarifa para obtener la dirección esclava I2C asignada por los semiconductores NXP.

Algunos competidores como Texas Instruments, Siemens AG, NEC, Motorola, Intersil y STMicroelectronics han anunciado productos I²C adecuados para el mercado a mediados de la década de 1990. En el año 1995, Intel define SMBus, que es un subgrupo de I²C que establece que los protocolos son más estrictos. El objetivo principal de SMBus es respaldar la interoperabilidad y la solidez. Por lo tanto, los sistemas I²C actuales incluyen reglas y políticas de SMBus, a veces es compatible con I2C y SMBus con una mínima reconfiguración.


Autobús I2C

Autobús I2C



Interfaz I2C Bus-EEPROM con microcontrolador 8051

¿Qué es el bus I2C?

El bus I2c utiliza dos líneas bidireccionales de drenaje abierto como SDA (línea de datos en serie) y SCl (línea de reloj en serie) y estas se activan con resistencias. El bus I2C permite que un dispositivo maestro inicie la comunicación con un dispositivo esclavo. Los datos se intercambian entre estos dos dispositivos. Los voltajes típicos utilizados son + 3,3 V o + 5 V, aunque se permiten sistemas con voltajes adicionales.

Interfaz I2C

Interfaz I2C

EEPROM

ROM programable eléctricamente borrable (EEPROM) es una ROM modificable por el usuario que se puede quitar y reprogramar con frecuencia mediante la aplicación de un voltaje eléctrico superior al normal. Una EEPROM es un tipo de memoria no volátil que se utiliza en dispositivos electrónicos como computadoras para almacenar pequeñas cantidades de datos que deben guardarse cuando se desconecta la alimentación.

8051 Tablero pulido

La placa 8051 Slicker está especialmente diseñada para ayudar a los estudiantes técnicos en el área de sistemas embebidos . Este kit está diseñado de tal manera que todas las características de Microcontrolador 8051 posiblemente sea utilizado por los estudiantes. Esta placa frontal es compatible con ISP (In System Programming) que se realiza a través del puerto serie. Este kit y el 8051 de NXP se proponen para suavizar el progreso de la depuración de muchos diseños que rodean a los microcontroladores de 8 bits de velocidad.

Interfaz I2C - EEPROM

La siguiente figura muestra la interfaz I2C-EEPROM con el microcontrolador 8051. Aquí, I2C es un protocolo maestro-esclavo, que incluye los datos junto con el pulso de reloj. Normalmente, el dispositivo maestro cambiaba la línea de reloj, SCL. Esta línea ordena la sincronización de los datos que se transfieren en el bus I2C. A menos que se opere el reloj, no se transferirán datos. Todos los esclavos están controlados por el mismo reloj, SCL.


Interfaz I2C - EEPROM

Interfaz I2C - EEPROM

El bus I2C admite varios dispositivos donde cada dispositivo está identificado por una dirección única, ya sea un controlador LCD, tarjeta de memoria, microcontrolador o interfaz de teclado que puede funcionar como Tx o Rx depende del funcionamiento del dispositivo. El controlador está diseñado para controlar el dispositivo EEPROM a través del protocolo I2C. Aquí, el protocolo I2C funciona como dispositivo maestro y regula EEPROM y funciona como esclavo. Las operaciones de R / W son competentes al transferir un conjunto de señales de control que comprenden el bus de datos de dirección Y / O. Estas señales deben ir acompañadas de señales de reloj adecuadas.

Interfaz I2C Bus-EEPROM con microcontrolador 8051

Si desea leer, escribir y borrar EEPROM utilizando el bus I2C en la placa de percutor 8051. Interfaz de I2 Bus-EEPROM con El microcontrolador 8051 es muy simple . El funcionamiento de esta interfaz es enviar una señal como WRITE, seguida de un bus de datos y direcciones. En esta operación, la EEPROM se utiliza para almacenar los datos. En el kit 8051, dos números de líneas EEPROM están regulados por controladores compatibles con I2C. El SCL y SDA están conectados a la EEPROM IC serie basada en I2C.

Interfaz I2C Bus-EEPROM con microcontrolador 8051

Interfaz I2C Bus-EEPROM con microcontrolador 8051

Al usar líneas SDA y SCL I2C, las operaciones de lectura y escritura de EEPROM se realizan en 8051 Slicker Kit

La interfaz de I2C es tan simple y en cada uno de los datos de lectura / escritura en EEPROM. El retraso depende del compilador cómo mejora los bucles tan pronto como realiza cambios en las opciones, el retraso varía.

Código fuente para interfaz I2C

#incluir
#incluir
#incluir

#define ACK 1
#define NO_ACK 0

carácter sin firmar i
carácter sin firmar EData [5]
datos de caracteres sin firmar
nulo InitSerial (nulo)
void DelayMs (unsigned int)
anular WriteI2C (carácter sin firmar)
inicio vacío (vacío)
vacío Stop (vacío)
void ReadBYTE (unsigned int)
void WriteBYTE (int sin firmar)
carácter sin firmar ReadI2C (bit)

sbit SCL = P2 ^ 0 // conectar al pin SCL (Reloj)
sbit SDA = P2 ^ 1 // conectar al pin SDA (Datos)

//—————————————
// Programa principal
//—————————————
vacío principal (vacío)
{
InitSerial () // Inicializar puerto serie
putchar (0x0C) // borrar hiper terminal
RetrasoMs (5)
WriteBYTE (0x0000)
WriteI2C ('A') // Escriba los datos aquí
WriteI2C ('B')
WriteI2C ('C')
WriteI2C ('D')
WriteI2C ('E')
EscribirI2C ('F')
Detener()
Retraso (10)

ReadBYTE (0x0000)
EData [0] = ReadI2C (NO_ACK)
EData [1] = ReadI2C (NO_ACK)
EData [2] = ReadI2C (NO_ACK)
EData [3] = ReadI2C (NO_ACK)
EData [4] = ReadI2C (NO_ACK)
EData [5] = ReadI2C (NO_ACK)

para (i = 0i<6i++)
{
printf ('valor =% c n', EData [i]) // mostrar datos * /
Retraso (100)
}

mientras (1)
}

//—————————————
// Inicializar puerto serie
//—————————————
nulo InitSerial (nulo)
{
SCON = 0x52 // setup serial port control
TMOD = 0x20 // hardware (9600 BAUD @ 11.0592MHZ)
TH1 = 0xFD // TH1
TR1 = 1 // Temporizador 1 encendido
}

//——————————-
// iniciar I2C
//——————————-
inicio vacío (vacío)
{
SDA = 1
SCL = 1
_button _ () _ nop_ ()
SDA = 0
_button _ () _ nop_ ()
SCL = 0
_button _ () _ nop_ ()
}

//——————————-
// detener I2C
//——————————-
vacío Stop (vacío)
{
SDA = 0
_button _ () _ nop_ ()
SCL = 1
_button _ () _ nop_ ()
SDA = 1
}

//——————————-
// Escribe I2C
//——————————-
anular WriteI2C (datos de caracteres sin firmar)
{

para (i = 0i<8i++)
{
SDA = (Datos y 0x80)? 1: 0
SCL = 1SCL = 0
Datos<<=1
}

SCL = 1
_button _ () _ nop_ ()
SCL = 0

}

//——————————-
// Leer I2C
//——————————-
carácter sin firmar ReadI2C (bit ACK_Bit)
{

Comienzo()
EscribirI2C (0xA1)

SDA = 1
para (i = 0i<8i++)

SCL = 1
Datos<<= 1
Fecha = (Fecha

si (ACK_Bit == 1)
SDA = 0 // Enviar ACK
demás
SDA = 1 // Enviar NO ACK

_button _ () _ nop_ ()
SCL = 1
_button _ () _ nop_ ()
SCL = 0
Detener()
devolver datos
}

//——————————-
// Leer 1 byte del formulario I2C
//——————————-
Void ReadBYTE (unsigned int Addr)
{
Comienzo()
EscribirI2C (0xA0)
WriteI2C ((carácter sin firmar) (Dirección >> 8) y 0xFF)
WriteI2C ((carácter sin firmar) Addr & 0xFF)
}

//——————————-
// Escribe 1 byte en I2C
//——————————-
Void WriteBYTE (dirección int sin firmar)
{
Comienzo()
EscribirI2C (0xA0)
WriteI2C ((carácter sin firmar) (Addr >> 8) & 0xFF) // enviar dirección alta
WriteI2C ((carácter sin firmar) Addr & 0xFF) // enviar dirección baja
}

//—————————————
// Función de retardo mS
//—————————————
void DelayMs (recuento de int sin firmar)
{// mSec Retraso 11.0592 Mhz
unsigned int i // Keil v7.5a
mientras (cuenta)
{
i = 115
mientras (i> 0) i–
contar-
}
}

Por lo tanto, se trata de la implementación de la interfaz I2C. Esperamos que comprenda mejor este concepto. Además, cualquier consulta sobre este concepto o dispositivos de interfaz Por favor, dé sus valiosas sugerencias comentando en la sección de comentarios a continuación.