Come interfacciare I2C-EEPROM con il microcontrollore 8051

Prova Il Nostro Strumento Per Eliminare I Problemi





Il termine I2C o l'abbreviazione IIC è un inter circuito integrato e si chiama come ho al quadrato C. I2C è un bus seriale per computer , che è stato inventato dai semiconduttori NXP in precedenza è stato chiamato semiconduttori Philips. Il bus I2C viene utilizzato per collegare circuiti integrati periferici a bassa velocità a microcontrollori e processori . Nel 2006, per implementare il protocollo I2C non è necessario alcun canone di licenza. Ma è necessaria una tariffa per ottenere l'indirizzo slave I2C assegnato dai semiconduttori NXP.

Alcuni concorrenti come Texas Instruments, Siemens AG, NEC, Motorola, Intersil e STMicroelectronics hanno annunciato prodotti I²C adatti al mercato a metà degli anni '90. Nell'anno 1995, SMBus è definito da Intel, cioè un sottogruppo di I²C che afferma che i protocolli sono più rigidi. Lo scopo principale di SMBus è supportare l'interoperabilità e la robustezza. Pertanto, gli attuali sistemi I²C includono regole e politiche di SMBus, a volte supporta sia I2C che SMBus con una riconfigurazione minima.




Bus I2C

Bus I2C

Interfaccia I2C Bus-EEPROM con Microcontrollore 8051

Cos'è I2C Bus

Il bus I2c utilizza due linee bidirezionali open-drain come SDA (linea dati seriale) e SCl (linea orologio seriale) e queste sono tirate su con resistenze. Il bus I2C consente a un dispositivo master di avviare la comunicazione con un dispositivo slave. I dati vengono scambiati tra questi due dispositivi. Le tensioni tipiche utilizzate sono + 3,3 V o + 5 V sebbene siano consentiti sistemi con tensioni extra.



Interfaccia I2C

Interfaccia I2C

EEPROM

ROM programmabile cancellabile elettricamente (EEPROM) è una ROM modificabile dall'utente che può essere rimossa e riprogrammata frequentemente mediante l'applicazione di una tensione elettrica superiore alla normale. Una EEPROM è una sorta di memoria non volatile utilizzata in dispositivi elettronici come i computer per memorizzare piccole quantità di dati che dovrebbero essere salvati quando l'alimentazione viene scollegata.

8051 Slicker Board

La scheda 8051 Slicker è appositamente progettata per aiutare gli studenti tecnici nell'area di sistemi integrati . Questo kit è progettato in modo tale che tutte le funzionalità di Microcontrollore 8051 sarà eventualmente utilizzato dagli studenti. Questa scheda percussore supporta ISP (In System Programming) che viene eseguito tramite la porta seriale. Questo kit e l'8051 di NXP sono proposti per facilitare il progresso del debug di molti progetti che circondano microcontrollori a 8 bit di velocità.

Interfacciamento I2C - EEPROM

La figura seguente mostra l'interfacciamento di I2C-EEPROM con il microcontrollore 8051. Qui, I2C è un protocollo master-slave, che include i dati insieme all'impulso di clock. In genere, il dispositivo master ha commutato la linea dell'orologio, SCL. Questa linea ordina la temporizzazione dei dati che vengono trasferiti sul bus I2C. A meno che l'orologio non venga azionato, nessun dato verrà trasferito. Tutti gli slave sono controllati dallo stesso clock, SCL.


Interfacciamento I2C - EEPROM

Interfacciamento I2C - EEPROM

Il bus I2C supporta i vari dispositivi dove ogni dispositivo è identificato da un indirizzo univoco che si tratti di un driver LCD, scheda di memoria, microcontrollore o interfacciamento della tastiera che può funzionare come Tx o Rx dipende dal funzionamento del dispositivo. Il controller è progettato per controllare il dispositivo EEPROM tramite protocollo I2C. Qui, il protocollo I2C funziona come un dispositivo master e regola la EEPROM e funziona come uno slave. Le operazioni di R / W sono efficienti trasferendo una serie di segnali di controllo comprendenti l'indirizzo AND / OR bus dati. Questi segnali dovrebbero essere accompagnati da segnali di clock adeguati

Interfaccia I2C Bus-EEPROM con Microcontrollore 8051

Se vuoi leggere, scrivere e cancellare EEPROM usando il bus I2C nella scheda percussore 8051. Interfacciamento di I2 Bus-EEPROM con Il microcontrollore 8051 è molto semplice . L'operazione di questa interfaccia è di inviare un segnale come WRITE, seguito da dati e bus indirizzi. In questa operazione, la EEPROM viene utilizzata per memorizzare i dati. Nel kit 8051, due numeri di linee EEPROM sono regolate da driver supportati da I2C. SCL e SDA sono collegati all'IC EEPROM seriale basato su I2C.

