Kako povezati I2C-EEPROM z mikrokrmilnikom 8051

Preizkusite Naš Instrument Za Odpravo Težav





Izraz I2C ali IIC okrajšava je inter integrirano vezje in se imenuje, ko sem na kvadrat C. I2C je serijsko računalniško vodilo , ki so ga izumili polprevodniki NXP, prej pa so ga poimenovali polprevodniki Philips. Vodilo I2C se uporablja za pritrditev zunanjih integriranih vezij z nizko hitrostjo mikrokrmilniki in procesorji . V letu 2006 za izvajanje protokola I2C ni potrebno plačilo licenc. Toda za pridobitev pomožnega naslova I2C, ki ga dodelijo polprevodniki NXP, je potrebno plačilo.

Nekateri konkurenti, kot so Texas Instruments, Siemens AG, NEC, Motorola, Intersil in STMicroelectronics, so sredi devetdesetih let na trg napovedali primerne izdelke I²C. Leta 1995 je SMBus opredelil Intel, to je podskupina I²C, ki navaja, da so protokoli strožji. Glavni namen SMBusa je podpirati interoperabilnost in robustnost. Zato trenutni sistemi I²C vključujejo pravila in pravilnike SMBus, včasih podpirajo I2C in SMBus z minimalno rekonfiguracijo.




Avtobus I2C

Avtobus I2C

Vmesnik I2C Bus-EEPROM z mikrokrmilnikom 8051

Kaj je I2C Bus

Vodilo I2c uporablja dve dvosmerni odprti odtočni vodi, kot sta SDA (serijska podatkovna linija) in SCl (serijska urna linija), ki se potegnejo z upori. I2C vodilo dovoljuje glavni napravi, da začne komunikacijo s pomožno napravo. Podatki se izmenjujejo med tema dvema napravama. Tipične uporabljene napetosti so + 3,3 V ali + 5 V, čeprav so dovoljeni sistemi z dodatnimi napetostmi.



Vmesnik I2C

Vmesnik I2C

EEPROM

Programabilni ROM z električnim brisanjem (EEPROM) je ROM, ki ga lahko spreminja uporabnik in ga je mogoče pogosto odstraniti in znova programirati z uporabo električne napetosti, ki je višja od običajne. EEPROM je vrsta trajnega pomnilnika, ki se uporablja v elektronskih napravah, kot so računalniki, za shranjevanje majhnih količin podatkov, ki jih je treba shraniti, ko se napajanje odklopi.

8051 Slicker Board

Tabla 8051 Slicker je posebej zasnovana za pomoč študentom tehničnih ved na območju vgrajeni sistemi . Ta komplet je zasnovan tako, da upošteva vse lastnosti sistema 8051 mikrokrmilnik bodo morda uporabili študentje. Ta udarna plošča podpira ISP (In System Programming), ki se izvaja prek serijskih vrat. Ta komplet in 8051 iz NXP je predlagan za olajšanje napredka pri odpravljanju napak številnih modelov, ki obdajajo hitrostne 8-bitne mikrokrmilnike.

Povezava I2C - EEPROM

Naslednja slika prikazuje povezavo I2C-EEPROM z mikrokrmilnikom 8051. Tu je I2C glavni-podrejeni protokol, ki vključuje podatke skupaj z urnim impulzom. Običajno je glavna naprava zamenjala časovno linijo SCL. Ta vrstica uredi časovni razpored podatkov, ki se prenaša na vodilo I2C. Če ura ne deluje, se podatki ne bodo prenesli. Vse sužnje nadzoruje ista ura, SCL.


Povezava I2C - EEPROM

Povezava I2C - EEPROM

I2C vodilo podpira različne naprave kjer je vsaka naprava označena z edinstvenim naslovom, ne glede na to, ali gre za gonilnik LCD, pomnilniško kartico, mikrokrmilnik ali povezovanje tipkovnice ki lahko deluje kot Tx ali Rx, je odvisno od delovanja naprave. Krmilnik je zasnovan za nadzor naprave EEPROM prek protokola I2C. Tu protokol I2C deluje kot glavna naprava in ureja EEPROM ter deluje kot pomožni. R / W operacije so spretne s prenosom niza krmilnih signalov, ki obsegajo naslovno in / ali podatkovno vodilo. Te signale je treba spremljati z ustreznimi signali ure

Vmesnik I2C Bus-EEPROM z mikrokrmilnikom 8051

