Ako prepojiť I2C-EEPROM s mikrokontrolérom 8051

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





Termín skratka I2C alebo IIC je inter integrovaný obvod a volá sa to, ako som štvorčekoval C. I2C je sériová počítačová zbernica , ktorý je vynájdený polovodičmi NXP, predtým sa nazýval polovodiče Philips. Zbernica I2C sa používa na pripojenie nízkootáčkových periférnych integrovaných obvodov mikrokontroléry a procesory . V roku 2006 nie je na implementáciu protokolu I2C potrebný žiadny licenčný poplatok. Za získanie adresy I2C slave pridelenej polovodičmi NXP je však potrebný poplatok.

Niektorí konkurenti ako Texas Instruments, Siemens AG, NEC, Motorola, Intersil a STMicroelectronics ohlásili v polovici 90. rokov na trh vhodné výrobky I²C. V roku 1995 je SMBus definovaný spoločnosťou Intel, čo je podskupina I²C, ktorá tvrdí, že protokoly sú prísnejšie. Hlavným účelom SMBus je podpora interoperability a robustnosti. Preto súčasné systémy I²C obsahujú pravidlá a politiky od SMBus, niekedy podporujú I2C aj SMBus s minimálnou rekonfiguráciou.




I2C Bus

I2C Bus

Rozhranie I2C Bus-EEPROM s mikrokontrolérom 8051

Čo je I2C Bus

Zbernica I2c používa dve obojsmerné linky s otvoreným odtokom, ako napríklad SDA (sériová dátová linka) a SCl (sériová hodinová linka), ktoré sú vyťahované rezistormi. Zbernica I2C umožňuje nadradenému zariadeniu začať komunikáciu s podriadeným zariadením. Údaje sa medzi týmito dvoma zariadeniami vymieňajú. Typické použité napätie je +3,3 V alebo + 5 V, aj keď sú povolené systémy s extra napätím.



Rozhranie I2C

Rozhranie I2C

EEPROM

Elektricky vymazateľná programovateľná ROM (EEPROM) je používateľsky upraviteľná pamäť ROM, ktorú je možné často vyberať a preprogramovať použitím vyššieho ako normálneho elektrického napätia. EEPROM je druh energeticky nezávislej pamäte používanej v elektronických zariadeniach, ako sú počítače, na ukladanie malého množstva údajov, ktoré by sa mali uložiť pri odpojení napájania.

8051 Slicker Board

Doska 8051 Slicker je špeciálne navrhnutá na pomoc študentom technického zamerania v oblasti vložené systémy . Táto súprava je navrhnutá tak, aby spĺňala všetky jej vlastnosti Mikrokontrolér 8051 budú prípadne použité študentmi. Táto štrajkujúca doska podporuje ISP (v systémovom programovaní), ktorý sa vykonáva cez sériový port. Táto súprava a produkt 8051 od spoločnosti NXP je navrhnutý na uľahčenie postupu ladenia mnohých návrhov obklopujúcich rýchlostné 8-bitové mikrokontroléry.

Prepojenie I2C - EEPROM

Nasledujúci obrázok zobrazuje prepojenie I2C-EEPROM s mikrokontrolérom 8051. I2C je tu protokol typu master-slave, ktorý obsahuje údaje spolu s hodinovým impulzom. Hlavné zariadenie obvykle prepínalo hodinovú linku SCL. Tento riadok objednáva časovanie údajov, ktoré sa prenáša na zbernicu I2C. Pokiaľ nebudú v činnosti hodiny, nebudú sa prenášať žiadne údaje. Všetci otroci sú ovládaní rovnakými hodinami SCL.


Prepojenie I2C - EEPROM

Prepojenie I2C - EEPROM

Zbernica I2C podporuje rôzne zariadenia kde je každé zariadenie identifikované jedinečnou adresou, či už ide o ovládač LCD, pamäťovú kartu, mikrokontrolér alebo prepojenie klávesnice ktoré môžu fungovať ako Tx alebo Rx, závisí od fungovania zariadenia. Kontrolér je navrhnutý na riadenie zariadenia EEPROM prostredníctvom protokolu I2C. Tu protokol I2C funguje ako nadradené zariadenie a reguluje EEPROM a funguje ako podriadený. R / W operácie sú zdatné prenosom sady riadiacich signálov obsahujúcich adresnú a / alebo dátovú zbernicu. Tieto signály by sa mali vybavovať vhodnými hodinovými signálmi

Rozhranie I2C Bus-EEPROM s mikrokontrolérom 8051

