Kako povezati I2C-EEPROM s mikrokontrolerom 8051

Isprobajte Naš Instrument Za Uklanjanje Problema





Izraz I2C ili IIC kratica je inter integrirani krug i zove se kao što sam na kvadrat C. I2C je serijska računalna sabirnica , koji su izumili NXP poluvodiči, a prethodno je nazvan Philips poluvodiči. I2C sabirnica koristi se za spajanje perifernih integriranih krugova male brzine mikrokontroleri i procesori . U 2006. godini za provedbu I2C protokola nije potrebna naknada za licencu. No, naknada je potrebna za dobivanje I2C slave adrese koju dodjeljuju NXP poluvodiči.

Neki konkurenti kao što su Texas Instruments, Siemens AG, NEC, Motorola, Intersil i STMicroelectronics najavili su sredinom 1990-ih na tržište prikladne I²C proizvode. 1995. godine SMBus je definirao Intel, to je podskupina I²C koja navodi da su protokoli stroži. Glavna svrha SMBusa je podržati interoperabilnost i robusnost. Stoga trenutni I²C sustavi uključuju pravila i politike SMBusa, ponekad podržava i I2C i SMBus uz minimalnu rekonfiguraciju.




I2C sabirnica

I2C sabirnica

Sučelje I2C Bus-EEPROM s 8051 mikrokontrolerom

Što je I2C sabirnica

I2c sabirnica koristi dvije dvosmjerne otvorene odvodne linije kao što su SDA (serijska podatkovna linija) i SCl (serijska linija sata) i one se povlače otpornicima. I2C sabirnica dopušta glavnom uređaju da započne komunikaciju s podređenim uređajem. Podaci se izmjenjuju između ova dva uređaja. Uobičajeni korišteni naponi su + 3,3 V ili + 5 V, iako su sustavi s dodatnim naponima dopušteni.



I2C sučelje

I2C sučelje

EEPROM

Programabilni ROM s električnim brisanjem (EEPROM) je korisnički prilagodljiv ROM koji se može često uklanjati i reprogramirati primjenom električnog napona većeg od normalnog. EEPROM je vrsta trajne memorije koja se koristi u elektroničkim uređajima poput računala za pohranu malih količina podataka koje bi trebalo uštedjeti kad se napajanje odvoji.

8051 Slicker Board

Ploča 8051 Slicker posebno je dizajnirana za pomoć studentima tehničkih područja na području ugrađeni sustavi . Ovaj je komplet dizajniran na takav način da sve značajke 8051 mikrokontroler moći će koristiti studenti. Ova udarna ploča podržava ISP (In System Programming) koji se vrši putem serijskog porta. Ovaj komplet i 8051 iz NXP-a predlažu se za ublažavanje napretka u otklanjanju pogrešaka mnogih dizajna koji okružuju brzine 8-bitnih mikrokontrolera.

Povezivanje I2C - EEPROM

Sljedeća slika prikazuje povezivanje I2C-EEPROM-a s 8051 mikrokontrolerom. Ovdje je I2C glavni-slave protokol koji uključuje podatke zajedno s impulsom takta. Tipično je glavni uređaj prebacio liniju sata, SCL. Ovaj redak određuje vremenski raspored podataka koji se prenosi na I2C sabirnici. Ako se ne aktivira sat, neće se prenijeti podaci. Sve robove kontrolira isti sat, SCL.


Povezivanje I2C - EEPROM

Povezivanje I2C - EEPROM

I2C sabirnica podržava razne uređaje gdje je svaki uređaj identificiran jedinstvenom adresom bilo da se radi o upravljačkom programu LCD-a, memorijskoj kartici, mikrokontroleru ili sučeljavanje tipkovnice koji može raditi kao Tx ili Rx ovisi o radu uređaja. Kontroler je dizajniran za upravljanje EEPROM uređajem putem I2C protokola. Ovdje protokol I2C djeluje kao glavni uređaj i regulira EEPROM te djeluje kao slave. R / W operacije su stručne prenošenjem skupa upravljačkih signala koji sadrže adresnu I / ILI sabirnicu podataka. Ovi signali trebaju biti popraćeni odgovarajućim satnim signalima

Sučelje I2C Bus-EEPROM s 8051 mikrokontrolerom

Ako želite čitati, napišite i izbrišite EEPROM koristeći I2C sabirnicu u udarnoj ploči 8051. Povezivanje I2 sabirnice-EEPROM sa 8051 mikrokontroler je vrlo jednostavan . Operacija ovog povezivanja je slanje signala poput WRITE, nakon čega slijedi sabirnica podataka i adrese. U ovoj se operaciji EEPROM koristi za pohranu podataka. U kompletu 8051, dva broja EEPROM linija reguliraju upravljački programi s podrškom za I2C. SCL i SDA povezani su na serijski EEPROM IC zasnovan na I2C.

