I2C-väyläprotokollan opetusohjelma, käyttöliittymä sovellusten kanssa

Kokeile Instrumenttia Ongelmien Poistamiseksi





Nykyään protokollilla on keskeinen rooli sulautetun järjestelmän suunnittelu . Menemättä protokolliin, jos haluat laajentaa mikrokontrollerin oheisominaisuuksia, monimutkaisuus ja virrankulutus kasvavat. Saatavilla on erityyppisiä väyläprotokollia, kuten USART, SPI, CAN, I2C-väyläprotokolla jne., joita käytetään tietojen siirtämiseen kahden järjestelmän välillä.

I2C-protokolla

Mikä on I2C-väylä?




Tietojen lähettäminen ja vastaanottaminen kahden tai useamman kuin kahden laitteen välillä vaatii väyläjärjestelmäksi kutsutun tiedonsiirtopolun. I2C-väylä on kaksisuuntainen kaksilankainen sarjaväylä, jota käytetään datan siirtämiseen integroitujen piirien välillä. I2C tarkoittaa 'Inter Integrated Circuit'. Philipsin puolijohteet esittivät sen ensimmäisen kerran vuonna 1982. I2C-väylä koostuu kolmesta tiedonsiirtonopeudesta, kuten vakio, nopea tila ja nopea tila. I2C-väylä tukee 7-bittistä ja 10-bittistä osoiteavaruuslaitetta, ja sen toiminta eroaa matalilla jännitteillä.

I2c-väyläprotokolla

I2c-väyläprotokolla



I2C-signaalilinjat

I2C-signaalilinjat

I2C-signaalilinjat

I2C on sarjaväyläprotokolla, joka koostuu kahdesta signaalilinjasta, kuten SCL- ja SDL-linjoista, joita käytetään yhteydenpitoon laitteiden kanssa. SCL tarkoittaa 'sarjakellolinjaa', ja tätä signaalia ohjaa aina 'päälaite'. SDL tarkoittaa ”sarjaliikennelinjaa”, ja tätä signaalia ohjaa joko isäntä tai I2C-oheislaitteet. Sekä nämä SCL- että SDL-linjat ovat avoimen tyhjennyksen tilassa, kun I2C-oheislaitteiden välillä ei ole siirtoa.

Avoimen tyhjennyksen lähdöt


Avoin viemäri on FET-transistorin käsite jossa transistorin tyhjennysliitin on avoin tila. Isäntälaitteen SDL- ja SCL-nastat on suunniteltu siten, että transistorit ovat avoimessa tilassa, joten tiedonsiirto on mahdollista vain, kun näitä transistoreita johdetaan. Siksi nämä johdot tai tyhjennysliittimet on kytketty perusteellisiin vetovastuksiin VCC: hen johtamistilaa varten.

I2C-liitännät

Monet orjalaitteet on liitetty mikrokontrolleriin I2C-väylän avulla I2C-tasonsiirtimen IC kautta tiedon siirtämiseksi niiden välillä. I2C-protokollaa käytetään enintään 128 laitteen liittämiseen, jotka kaikki on kytketty kommunikoimaan pääyksikön SCL- ja SDL-linjojen sekä orjalaitteiden kanssa. Se tukee Multimaster-viestintää, mikä tarkoittaa, että ulkoisten laitteiden kommunikointiin käytetään kahta masteria.

I2C-tiedonsiirtomaksut

I2C-protokolla toimii kolmella tavalla, kuten: nopea tila, nopea tila ja vakiotila, jossa vakiotilan tiedonsiirtonopeus on 0 Hz - 100 Hz, ja nopean tilan dataa voidaan siirtää nopeudella 0 Hz - 400 KHz ja nopea tilassa 10 KHz - 100 KHz. 9-bittinen data lähetetään jokaisesta siirrosta, jossa lähetin MSB lähettää 8-bittistä tietoa LSB: lle, ja yhdeksäs bitti on vastaanottimen lähettämä kuittausbitti.

I2C-tiedonsiirtomaksut

I2C-tiedonsiirtomaksut

I2C-viestintä

