Az I2C-EEPROM összekapcsolása a 8051 mikrokontrollerrel

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Az I2C vagy IIC rövidítés egy inter integrált áramkör és hívják, amikor C-t négyzetre állítottam. Az I2C egy soros számítógépes busz , amelyet az NXP félvezetők találtak ki, korábban Philips félvezetőknek nevezték el. Az I2C buszt alacsony sebességű perifériás integrált áramkörök csatlakoztatására használják mikrovezérlők és processzorok . 2006-ban az I2C protokoll megvalósításához nincs szükség licencdíjra. De díjat kell fizetni az N2P félvezetők által kiosztott I2C slave cím megszerzéséhez.

Néhány versenytárs, mint a Texas Instruments, a Siemens AG, a NEC, a Motorola, az Intersil és az STMicroelectronics, az 1990-es évek közepén jelentette be a piacra megfelelő I²C termékeket. 1995-ben az SMBus-t az Intel határozza meg, ez az I²C egy alcsoportja, amely szerint a protokollok szigorúbbak. Az SMBus fő célja az interoperabilitás és a robusztus működés támogatása. Ezért a jelenlegi I²C rendszerek tartalmazzák az SMBus szabályait és házirendjeit, néha minimális újrakonfigurációval támogatják az I2C-t és az SMBus-t is.




I2C busz

I2C busz

Interfész I2C busz-EEPROM 8051 mikrokontrollerrel

Mi az I2C busz

Az I2c busz két kétirányú nyitott lefolyó vezetéket használ, mint például az SDA (soros adatvonal) és az SCl (soros órajel), és ezeket ellenállásokkal húzzák fel. Az I2C busz lehetővé teszi a master eszköz számára a kommunikációt egy slave eszközzel. Az adatok felcserélődnek e két eszköz között. A tipikusan alkalmazott feszültség + 3,3 V vagy + 5 V, bár extra feszültségű rendszerek megengedettek.



I2C interfész

I2C interfész

EEPROM

Elektromosan törölhető programozható ROM (EEPROM) egy felhasználó által módosítható ROM, amelyet a normál elektromos feszültségnél magasabb alkalmazással lehet gyakran eltávolítani és átprogramozni. Az EEPROM egyfajta nem felejtő memória, amelyet elektronikus eszközökben, például számítógépekben használnak, kis mennyiségű adat tárolására, amelyeket áramkimaradáskor el kell menteni.

8051 Slicker Board

A 8051 Slicker táblát kifejezetten a műszaki hallgatók segítésére tervezték beágyazott rendszerek . Ezt a készletet úgy tervezték, hogy a 8051 mikrovezérlő esetleg a hallgatók fogják használni. Ez a támadó tábla támogatja az ISP-t (a rendszerprogramozásban), amelyet a soros porton keresztül végeznek. Ez a készlet és az NXP 8051-es verziója a 8 bites mikrovezérlőket körülvevő számos terv hibakeresésének elősegítése érdekében javasolt.

Interfaciós I2C - EEPROM

A következő ábra az I2C-EEPROM és a 8051 mikrovezérlő összekapcsolását mutatja. Itt az I2C egy master-slave protokoll, amely az adatokat az óra impulzusával együtt tartalmazza. Jellemzően a master eszköz kapcsolta az órajelet, az SCL-t. Ez a sor megrendeli az I2C buszon átvitt adatidőzítést. Az óra működtetése nélkül nem kerülnek továbbításra az adatok. Az összes rabszolgát ugyanaz az óra, az SCL vezérli.


Interfaciós I2C - EEPROM

Interfaciós I2C - EEPROM

Az I2C busz támogatja a különféle eszközöket ahol minden eszközt egyedi cím alapján azonosítanak, legyen szó LCD meghajtóról, memóriakártyáról, mikrokontrollerről vagy a billentyűzet interfészei amelyek Tx vagy Rx néven működhetnek, a készülék működésétől függ. A vezérlő az EEPROM eszközt I2C protokollon keresztül vezérli. Itt az I2C protokoll mester eszközként működik, szabályozza az EEPROM-ot, és ez szolgaként működik. Az R / W műveletek jártasak a vezérlőjelek halmazának átadásával, amely tartalmazza a cím ÉS / VAGY adat buszt. Ezeket a jeleket megfelelő órajelekkel kell megvizsgálni

Interfész I2C busz-EEPROM 8051 mikrokontrollerrel

Ha olvasni szeretne, írja és törölje az EEPROM-ot az I2C busz használatával a 8051-es csatárlapon. Az I2 busz-EEPROM összekapcsolása a A 8051 mikrovezérlő nagyon egyszerű . Ennek az interfésznek az a feladata, hogy olyan jelet küldjön, mint a WRITE, majd az adat és a cím busz. Ebben a műveletben az EEPROM-ot használják az adatok tárolására. A 8051-es készletben két EEPROM-vonalat szabályoznak az I2C által támogatott illesztőprogramok. Az SCL és az SDA az I2C alapú soros EEPROM IC-hez csatlakozik.

