Com interfície I2C-EEPROM amb microcontrolador 8051

Proveu El Nostre Instrument Per Eliminar Problemes





El terme abreviatura I2C o IIC és un inter circuit integrat i es diu com he quadrat C. I2C és un bus d’ordinador en sèrie , que va ser inventat pels semiconductors NXP anteriorment es deia com a semiconductors Philips. El bus I2C s’utilitza per connectar circuits perifèrics integrats a baixa velocitat microcontroladors i processadors . L’any 2006, per implementar el protocol I2C no és necessària cap taxa de llicència. Però és necessària una tarifa per obtenir l'adreça esclava I2C assignada pels semiconductors NXP.

Alguns competidors com Texas Instruments, Siemens AG, NEC, Motorola, Intersil i STMicroelectronics han anunciat al mercat els productes I²C adequats a mitjans dels anys noranta. L'any 1995, SMBus és definit per Intel, que és un subgrup de I²C que afirma que els protocols són més estrictes. L’objectiu principal de SMBus és donar suport a la interoperabilitat i la robustesa. Per tant, els sistemes I²C actuals inclouen regles i polítiques de SMBus, de vegades admet tant I2C com SMBus amb una reconfiguració mínima.




Autobús I2C

Autobús I2C

Interfície I2C Bus-EEPROM amb microcontrolador 8051

Què és el bus I2C

El bus I2c utilitza dues línies bidireccionals de drenatge obert, com ara SDA (línia de dades en sèrie) i SCl (línia de rellotge en sèrie), que s’estrenen amb resistències. El bus I2C permet a un dispositiu mestre iniciar la comunicació amb un dispositiu esclau. Les dades s’intercanvien entre aquests dos dispositius. Les tensions típiques utilitzades són + 3,3 V o + 5 V, tot i que es permeten sistemes amb tensions addicionals.



Interfície I2C

Interfície I2C

EEPROM

ROM programable esborrable elèctricament (EEPROM) és una ROM modificable per l'usuari que es pot eliminar i reprogramar amb freqüència mitjançant l'aplicació d'una tensió elèctrica superior a la normal. Una EEPROM és un tipus de memòria no volàtil que s’utilitza en dispositius electrònics com els ordinadors per emmagatzemar petites quantitats de dades que s’han d’estalviar quan es desconnecta l’energia.

8051 Slicker Board

La placa Slicker 8051 està especialment dissenyada per ajudar els estudiants tècnics de la zona de sistemes incrustats . Aquest kit està dissenyat de tal manera que totes les funcions de Microcontrolador 8051 possiblement seran utilitzats pels estudiants. Aquest tauler de suport admet ISP (en programació del sistema) que es fa a través del port sèrie. Aquest kit i 8051 de NXP es proposen per suavitzar el progrés de la depuració de molts dissenys al voltant dels microcontroladors de velocitat de 8 bits.

Interfície I2C - EEPROM

La següent figura mostra la interfície I2C-EEPROM amb el microcontrolador 8051. Aquí, I2C és un protocol mestre-esclau, que inclou les dades junt amb el pols del rellotge. Normalment, el dispositiu mestre canviava la línia de rellotge, SCL. Aquesta línia ordena la sincronització de les dades que es transfereixen al bus I2C. Si no s’activa el rellotge, no es transferiran dades. Tots els esclaus estan controlats pel mateix rellotge, SCL.


Interfície I2C - EEPROM

Interfície I2C - EEPROM

El bus I2C admet els diversos dispositius on cada dispositiu s'identifica mitjançant una adreça única, ja sigui un controlador LCD, targeta de memòria, microcontrolador o interfície del teclat que pot funcionar com Tx o Rx depèn del funcionament del dispositiu. El controlador està dissenyat per controlar el dispositiu EEPROM mitjançant el protocol I2C. Aquí, el protocol I2C funciona com a dispositiu mestre i regula EEPROM i funciona com a esclau. Les operacions R / W són competents mitjançant la transferència d’un conjunt de senyals de control que comprenen l’adreça I / O el bus de dades. Aquests senyals s’han d’atendre amb senyals de rellotge adequats

Interfície I2C Bus-EEPROM amb microcontrolador 8051

Si voleu llegir, escriviu i esborreu EEPROM utilitzant el bus I2C al tauler de vanguardia 8051. Interfície d’I2 Bus-EEPROM amb El microcontrolador 8051 és molt senzill . El funcionament d’aquesta interfície és enviar un senyal com WRITE, seguit de bus de dades i adreces. En aquesta operació, l'EEPROM s'utilitza per emmagatzemar les dades. Al kit 8051, dos números de línies EEPROM estan regulats per controladors compatibles amb I2C. El SCL i l'SDA estan connectats a l'IC EEPROM serial basat en I2C.