Če želite brati, zapisati in izbrisati EEPROM z uporabo vodila I2C v udarni plošči 8051. Povezava I2 Bus-EEPROM z Mikrokrmilnik 8051 je zelo preprost . Delovanje tega povezovanja je pošiljanje signala, kot je WRITE, čemur sledi podatkovno in naslovno vodilo. Pri tej operaciji se EEPROM uporablja za shranjevanje podatkov. V kompletu 8051 dve številki linij EEPROM urejajo gonilniki, ki podpirajo I2C. SCL in SDA sta povezana s serijskim EEPROM IC, ki temelji na I2C.

Vmesnik I2C Bus-EEPROM z mikrokrmilnikom 8051

Vmesnik I2C Bus-EEPROM z mikrokrmilnikom 8051

Z uporabo vrstic SDA in SCL I2C se operacije branja in pisanja EEPROM-a opravijo v kompletu 8051 Slicker Kit

Povezava I2C je tako preprosta in v vsakem posameznem podatku je branje / pisanje v EEPROM-u. Zamuda je odvisna od prevajalnika, kako izboljša zanke takoj, ko spremenite izbire, ki se razlikujejo.

Izvorna koda za povezovanje I2C

#include
#include
#include

#define ACK 1
#define NO_ACK 0

nepodpisani znak i
nepodpisani znak EData [5]
nepodpisani char podatki
void InitSerial (void)
void DelayMs (unsigned int)
void WriteI2C (nepodpisani znak)
void Start (void)
void Stop (void)
void ReadBYTE (nepodpisan int)
void WriteBYTE (nepodpisan int)
nepodpisani znak ReadI2C (bit)

sbit SCL = P2 ^ 0 // priklop na zatič SCL (ura)
sbit SDA = P2 ^ 1 // priklop na zatič SDA (podatki)

// —————————————
// Glavni program
// —————————————
void main (void)
{
InitSerial () // Inicializacija serijskih vrat
putchar (0x0C) // počisti hiper terminal
Zamude (5)
WriteBYTE (0x0000)
WriteI2C (‘A’) // Zapiši podatke tukaj
WriteI2C („B“)
WriteI2C („C“)
WriteI2C („D“)
WriteI2C (‘E’)
WriteI2C („F“)
Ustavi ()
Zamude (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]) // prikaži podatke * /
Zamude (100)
}

medtem ko (1)
}

// —————————————
// Inicializacija serijskih vrat
// —————————————
void InitSerial (void)
{
SCON = 0x52 // nastavitev nadzora serijskih vrat
TMOD = 0x20 // strojna oprema (9600 BAUD @ 11.0592MHZ)
TH1 = 0xFD // TH1
TR1 = 1 // Časovnik 1 vklopljen
}

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

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

// ———————————-
// Napišite I2C
// ———————————-
void WriteI2C (nepodpisani char podatki)
{

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

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

}

// ———————————-
// Preberite I2C
// ———————————-
nepodpisani znak ReadI2C (bit ACK_Bit)
{

Začni ()
WriteI2C (0xA1)

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

SCL = 1
Podatki<<= 1
Datum = (Datum

če (ACK_Bit == 1)
SDA = 0 // Pošlji ACK
drugače
SDA = 1 // Pošlji NO ACK

_button _ () _ nop_ ()
SCL = 1
_button _ () _ nop_ ()
SCL = 0
Ustavi ()
vrni podatke
}

// ———————————-
// Preberemo 1 bajtni obrazec I2C
// ———————————-
void ReadBYTE (nepodpisan int Addr)
{
Začni ()
WriteI2C (0xA0)
WriteI2C ((nepodpisani znak) (Addr >> 8) & 0xFF)
WriteI2C ((podpisan znak) Addr & 0xFF)
}

// ———————————-
// Zapiši 1 bajt v I2C
// ———————————-
void WriteBYTE (nepodpisan int Addr)
{
Začni ()
WriteI2C (0xA0)
WriteI2C ((nepodpisani znak) (Addr >> 8) & 0xFF) // naslov pošljemo visoko
WriteI2C ((nepodpisani znak) Addr & 0xFF) // naslov pošlje nizko
}

// —————————————
// Zakasni funkcijo mS
// —————————————
void DelayMs (unsigned int count)
{// mSec zamuda 11.0592 MHz
unsigned int i // Keil v7.5a
medtem ko (štetje)
{
i = 115
medtem ko (i> 0) i–
štetje–
}
}

Tu gre torej za izvajanje vmesnika I2C. Upamo, da ste bolje razumeli ta koncept. Nadalje, kakršna koli vprašanja v zvezi s tem konceptom oz vmesniške naprave prosimo, dajte svoje dragocene predloge s komentarjem v spodnjem oddelku za komentarje.