I2C-väyläprotokollaa käytetään yleisimmin isäntä- ja orjaviestinnässä, jossa isäntälaitetta kutsutaan 'mikrokontrolleriksi', ja orjaa kutsutaan muiksi laitteiksi, kuten ADC, EEPROM, DAC ja vastaaviksi laitteiksi sulautetussa järjestelmässä. Orjalaitteiden määrä on kytketty isäntälaitteeseen I2C-väylän avulla, jolloin kukin orja koostuu ainutlaatuisesta osoitteesta sen välittämiseksi. Seuraavia vaiheita käytetään isäntälaitteen kommunikointiin orjaan:

Vaihe 1: Ensinnäkin isäntälaite antaa aloitusehdot ilmoittamaan kaikille orjalaitteille, jotta he kuuntelevat sarjatietolinjaa.

Vaihe 2: Päälaite lähettää kohde-orjalaitteen osoitteen, jota verrataan kaikkiin orjalaitteiden osoitteisiin kytkettynä SCL- ja SDL-linjoihin. Jos joku osoite vastaa, kyseinen laite valitaan, ja kaikki muut laitteet irrotetaan SCL- ja SDL-linjoista.

Vaihe 3: Orjalaite isännältä vastaanotetulla osoitetulla osoitteella vastaa kuittauksella isännälle sen jälkeen, kun tiedonsiirto muodostuu sekä isäntälaitteen että orjalaitteiden välillä dataväylällä.

Vaihe 4: Sekä isäntä että orja vastaanottavat ja lähettävät tietoja sen mukaan, luetaanko vai kirjoitetaanko viestintää.

Vaihe 5: Sitten isäntä voi lähettää 8-bittistä dataa vastaanottimelle, joka vastaa 1-bittisellä kuittauksella.

I2C-opetusohjelma

Informaation lähettämistä ja vastaanottamista askel askeleelta sarjassa kellopulssien suhteen kutsutaan I2C-protokollaksi. Se on järjestelmien välinen ja lyhyen matkan protokolla, mikä tarkoittaa, että sitä käytetään piirilevyssä isäntä- ja orjalaitteiden kommunikointiin.

I2C-protokollan perusteet

Yleensä I2C-väyläjärjestelmä koostuu kahdesta johtimesta, joita käytetään helposti tulo- ja lähtöominaisuuksien, kuten ADC, EEROM ja RTC, laajentamiseen, ja muut peruskomponentit tehdä järjestelmä, jonka monimutkaisuus on hyvin pieni.

Esimerkki: Koska 8051-mikrokontrollerissa ei ole sisäänrakennettua ADC: tä, joten jos haluamme liittää analogiset anturit 8051-mikrokontrolleriin, meidän on käytettävä ADC-laitteita, kuten ADC0804-1-kanava ADC, ADC0808-8-kanavainen ADC jne. Käyttämällä näitä ADC: itä, voimme liittää analogiset anturit mikrokontrolleriin.

Ilman protokollaa minkä tahansa mikrokontrollerin tai prosessorin I / O-ominaisuuksien laajentamiseen voimme siirtyä 8255 ICit 8-nastaiselle laitteelle. 8051-mikrokontrolleri on 40-nastainen mikrokontrolleri käyttämällä 8255 IC: tä voimme laajentaa 3-I / O-portteja 8-napaisilla kussakin portissa. Käyttämällä kaikkia laitteita, kuten RTC, ADC, EEPROM, ajastimet jne. - oheislaitepiirien laajentamiseksi, myös monimutkaisuus, kustannukset, virrankulutus ja tuotekoko kasvavat.

Tämän ongelman voittamiseksi protokollakonsepti tulee kuvaan laitteiston monimutkaisuuden ja virrankulutuksen vähentämiseksi. Voimme laajentaa useampia ominaisuuksia, kuten I / 0-oheislaitteet, ADC: t, T / C ja muistilaitteet jopa 128 laitteeseen, käyttämällä tätä I2C-protokollaa.
I2C-protokollissa käytetty terminologia

Lähetin: Laitetta, joka lähettää dataa väylälle, kutsutaan lähettimeksi.

Vastaanotin: Laitetta, joka vastaanottaa dataa väylältä, kutsutaan vastaanottimeksi.

Hallita: Laitetta, joka aloittaa siirron kellosignaalien muodostamiseksi ja lopettaa siirron, kutsutaan masteriksi.

Orja: Isännän osoittamaa laitetta kutsutaan orjaksi.

