Kā saskarni I2C-EEPROM izveidot ar mikrokontrolleru 8051

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Termins I2C vai IIC saīsinājums ir inter integrētā shēma un to sauc, kad es izveidoju kvadrātu C. I2C ir sērijveida datoru kopne , kuru izgudroja NXP pusvadītāji, iepriekš tas tika nosaukts par Philips pusvadītājiem. I2C kopni izmanto zema ātruma perifēro integrēto shēmu pievienošanai mikrokontrolleri un procesori . 2006. gadā, lai ieviestu I2C protokolu, licences maksa nav nepieciešama. Bet maksa ir nepieciešama, lai iegūtu I2C vergu adresi, ko piešķir NXP pusvadītāji.

Daži konkurenti, piemēram, Texas Instruments, Siemens AG, NEC, Motorola, Intersil un STMicroelectronics, 90. gadu vidū ir paziņojuši par tirgū piemērotiem I²C produktiem. 1995. gadā SMBus definē Intel, tas ir I²C apakšgrupa, kurā teikts, ka protokoli ir stingrāki. Galvenais SMBus mērķis ir atbalstīt savietojamību un izturību. Tāpēc pašreizējās I²C sistēmas ietver SMBus noteikumus un politikas, dažreiz tās atbalsta gan I2C, gan SMBus ar minimālu pārkonfigurēšanu.




I2C autobuss

I2C autobuss

Interfeiss I2C kopne-EEPROM ar mikrokontrolleru 8051

Kas ir I2C kopne

I2c kopnē tiek izmantotas divas divvirzienu atvērtas kanalizācijas līnijas, piemēram, SDA (sērijveida datu līnija) un SCl (sērijas pulksteņa līnija), un tās tiek uzvilktas ar rezistoriem. I2C kopne ļauj galvenajai ierīcei sākt sakarus ar vergu ierīci. Dati tiek apmainīti starp šīm divām ierīcēm. Parasti tiek izmantoti + 3,3 V vai + 5 V spriegumi, lai gan ir atļautas sistēmas ar papildu spriegumu.



I2C saskarne

I2C saskarne

EEPROM

Elektriski izdzēšams programmējams ROM (EEPROM) ir lietotāja modificējams ROM, kuru var noņemt un pārprogrammēt bieži, izmantojot augstāku par parasto elektrisko spriegumu. EEPROM ir sava veida nepastāvīga atmiņa, ko izmanto elektroniskās ierīcēs, piemēram, datoros, lai uzglabātu nelielu daudzumu datu, kas jāsaglabā, atvienojot strāvu.

8051 Slicker dēlis

8051 Slicker dēlis ir īpaši izstrādāts, lai palīdzētu tehnikas studentiem iegultās sistēmas . Šis komplekts ir veidots tā, lai visas funkcijas 8051 mikrokontrolleris iespējams, izmantos studenti. Šis uzbrucēja dēlis atbalsta ISP (In System Programming), kas tiek veikts, izmantojot seriālo portu. Šis komplekts un NXP 8051 tiek piedāvāts, lai izlīdzinātu daudzu ātrdarbīgu 8 bitu mikrokontrolleru apkārtējo dizainu atkļūdošanas gaitu.

Saskarne I2C - EEPROM

Šajā attēlā parādīta saskarne I2C-EEPROM ar mikrokontrolleru 8051. Šeit I2C ir galvenais-vergu protokols, kas satur datus kopā ar pulksteņa impulsu. Parasti galvenā ierīce pārslēdza pulksteņa līniju SCL. Šī līnija pasūta datu laiku, kas tiek pārsūtīts uz I2C kopni. Ja netiek darbināts pulkstenis, dati netiks pārsūtīti. Visus vergus kontrolē viens un tas pats pulkstenis - SCL.


Saskarne I2C - EEPROM

Saskarne I2C - EEPROM

I2C kopne atbalsta dažādas ierīces kur katru ierīci identificē pēc unikālas adreses, vai tā ir LCD draiveris, atmiņas karte, mikrokontrolleris vai tastatūras saskarne kas var darboties kā Tx vai Rx, ir atkarīgs no ierīces darbības. Kontrolieris ir paredzēts EEPROM ierīces kontrolei, izmantojot I2C protokolu. Šeit viņš I2C protokols darbojas kā galvenā ierīce un regulē EEPROM, un tas darbojas kā vergs. R / W operācijas ir prasmīgas, pārsūtot vadības signālu kopu, kas satur adreses UN / VAI datu kopni. Šie signāli jāapmeklē ar piemērotiem pulksteņa signāliem

Interfeiss I2C kopne-EEPROM ar mikrokontrolleru 8051

Ja vēlaties lasīt, rakstiet un izdzēsiet EEPROM, izmantojot I2C kopni 8051 uzbrucēja dēlī. I2 kopnes-EEPROM saskarne ar 8051 mikrokontrolleris ir ļoti vienkāršs . Šīs saskarnes darbība ir tāda signāla nosūtīšana kā WRITE, kam seko datu un adrešu kopne. Šajā operācijā datu glabāšanai tiek izmantots EEPROM. 8051 komplektā divus EEPROM līniju numurus regulē I2C atbalstītie draiveri. SCL un SDA ir savienoti ar I2C balstītu sērijveida EEPROM IC.

Interfeiss I2C kopne-EEPROM ar mikrokontrolleru 8051