Interfész I2C busz-EEPROM 8051 mikrokontrollerrel

Interfész I2C busz-EEPROM 8051 mikrokontrollerrel

Az SDA és az SCL I2C vonalak használatával az EEPROM olvasási és írási műveleteit a 8051 Slicker Kit készíti el

Az I2C összekapcsolása olyan egyszerű és minden adatban olvasható / írható az EEPROM-ban. A késleltetés a fordítótól függ, hogyan javítja a ciklusokat, amint megváltoztatja a késleltetést.

Forráskód az I2C interfészhez

#include
#include
#include

#define ACK 1
#define NO_ACK 0

aláíratlan karakter i
aláíratlan karakter EData [5]
unsigned char Data
void InitSerial (érvénytelen)
void DelayMs (aláíratlan int)
void WriteI2C (aláíratlan karakter)
void Start (érvénytelen)
érvénytelen Stop (érvénytelen)
void ReadBYTE (aláíratlan int)
void WriteBYTE (aláíratlan int)
aláíratlan karakter ReadI2C (bit)

sbit SCL = P2 ^ 0 // csatlakozás az SCL csaphoz (óra)
sbit SDA = P2 ^ 1 // csatlakozás az SDA csaphoz (adat)

// ——————————————
// Fő program
// ——————————————
void main (void)
{
InitSerial () // A soros port inicializálása
putchar (0x0C) // hiperterminál törlése
Késleltetés (5)
WriteBYTE (0x0000)
WriteI2C (’A’) // Adatok írása itt
ÍrásI2C (’B’)
ÍrásI2C (’C’)
ÍrásI2C (’D’)
WriteI2C (’E’)
WriteI2C (’F’)
Álljon meg()
Késleltetés (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)

mert (i = 0i<6i++)
{
printf („érték =% c n”, EData [i]) // adatok megjelenítése * /
Késleltetés (100)
}

míg (1)
}

// ——————————————
// A soros port inicializálása
// ——————————————
void InitSerial (érvénytelen)
{
SCON = 0x52 // soros port vezérlés beállítása
TMOD = 0x20 // hardver (9600 BAUD @ 11.0592MHZ)
TH1 = 0xFD // TH1
TR1 = 1 // 1. időzítő be van kapcsolva
}

// ————————————-
// indítsa el az I2C-t
// ————————————-
void Start (érvénytelen)
{
SDA = 1
SCL = 1
_gomb _ () _ nop_ ()
SDA = 0
_gomb _ () _ nop_ ()
SCL = 0
_gomb _ () _ nop_ ()
}

// ————————————-
// leállítja az I2C-t
// ————————————-
érvénytelen Stop (érvénytelen)
{
SDA = 0
_gomb _ () _ nop_ ()
SCL = 1
_gomb _ () _ nop_ ()
SDA = 1
}

// ————————————-
// Írja I2C
// ————————————-
void WriteI2C (aláíratlan karakteres adatok)
{

mert (i = 0i<8i++)
{
SDA = (Adatok & 0x80)? 1: 0
SCL = 1SCL = 0
Adat<<=1
}

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

}

// ————————————-
// Olvassa el az I2C
// ————————————-
aláíratlan karakter ReadI2C (bit ACK_Bit)
{

Rajt()
WriteI2C (0xA1)

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

SCL = 1
Adat<<= 1
Dátum = (Dátum

ha (ACK_Bit == 1)
SDA = 0 // ACK küldése
más
SDA = 1 // NE küldjön ACK-t

_gomb _ () _ nop_ ()
SCL = 1
_gomb _ () _ nop_ ()
SCL = 0
Álljon meg()
return Data
}

// ————————————-
// Olvassa el az 1 bájtos I2C űrlapot
// ————————————-
void ReadBYTE (unsigned int Addr)
{
Rajt()
WriteI2C (0xA0)
WriteI2C ((aláíratlan karakter) (Addr >> 8) és 0xFF)
WriteI2C ((aláíratlan karakter) Addr & 0xFF)
}

// ————————————-
// Írjon 1 bájtot az I2C-be
// ————————————-
void WriteBYTE (unsigned int Addr)
{
Rajt()
WriteI2C (0xA0)
WriteI2C ((aláíratlan karakter) (Addr >> 8) és 0xFF) // cím küldése magas
WriteI2C ((aláíratlan karakter) Addr & 0xFF) // küldési cím alacsony
}

// ——————————————
// Késleltesse az mS funkciót
// ——————————————
void DelayMs (aláíratlan int szám)
{// mSec késés 11.0592 Mhz
aláíratlan int i // Keil v7.5a
míg (számít)
{
i = 115
míg (i> 0) i–
számol-
}
}

Így mindez az I2C interfész megvalósításáról szól. Reméljük, hogy jobban megértette ezt a koncepciót. Továbbá, bármilyen kérdése van ezzel a koncepcióval, ill összekötő eszközök kérjük, adja meg értékes javaslatait az alábbi megjegyzés részben kommentálva.