I2C-EEPROMin liittäminen 8051-mikrokontrolleriin

Kokeile Instrumenttia Ongelmien Poistamiseksi





Termi I2C tai IIC lyhenne on inter integroitu virtapiiri ja sitä kutsutaan, kun neliön C. I2C on sarjatietoväylä , jonka NXP-puolijohteet keksivät aiemmin, se on nimetty Philipsin puolijohteiksi. I2C-väylää käytetään kiinnittämään pienen nopeuden oheislaitteiden integroidut piirit mikro-ohjaimet ja prosessorit . Vuonna 2006 I2C-protokollan toteuttamiseksi lisenssimaksua ei tarvita. Mutta maksu on välttämätöntä NXP-puolijohteiden määrittelemän I2C-orjaosoitteen saamiseksi.

Jotkut kilpailijat, kuten Texas Instruments, Siemens AG, NEC, Motorola, Intersil ja STMicroelectronics, ovat ilmoittaneet markkinoille sopivista I²C-tuotteista 1990-luvun puolivälissä. Vuonna 1995 SMBus on määritelty Intelillä, joka on I²C: n alaryhmä, jonka mukaan protokollat ​​ovat tiukempia. SMBus-palvelun päätarkoitus on tukea yhteentoimivuutta ja kestävyyttä. Siksi nykyiset I²C-järjestelmät sisältävät SMBusin sääntöjä ja käytäntöjä, joskus se tukee sekä I2C: tä että SMBus: iä uudelleen määrittelemättä.




I2C-väylä

I2C-väylä

Liitäntä I2C Bus-EEPROM 8051-mikrokontrollerilla

Mikä on I2C-väylä

I2c-väylä käyttää kahta kaksisuuntaista avointa tyhjennyslinjaa, kuten SDA (sarjaliikennelinja) ja SCl (sarjakellolinja), ja nämä vedetään ylös vastuksilla. I2C-väylä sallii päälaitteen aloittaa viestinnän orjalaitteen kanssa. Tiedot vaihdetaan näiden kahden laitteen välillä. Tyypillisiä käytettyjä jännitteitä ovat + 3,3 V tai + 5 V, vaikka järjestelmät, joissa on ylijännitteitä, ovat sallittuja.



I2C-liitäntä

I2C-liitäntä

EEPROM

Sähköisesti pyyhittävä ohjelmoitava ROM (EEPROM) on käyttäjän muokattava ROM, joka voidaan poistaa ja ohjelmoida uudelleen usein käyttämällä normaalia suurempaa sähköjännitettä. EEPROM on eräänlainen haihtumaton muisti, jota käytetään elektronisissa laitteissa, kuten tietokoneissa, pienien tietomäärien tallentamiseen, jotka tulisi säästää virran ollessa irti.

8051 Slicker-levy

8051 Slicker -taulu on suunniteltu erityisesti auttamaan teknisiä opiskelijoita alueella sisällytetty järjestelmä . Tämä sarja on suunniteltu siten, että kaikki 8051-mikrokontrolleri opiskelijat mahdollisesti käyttävät. Tämä hyökkääjälevy tukee sarjaportin kautta suoritettavaa ISP: tä (In System Programming). Tämän paketin ja NXP: n 8051: n ehdotetaan tasoittavan monien nopeuden 8-bittisten mikrokontrollerien ympärillä olevien mallien virheenkorjauksen edistymistä.

Liitäntä I2C - EEPROM

Seuraava kuva esittää I2C-EEPROM-liitännän 8051-mikrokontrolleriin. Tässä I2C on master-slave-protokolla, joka sisältää tiedot yhdessä kellopulssin kanssa. Tyypillisesti päälaite vaihtoi kellolinjan SCL. Tämä rivi tilaa datan ajoituksen, joka siirtyy I2C-väylälle. Ellei kelloa käytetä, tietoja ei siirretä. Kaikkia orjia ohjataan samalla kellolla, SCL.


Liitäntä I2C - EEPROM

Liitäntä I2C - EEPROM

I2C-väylä tukee eri laitteita jossa kukin laite tunnistetaan yksilöllisellä osoitteella riippumatta siitä, onko kyseessä LCD - ohjain, muistikortti, mikro - tai näppäimistön liitäntä joka voi toimia kuten Tx tai Rx, riippuu laitteen toiminnasta. Ohjain on suunniteltu ohjaamaan EEPROM-laitetta I2C-protokollan kautta. Tässä I2C-protokolla toimii isäntälaitteena ja säätelee EEPROMia ja toimii orjana. R / W-toiminnot ovat taitavia siirtämällä ohjaussignaalien joukko, joka käsittää osoitteen JA / TAI-tietoväylän. Näihin signaaleihin tulisi vastata sopivilla kellosignaaleilla

Liitäntä I2C Bus-EEPROM 8051-mikrokontrollerilla

Jos haluat lukea, kirjoita ja poista EEPROM käyttämällä I2C-väylää 8051-hyökkääjälevyssä. I2-väylän ja EEPROM: n liitäntä 8051-mikrokontrolleri on hyvin yksinkertainen . Tämän liitännän tehtävänä on lähettää signaali, kuten WRITE, jota seuraa data ja osoiteväylä. Tässä toiminnossa tietojen tallentamiseen käytetään EEPROM-muistia. 8051-sarjassa kahta EEPROM-linjan määrää säätävät I2C-tuetut ohjaimet. SCL ja SDA on kytketty I2C-pohjaiseen EEPROM-sarjaan.