Interfície I2C Bus-EEPROM amb microcontrolador 8051

Interfície I2C Bus-EEPROM amb microcontrolador 8051

Mitjançant l'ús de línies SDA i SCL I2C, les operacions de lectura i escriptura d'EEPROM es realitzen en el kit Slicker 8051

La interfície d’I2C és tan senzilla i en cada lectura i escriptura de dades a EEPROM. El retard depèn de com millori el bucle del compilador tan bon punt feu canvis a les opcions, el retard varia.

Codi font de la interfície I2C

#incloure
#incloure
#incloure

#define ACK 1
#define NO_ACK 0

unsigned char i
EData de caràcters sense signar [5]
Dades de caràcters sense signar
void InitSerial (void)
void DelayMs (int sense signar)
void WriteI2C (caràcter sense signar)
void Start (buit)
void Stop (buit)
void ReadBYTE (int signat)
void WriteBYTE (int signat)
ReadI2C (bit) sense signar

sbit SCL = P2 ^ 0 // connectar-se al pin SCL (rellotge)
sbit SDA = P2 ^ 1 // connectar-se al pin SDA (dades)

// -------------
// Programa principal
// -------------
void main (buit)
{
InitSerial () // Inicialitza el port sèrie
putchar (0x0C) // esborra la terminal hiper
DelayMs (5)
WriteBYTE (0x0000)
WriteI2C (‘A’) // Write Data’s Here
WriteI2C ('B')
WriteI2C ('C')
WriteI2C ('D')
WriteI2C ('E')
WriteI2C ('F')
Atura()
DelayMs (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)

per a (i = 0i<6i++)
{
printf (“valor =% c n”, EData [i]) // mostra les dades * /
DelayMs (100)
}

mentre que (1)
}

// -------------
// Inicialitzar el port sèrie
// -------------
void InitSerial (void)
{
SCON = 0x52 // setup serial port control
TMOD = 0x20 // maquinari (9600 BAUD @ 11.0592MHZ)
TH1 = 0xFD // TH1
TR1 = 1 // Temporitzador 1 activat
}

// -----------
// iniciar I2C
// -----------
void Start (buit)
{
SDA = 1
SCL = 1
_botó _ () _ nop_ ()
SDA = 0
_botó _ () _ nop_ ()
SCL = 0
_botó _ () _ nop_ ()
}

// -----------
// aturar I2C
// -----------
void Stop (buit)
{
SDA = 0
_botó _ () _ nop_ ()
SCL = 1
_botó _ () _ nop_ ()
SDA = 1
}

// -----------
// Escriu I2C
// -----------
void WriteI2C (dades de caràcters sense signar)
{

per a (i = 0i<8i++)
{
SDA = (dades i 0x80)? 1: 0
SCL = 1SCL = 0
Dades<<=1
}

SCL = 1
_botó _ () _ nop_ ()
SCL = 0

}

// -----------
// Llegiu I2C
// -----------
ReadI2C de caràcters sense signar (bit ACK_Bit)
{

Començar()
WriteI2C (0xA1)

SDA = 1
per a (i = 0i<8i++)

SCL = 1
Dades<<= 1
Data = (Data

if (ACK_Bit == 1)
SDA = 0 // Envia ACK
en cas contrari
SDA = 1 // Envia cap ACK

_botó _ () _ nop_ ()
SCL = 1
_botó _ () _ nop_ ()
SCL = 0
Atura()
retornar dades
}

// -----------
// Llegiu el formulari I2C d’1 byte
// -----------
void ReadBYTE (Addr int sense signar)
{
Començar()
WriteI2C (0xA0)
WriteI2C ((caràcter sense signar) (Addr >> 8) i 0xFF)
WriteI2C ((caràcters sense signar) Addr & 0xFF)
}

// -----------
// Escriviu 1 byte a I2C
// -----------
void WriteBYTE (Addr int sense signar)
{
Començar()
WriteI2C (0xA0)
WriteI2C ((caràcter sense signar) (Addr >> 8) & 0xFF) // enviar adreça alta
WriteI2C ((caràcters sense signar) Addr & 0xFF) // enviar l'adreça baixa
}

// -------------
// Retardar la funció mS
// -------------
void DelayMs (recompte int sense signatura)
{// mSec Delay 11.0592 Mhz
unsigned int i // Keil v7.5a
mentre (compta)
{
i = 115
mentre que (i> 0) i–
comptar–
}
}

Per tant, es tracta de la implementació de la interfície I2C. Esperem que tingueu una millor comprensió d’aquest concepte. A més, qualsevol consulta sobre aquest concepte o dispositius d'interfície Si us plau, doneu els vostres valuosos suggeriments comentant a la secció de comentaris següent.