Interfeiss I2C kopne-EEPROM ar mikrokontrolleru 8051

Izmantojot SDA un SCL I2C līnijas, EEPROM lasīšanas un rakstīšanas darbības tiek veiktas 8051 Slicker Kit

I2C saskarne ir tik vienkārša, un visos datos lasīt / rakstīt EEPROM. Kavēšanās ir atkarīga no kompilatora, kā tā uzlabo cilpas, tiklīdz jūs veicat izmaiņas izvēles kavēšanās mainās.

I2C saskarnes avota kods

# iekļaut
# iekļaut
# iekļaut

#define ACK 1
#define NO_ACK 0

neparakstīta char i
neparakstīta char EData [5]
neparakstīta char Dati
void InitSerial (anulēts)
void DelayMs (neparakstīts int)
void WriteI2C (neparakstīta rakstzīme)
void Start (anulēt)
anulēt Stop (anulēt)
void ReadBYTE (neparakstīts int)
void WriteBYTE (neparakstīts int)
neparakstīta rakstzīme ReadI2C (bits)

sbit SCL = P2 ^ 0 // savienojums ar SCL tapu (pulkstenis)
sbit SDA = P2 ^ 1 // izveidot savienojumu ar SDA tapu (dati)

// —————————————
// Galvenā programma
// —————————————
void main (void)
{
InitSerial () // Inicializējiet seriālo portu
putčars (0x0C) // iztīrīt hiperterminālu
Kavēšanās (5)
WriteBYTE (0x0000)
WriteI2C (‘A’) // Write Data’s Here
RakstītI2C (‘B’)
RakstītI2C (‘C’)
RakstītI2C (‘D’)
RakstītI2C (‘E’)
RakstītI2C (‘F’)
Apturēt ()
Kavēšanās (10)

ReadBYTE (0x0000)
EData [0] = LasītI2C (NO_ACK)
EData [1] = LasītI2C (NO_ACK)
EData [2] = LasītI2C (NO_ACK)
EData [3] = LasītI2C (NO_ACK)
EData [4] = LasītI2C (NO_ACK)
EData [5] = LasītI2C (NO_ACK)

par (i = 0i<6i++)
{
printf (“value =% c n”, EData [i]) // parādīt datus * /
Kavēšanās (100)
}

kamēr (1)
}

// —————————————
// Inicializēt seriālo portu
// —————————————
void InitSerial (anulēts)
{
SCON = 0x52 // sērijas porta vadības iestatīšana
TMOD = 0x20 // aparatūra (9600 BAUD @ 11.0592MHZ)
TH1 = 0xFD // TH1
TR1 = 1 // Taimeris 1 ieslēgts
}

// ——————————-
// sākt I2C
// ——————————-
void Start (anulēt)
{
SDA = 1
SCL = 1
_poga _ () _ nop_ ()
SDA = 0
_poga _ () _ nop_ ()
SCL = 0
_poga _ () _ nop_ ()
}

// ——————————-
// pārtraukt I2C
// ——————————-
anulēt Stop (anulēt)
{
SDA = 0
_poga _ () _ nop_ ()
SCL = 1
_poga _ () _ nop_ ()
SDA = 1
}

// ——————————-
// Uzrakstiet I2C
// ——————————-
void WriteI2C (neparakstītie char dati)
{

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

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

}

// ——————————-
// Lasīt I2C
// ——————————-
neparakstīta rakstzīme ReadI2C (bits ACK_Bit)
{

Sākt()
WriteI2C (0xA1)

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

SCL = 1
Dati<<= 1
Datums = (Datums

ja (ACK_Bit == 1)
SDA = 0 // Nosūtīt ACK
cits
SDA = 1 // Sūtīt NEKĀDA AKK

_poga _ () _ nop_ ()
SCL = 1
_poga _ () _ nop_ ()
SCL = 0
Apturēt ()
atgriezt datus
}

// ——————————-
// Izlasiet 1 baita veidlapu I2C
// ——————————-
void ReadBYTE (neparakstīts int Addr)
{
Sākt()
WriteI2C (0xA0)
WriteI2C ((neparakstīta rakstzīme) (Addr >> 8) un 0xFF)
WriteI2C ((neparakstīta rakstzīme) Addr un 0xFF)
}

// ——————————-
// I2C ierakstiet 1 baitu
// ——————————-
void WriteBYTE (neparakstīts int Addr)
{
Sākt()
WriteI2C (0xA0)
WriteI2C ((neparakstīta rakstzīme) (Addr >> 8) un 0xFF) // nosūtīt adresi augsta
WriteI2C ((neparakstīta rakstzīme) Addr & 0xFF) // sūtīt adresi maz
}

// —————————————
// Aizkavēt mS funkciju
// —————————————
void DelayMs (neparakstīts int skaits)
{// mSec aizkave 11.0592 Mhz
neparakstīts int i // Keil v7.5a
kamēr (skaitīt)
{
i = 115
kamēr (i> 0) i–
skaitīt–
}
}

Tādējādi tas viss attiecas uz I2C saskarnes ieviešanu. Mēs ceram, ka esat labāk izpratis šo koncepciju. Turklāt visi jautājumi par šo koncepciju vai saskarnes ierīces lūdzu, sniedziet savus vērtīgos ieteikumus, komentējot komentāru sadaļā zemāk.