Liitäntä I2C Bus-EEPROM 8051-mikrokontrollerilla

Liitäntä I2C Bus-EEPROM 8051-mikrokontrollerilla

Käyttämällä SDA- ja SCL I2C -rivejä EEPROM: n luku- ja kirjoitusoperaatiot suoritetaan 8051 Slicker Kit -sarjassa

I2C: n liitäntä on niin yksinkertaista ja lukee / kirjoittaa jokaisessa datassa EEPROM-tiedostossa. Viive riippuu kääntäjästä kuinka se parantaa silmukoita heti kun teet muutoksia valintoihin viive vaihtelee.

Lähdekoodi I2C-liitännälle

#sisältää
#sisältää
#sisältää

#define ACK 1
#define NO_ACK 0

allekirjoittamaton merkki i
allekirjoittamaton merkki EData [5]
allekirjoittamaton char Data
void InitSerial (mitätön)
void DelayMs (allekirjoittamaton int)
void WriteI2C (allekirjoittamaton merkki)
void Start (void)
void Pysäytä (void)
void ReadBYTE (allekirjoittamaton int)
void WriteBYTE (allekirjoittamaton int)
allekirjoittamaton merkki ReadI2C (bitti)

sbit SCL = P2 ^ 0 // muodosta yhteys SCL-nastaan ​​(kello)
sbit SDA = P2 ^ 1 // muodosta yhteys SDA-nastaan ​​(data)

// —————————————
// Pääohjelma
// —————————————
void main (mitätön)
{
InitSerial () // Alusta sarjaportti
putchar (0x0C) // tyhjennä hyperterminaali
Viive (5)
WriteBYTE (0x0000)
WriteI2C (’A’) // Kirjoita tiedot tähän
KirjoitaI2C (’B’)
KirjoitaI2C (’C’)
KirjoitaI2C (’D’)
KirjoitaI2C (’E’)
KirjoitaI2C (’F’)
Lopettaa()
Viive (10)

LueBYTE (0x0000)
EData [0] = LuettuI2C (EI_TAKA)
EData [1] = LuettuI2C (NO_ACK)
EData [2] = LuettuI2C (NO_ACK)
EData [3] = LuettuI2C (NO_ACK)
EData [4] = LuettuI2C (EI_TAKA)
EData [5] = LuettuI2C (NO_ACK)

(i = 0i<6i++)
{
printf ('arvo =% c n', EData [i]) // näyttää tiedot * /
ViiveM (100)
}

kun taas (1)
}

// —————————————
// Alusta sarjaportti
// —————————————
void InitSerial (mitätön)
{
SCON = 0x52 // sarjaportin ohjaus
TMOD = 0x20 // laitteisto (9600 BAUD @ 11.0592MHZ)
TH1 = 0xFD // TH1
TR1 = 1 // Ajastin 1 päällä
}

// ———————————-
// Käynnistä I2C
// ———————————-
void Start (void)
{
SDA = 1
SCL = 1
_painike _ () _ nop_ ()
SDA = 0
_painike _ () _ nop_ ()
SCL = 0
_painike _ () _ nop_ ()
}

// ———————————-
// lopeta I2C
// ———————————-
void Pysäytä (void)
{
SDA = 0
_painike _ () _ nop_ ()
SCL = 1
_painike _ () _ nop_ ()
SDA = 1
}

// ———————————-
// Kirjoita I2C
// ———————————-
void WriteI2C (allekirjoittamattomat merkkitiedot)
{

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

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

}

// ———————————-
// Lue I2C
// ———————————-
allekirjoittamaton merkki ReadI2C (bitti ACK_Bit)
{

Alkaa()
KirjoitaI2C (0xA1)

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

SCL = 1
Tiedot<<= 1
Päivämäärä = (Päivämäärä

jos (ACK_Bit == 1)
SDA = 0 // Lähetä ACK
muu
SDA = 1 // Lähetä EI ACK

_painike _ () _ nop_ ()
SCL = 1
_painike _ () _ nop_ ()
SCL = 0
Lopettaa()
palauta tiedot
}

// ———————————-
// Lue 1 tavun muotoinen lomake I2C
// ———————————-
void ReadBYTE (allekirjoittamaton int Addr)
{
Alkaa()
WriteI2C (0xA0)
WriteI2C ((allekirjoittamaton merkki) (Addr >> 8) ja 0xFF)
WriteI2C ((allekirjoittamaton merkki) Addr ja 0xFF)
}

// ———————————-
// Kirjoita 1 tavu I2C: lle
// ———————————-
void WriteBYTE (allekirjoittamaton int Addr)
{
Alkaa()
WriteI2C (0xA0)
WriteI2C ((allekirjoittamaton merkki) (Addr >> 8) & 0xFF) // lähetä osoite korkea
WriteI2C ((allekirjoittamaton merkki) Addr & 0xFF) // lähetä osoite matala
}

// —————————————
// Viivästää mS-toimintoa
// —————————————
void DelayMs (allekirjoittamaton int-määrä)
{// mSec-viive 11.0592 Mhz
allekirjoittamaton int i // Keil v7.5a
kun (laskea)
{
i = 115
kun (i> 0) i–
Kreivi-
}
}

Näin ollen kyse on I2C-käyttöliittymän toteuttamisesta. Toivomme, että olet saanut paremman käsityksen tästä käsitteestä. Lisäksi kaikki tätä käsitettä koskevat kysymykset tai liitäntälaitteet anna arvokkaat ehdotuksesi kommentoimalla alla olevassa kommenttiosassa.