Ak chcete čítať, napíšte a vymažte EEPROM pomocou zbernice I2C na doske úderníka 8051. Prepojenie I2 Bus-EEPROM s Mikrokontrolér 8051 je veľmi jednoduchý . Účelom tohto prepojenia je poslať signál ako WRITE, po ktorom nasleduje dátová a adresná zbernica. Pri tejto operácii sa na ukladanie údajov používa EEPROM. V súprave 8051 sú dva počty liniek EEPROM regulované ovládačmi podporovanými I2C. SCL a SDA sú pripojené k sériovej EEPROM IC založenej na I2C.

Rozhranie I2C Bus-EEPROM s mikrokontrolérom 8051

Rozhranie I2C Bus-EEPROM s mikrokontrolérom 8051

Použitím liniek SDA a SCL I2C sa operácie čítania a zápisu do EEPROM vykonávajú v súprave 8051 Slicker Kit

Rozhranie I2C je také jednoduché a pri všetkých údajoch čítanie / zápis do EEPROM. Oneskorenie závisí od kompilátora, ako vylepšuje slučky, akonáhle urobíte zmeny vo voľbách, oneskorenie sa bude líšiť.

Zdrojový kód pre rozhranie I2C

#include
#include
#include

#define ACK 1
#define NO_ACK 0

nepodpísaný znak i
nepodpísaný znak EData [5]
nepodpísaný znak Údaje
void InitSerial (void)
void DelayMs (unsigned int)
void WriteI2C (nepodpísaný znak)
void Start (void)
void Stop (void)
void ReadBYTE (unsigned int)
void WriteBYTE (unsigned int)
nepodpísaný znak ReadI2C (bit)

sbit SCL = P2 ^ 0 // pripojenie na kolík SCL (hodiny)
sbit SDA = P2 ^ 1 // pripojenie na pin SDA (údaje)

// —————————————
// Hlavný program
// —————————————
void main (void)
{
InitSerial () // Inicializuje sériový port
putchar (0x0C) // vyčistiť hyper terminál
DelayMs (5)
WriteBYTE (0x0000)
WriteI2C („A“) // Zápis údajov je tu
WriteI2C („B“)
WriteI2C („C“)
WriteI2C („D“)
WriteI2C („E“)
WriteI2C („F“)
Stop ()
DelayMs (10)

Prečítajte si BYTE (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)

pre (i = 0i<6i++)
{
printf („hodnota =% c n“, EData [i]) // zobraziť údaje * /
DelayMs (100)
}

zatiaľ čo (1)
}

// —————————————
// Inicializuje sériový port
// —————————————
void InitSerial (void)
{
SCON = 0x52 // nastavenie ovládania sériového portu
TMOD = 0x20 // hardvér (9600 BAUD @ 11,0592 MHz)
TH1 = 0xFD // TH1
TR1 = 1 // Časovač 1 je zapnutý
}

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

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

// ———————————-
// Napíš I2C
// ———————————-
void WriteI2C (nepodpísané char údaje)
{

pre (i = 0i<8i++)
{
SDA = (údaje a 0x80)? 1: 0
SCL = 1SCL = 0
Údaje<<=1
}

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

}

// ———————————-
// Prečítajte si I2C
// ———————————-
nepodpísaný znak ReadI2C (bit ACK_Bit)
{

Štart ()
WriteI2C (0xA1)

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

SCL = 1
Údaje<<= 1
Dátum = (Dátum

if (ACK_Bit == 1)
SDA = 0 // Poslať ACK
inak
SDA = 1 // Odosielanie ŽIADNE AK

_button _ () _ nop_ ()
SCL = 1
_button _ () _ nop_ ()
SCL = 0
Stop ()
vrátiť dáta
}

// ———————————-
// Čítanie 1 bajtového formulára I2C
// ———————————-
void ReadBYTE (unsigned int Addr)
{
Štart ()
WriteI2C (0xA0)
WriteI2C ((nepodpísaný znak) (adresa >> 8) & 0xFF)
WriteI2C ((nepodpísaný znak) Addr a 0xFF)
}

// ———————————-
// Napíšte 1 bajt na I2C
// ———————————-
void WriteBYTE (unsigned int Addr)
{
Štart ()
WriteI2C (0xA0)
WriteI2C ((nepodpísaný znak) (adresa >> 8) & 0xFF) // vysoká adresa odosielania
WriteI2C ((nepodpísaný znak) Addr & 0xFF) // nízka adresa na odoslanie
}

// —————————————
// Oneskorenie funkcie mS
// —————————————
void DelayMs (unsigned int count)
{// oneskorenie mSec 11,0592 MHz
unsigned int i // Keil v7.5a
while (count)
{
i = 115
while (i> 0) i–
počítať–
}
}

Jedná sa teda o implementáciu I2C rozhrania. Dúfame, že ste tomuto konceptu lepšie porozumeli. Ďalej akékoľvek otázky týkajúce sa tohto konceptu resp prepojovacie zariadenia dajte svoje cenné návrhy komentárom v sekcii komentárov nižšie.