Multimaster: Useampi kuin yksi päällikkö voi yrittää ohjata väylää samanaikaisesti vahingoittamatta viestiä kutsutaan Multimasteriksi.

Välimiesmenettely: Menettely sen varmistamiseksi, että jos useampia kuin yksi päällikkö yrittää samanaikaisesti ohjata väylää - vain yksi saa tehdä niin, voittajaviesti ei ole vioittunut.

Synkronointi: Menettelyä kahden tai useamman laitteen kellosinkelien synkronoimiseksi kutsutaan synkronoinniksi.

I2C-peruskomennojen järjestys

  1. Aloitusbitin kunto
  2. Pysäytysbitin kunto
  3. Kuittaustila
  4. Master to slave Kirjoitustoiminto
  5. Lue Operaation orja

Käynnistä ja lopeta bitin kunto

Kun isäntä (mikrokontrolleri) haluaa puhua orjalaitteen (esimerkiksi ADC) kanssa, se aloittaa viestinnän antamalla I2C-väylälle aloitusehdon ja antaa sitten pysäytysolosuhteen. I2C-aloitus- ja lopetuslogiikan tasot on esitetty kuvassa.

I2C-aloitustila määritellään SDA-linjan korkeasta matalaksi siirtymäksi SCL-linjan ollessa korkea. I2C-pysäytysolosuhde tapahtuu, kun SDA-linja vaihtaa matalasta korkeaan SCL-linjan ollessa korkealla.

I2C-isäntä generoi aina S- ja P-olosuhteet. Kun I2C-isäntä käynnistää START-ehdon, I2c-väylän katsotaan olevan kiireisessä tilassa.

Käynnistä ja lopeta bitin kunto

Käynnistä ja lopeta bitin kunto

Ohjelmointi:

ALOITA EHDOTUS:

sbit SDA = P1 ^ 7 // alustaa mikro-ohjaimen SDA- ja SCL-nastat //
sbit SCL = P1 ^ 6
void delay (allekirjoittamaton int)
void main ()
{
SDA = 1 // tietojen käsittely //
SCL = 1 // kello on korkea //
viive()
SDA = 0 // lähetti tiedot //
viive()
SCL = 0 // kellosignaali on matala //
}
Tarpeeton viive (int p)
{
allekirjoittamaton, b
Sillä (a = 0a<255a++) //delay function//
Sillä (b = 0b}

STOP-tila:

void main ()
{
SDA = 0 // Lopeta tietojen käsittely //
SCL = 1 // kello on korkea //
viive()
SDA = 1 // Pysäytetty //
viive()
SCL = 0 // kellosignaali on matala //
}
Tarpeeton viive (int p)
{
allekirjoittamaton, b
Sillä (a = 0a<255a++) //delay function//
Sillä (b = 0b}

Kuittaus (ACK) ja Ei kuittausta (NCK)

Jokaisen I2C-väylän kautta lähetetyn tavun jälkeen seuraa kuittaustila vastaanottimelta, mikä tarkoittaa, että kun isäntä vetää SCL: n matalaksi 8-bittisen lähetyksen loppuun saattamiseksi, vastaanotin vetää SDA: n matalalle isännälle. Jos sen jälkeen kun vastaanottimen lähetys ei vedä, SDA-linjaa LOW pidetään NCK-tilana.

Kuittaus (ACK)

Kuittaus (ACK)

Ohjelmointi

Tunnustus
void main ()
{
SDA = 0 // SDA-rivi laskee matalaksi //
SCL = 1 // kello on korkeasta matalaan //
viive (100)
SCL = 0
}
Ei kuittausta:
void main ()
{
SDA = 1 // SDA-rivi nousee korkealle //
SCL = 1 // kello on korkeasta matalaan //
viive (100)
SCL = 0
}

Mestari orjaan -operaatio

I2C-protokolla siirtää tiedot pakettien tai tavujen muodossa. Jokaista tavua seuraa kuittausbitti.

Tiedonsiirtomuoto

Tiedonsiirtomuoto

Tiedonsiirtomuoto

Alkaa: Ensisijaisesti tiedonsiirtosekvenssi, jonka master aloittaa generoimalla alkuehdot.

7-bittinen osoite: Sen jälkeen isäntä lähettää orjaosoitteen kahdessa 8-bittisessä muodossa yhden 16-bittisen osoitteen sijaan.

R / W: Jos luku- ja kirjoitusbitti on suuri, kirjoitusoperaatio suoritetaan.

VALITETTAVASTI: Jos kirjoitusoperaatio suoritetaan orjalaitteessa, vastaanotin lähettää 1-bittisen ACK: n mikrokontrollerille.

Lopettaa: Kun orjalaite on kirjoittanut kirjoitusoperaation, mikrokontrolleri lähettää pysäytysolosuhteen orjalaitteelle.

Ohjelmointi

Kirjoitustoiminto

voidwrite (allekirjoittamaton merkki d)
{
Allekirjoittamaton merkki k, j = 0x80
Sillä (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
viive (4)
SCL = 0
}
SDA = 1
SCL = 1
viive (2)
c = SDA
viive (2)
SCL = 0
}

Mestari-orja-lukutoiminto

Tiedot luetaan takaisin orjalaitteelta bittien tai tavujen muodossa - lue ensin merkittävin bitti ja viimeisin vähiten merkittävä bitti.

Tietojen lukumuoto

Tietojen lukumuoto

Tietojen lukumuoto

Alkaa: Ensisijaisesti tiedonsiirtosekvenssi aloitetaan pääkäyttäjällä, joka luo aloitusolosuhteet.

7-bittinen osoite: Sen jälkeen isäntä lähettää orjaosoitteen kahdessa 8-bittisessä muodossa yhden 16-bittisen osoitteen sijaan.

R / W: Jos luku- ja kirjoitusbitti on vähän, lukutoiminto suoritetaan.

VALITETTAVASTI: Jos kirjoitusoperaatio suoritetaan orjalaitteessa, vastaanotin lähettää 1-bittisen ACK: n mikrokontrollerille.

Lopettaa: Kun orjalaite on kirjoittanut kirjoitusoperaation, mikrokontrolleri lähettää pysäytysolosuhteen orjalaitteelle.

Ohjelmointi

Tyhjä luku ()
{
Allekirjoittamaton merkki j, z = 0x00, q = 0x80
SDA = 1
(j = 0j<8j++)
{
SCL = 1
viive (100)
lippu = SDA
jos (lippu == 1)
q)
q = q >> 1
viive (100)
SCL = 0

Käytännön esimerkki ADC: n liittämisestä 8051-mikrokontrolleriin

ADC on laite, jota käytetään muuntamaan analogiset tiedot digitaalisiksi ja digitaalisiksi analogisiksi. 8051-mikrokontrollerissa ei ole sisäänrakennettua ADC: tä, joten meidän on lisättävä ulkoisesti I2C-protokollan kautta. PCF8591 on I2C-pohjainen analoginen digitaaliseen ja digitaalinen-analoginen muunnin. Tämä laite tukee enintään 4-analogista tulokanavaa ja 2,5–6 voltin jännitteitä.

Analogiset lähdöt

Analogialähdöt ovat jännitteitä. Esimerkiksi 5 V: n analoginen anturi antaa lähtölogiikan 0,01 V - 5 V.
Suurin digitaalinen arvo 5v on = 256.
2,5v: n arvo on = 123 maksimijännitteen arvon mukaan.

Analogialähdön kaava on:

Digitaalisten lähtöjen kaava:

ADC: n liitäntä 8051-mikrokontrolleriin

ADC: n liitäntä 8051-mikrokontrolleriin

Yllä oleva kuva esittää tiedonsiirron I2C-protokollan avulla ADC-laitteesta 8051-mikrokontrolleriin. SCL: n ja SDA: n ADC-nastat on kytketty mikrokontrollerin nastoihin 1.7 ja 1.6 yhteyden muodostamiseksi niiden välille. Kun anturi antaa analogiset arvot ADC: lle, se muuntuu digitaaliseksi ja siirtää tiedot mikro-ohjaimelle I2C-protokollan kautta.

Tämä koskee I2C-väyläprotokolla-opetusohjelmaa sopivilla ohjelmilla. Toivomme, että annettu sisältö antaa sinulle käytännöllisen käsityksen useiden laitteiden liittämisestä mikrokontrollereihin I2C-viestintää käyttämällä. Jos sinulla on epäilyksiä tämän protokollan rajapintamenettelystä, voit ottaa meihin yhteyttä kommentoimalla alla.