Sučelje I2C Bus-EEPROM s 8051 mikrokontrolerom

Sučelje I2C Bus-EEPROM s 8051 mikrokontrolerom

Korištenjem SDA i SCL I2C linija, operacije čitanja i pisanja EEPROM-a obavljaju se u 8051 Slicker Kit

Povezivanje I2C tako je jednostavno i svaki pojedini podatak čita / piše u EEPROM-u. Kašnjenje ovisi o prevoditelju kako poboljšava petlje čim napravite promjene u izborima kašnjenje varira.

Izvorni kod za I2C povezivanje

#include
#include
#include

#define ACK 1
#define NO_ACK 0

nepotpisani char i
nepotpisani znak EData [5]
nepotpisani char Podaci
void InitSerial (void)
void DelayMs (nepotpisani int)
void WriteI2C (nepotpisani znak)
void Start (void)
void Zaustavi (void)
void ReadBYTE (nepotpisan int)
void WriteBYTE (nepotpisan int)
nepotpisani znak ReadI2C (bit)

sbit SCL = P2 ^ 0 // spajanje na SCL pin (sat)
sbit SDA = P2 ^ 1 // povezivanje na SDA pin (Podaci)

// —————————————
// Glavni program
// —————————————
void main (void)
{
InitSerial () // Inicijalizirajte serijski port
putchar (0x0C) // očisti hiper terminal
Kašnjenja (5)
WriteBYTE (0x0000)
WriteI2C (‘A’) // Napišite podatke ovdje
WriteI2C (‘B’)
WriteI2C (‘C’)
WriteI2C (‘D’)
WriteI2C (‘E’)
WriteI2C (‘F’)
Stop()
Kašnjenja (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)

za (i = 0i<6i++)
{
printf (“value =% c n”, EData [i]) // prikaz podataka * /
Kašnjenja (100)
}

dok (1)
}

// —————————————
// Inicijalizacija serijskog porta
// —————————————
void InitSerial (void)
{
SCON = 0x52 // postavljanje kontrole serijskog porta
TMOD = 0x20 // hardver (9600 BAUD @ 11.0592MHZ)
TH1 = 0xFD // TH1
TR1 = 1 // Tajmer 1 uključen
}

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

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

// ——————————-
// Napišite I2C
// ——————————-
void WriteI2C (nepotpisani char podaci)
{

za (i = 0i<8i++)
{
SDA = (Podaci & 0x80)? 1: 0
SCL = 1SCL = 0
Podaci<<=1
}

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

}

// ——————————-
// Pročitajte I2C
// ——————————-
nepotpisani znak ReadI2C (bit ACK_Bit)
{

Početak()
WriteI2C (0xA1)

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

SCL = 1
Podaci<<= 1
Datum = (Datum

ako (ACK_Bit == 1)
SDA = 0 // Pošalji ACK
drugo
SDA = 1 // Pošaljite BEZ PRIJAVE

_button _ () _ nop_ ()
SCL = 1
_button _ () _ nop_ ()
SCL = 0
Stop()
vratiti podatke
}

// ——————————-
// Očitavanje 1 bajtnog obrasca I2C
// ——————————-
void ReadBYTE (nepotpisani int Addr)
{
Početak()
WriteI2C (0xA0)
WriteI2C ((nepotpisani char) (Addr >> 8) & 0xFF)
WriteI2C ((nepotpisani znak) Addr & 0xFF)
}

// ——————————-
// Napišite 1 bajt u I2C
// ——————————-
void WriteBYTE (nepotpisani int Addr)
{
Početak()
WriteI2C (0xA0)
WriteI2C ((nepotpisani znak) (Addr >> 8) & 0xFF) // adresa poslati visoko
WriteI2C ((nepotpisani znak) Addr & 0xFF) // adresa slanja niska
}

// —————————————
// Odgoda funkcije mS
// —————————————
void DelayMs (nepotpisan int count)
{// mSec kašnjenje 11.0592 MHz
nepotpisani int i // Keil v7.5a
dok (računaj)
{
i = 115
dok (i> 0) i–
računati-
}
}

Dakle, ovdje se radi o implementaciji I2C sučelja. Nadamo se da ste bolje razumjeli ovaj koncept. Nadalje, bilo kakva pitanja u vezi s ovim konceptom ili uređaji za povezivanje dajte svoje vrijedne prijedloge komentirajući ih u odjeljku za komentare u nastavku.