Interfaccia I2C Bus-EEPROM con Microcontrollore 8051

Interfaccia I2C Bus-EEPROM con Microcontrollore 8051

Utilizzando le linee SDA e SCL I2C, le operazioni di lettura e scrittura della EEPROM vengono eseguite nel Kit Slicker 8051

L'interfacciamento di I2C è semplicissimo e in ogni singolo dato Read / Write in EEPROM. Il ritardo dipende dal compilatore come migliora i cicli non appena si apportano modifiche alle scelte, il ritardo varia.

Codice sorgente per interfaccia I2C

#includere
#includere
#includere

#define ACK 1
#define NO_ACK 0

carattere non firmato i
carattere non firmato EData [5]
dati di caratteri non firmati
void InitSerial (void)
void DelayMs (unsigned int)
void WriteI2C (carattere senza segno)
void Start (void)
void Stop (void)
void ReadBYTE (unsigned int)
void WriteBYTE (unsigned int)
carattere senza segno ReadI2C (bit)

sbit SCL = P2 ^ 0 // connettersi al pin SCL (Clock)
sbit SDA = P2 ^ 1 // connettersi al pin SDA (dati)

// —————————————
// Programma principale
// —————————————
void main (void)
{
InitSerial () // Inizializza la porta seriale
putchar (0x0C) // cancella hyper terminal
DelayMs (5)
WriteBYTE (0x0000)
WriteI2C ('A') // Write Data’s Here
WriteI2C ('B')
WriteI2C ('C')
WriteI2C ('D')
WriteI2C ('E')
WriteI2C ('F')
Fermare()
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 (i = 0i<6i++)
{
printf ('value =% c n', EData [i]) // visualizza i dati * /
DelayMs (100)
}

mentre (1)
}

// —————————————
// Inizializza la porta seriale
// —————————————
void InitSerial (void)
{
SCON = 0x52 // configura il controllo della porta seriale
TMOD = 0x20 // hardware (9600 BAUD @ 11.0592MHZ)
TH1 = 0xFD // TH1
TR1 = 1 // Timer 1 attivo
}

// ———————————-
// avvia I2C
// ———————————-
void Start (void)
{
SDA = 1
SCL = 1
_button _ () _ nop_ ()
SDA = 0
_button _ () _ nop_ ()
SCL = 0
_button _ () _ nop_ ()
}

// ———————————-
// ferma I2C
// ———————————-
void Stop (void)
{
SDA = 0
_button _ () _ nop_ ()
SCL = 1
_button _ () _ nop_ ()
SDA = 1
}

// ———————————-
// Scrivi I2C
// ———————————-
void WriteI2C (unsigned char Data)
{

per (i = 0i<8i++)
{
SDA = (Dati e 0x80)? 1: 0
SCL = 1SCL = 0
Dati<<=1
}

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

}

// ———————————-
// Leggi I2C
// ———————————-
carattere senza segno ReadI2C (bit ACK_Bit)
{

Inizio()
Scrivi I2C (0xA1)

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

SCL = 1
Dati<<= 1
Data = (Date

if (ACK_Bit == 1)
SDA = 0 // Invia ACK
altro
SDA = 1 // Invia NESSUN ACK

_button _ () _ nop_ ()
SCL = 1
_button _ () _ nop_ ()
SCL = 0
Fermare()
restituire i dati
}

// ———————————-
// Legge 1 byte da I2C
// ———————————-
void ReadBYTE (unsigned int Addr)
{
Inizio()
Scrivi I2C (0xA0)
WriteI2C ((unsigned char) (Addr >> 8) & 0xFF)
WriteI2C ((carattere non firmato) Addr & 0xFF)
}

// ———————————-
// Scrive 1 byte in I2C
// ———————————-
void WriteBYTE (unsigned int Addr)
{
Inizio()
Scrivi I2C (0xA0)
WriteI2C ((unsigned char) (Addr >> 8) & 0xFF) // invia indirizzo alto
WriteI2C ((unsigned char) Addr & 0xFF) // invia indirizzo basso
}

// —————————————
// Ritarda la funzione mS
// —————————————
void DelayMs (unsigned int count)
{// Ritardo mSec 11,0592 Mhz
unsigned int i // Keil v7.5a
while (count)
{
io = 115
mentre (i> 0) i–
contare-
}
}

Quindi, questo è tutto sull'implementazione dell'interfaccia I2C. Ci auguriamo che tu abbia una migliore comprensione di questo concetto. Inoltre, qualsiasi domanda riguardante questo concetto o dispositivi di interfacciamento si prega di dare i vostri preziosi suggerimenti commentando nella sezione commenti qui sotto.