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-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-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
- Aloitusbitin kunto
- Pysäytysbitin kunto
- Kuittaustila
- Master to slave Kirjoitustoiminto
- 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
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)
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
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
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
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.