I2C-väylä — osoitus, laite, tiedonsiirto, osoitus
Elektronista piiriä luodessaan monet kehittäjät kohtaavat tarpeen käyttää suurta määrää välisiruja sen yksittäisten lohkojen sovittamiseen, näytteenottoon ja osoittamiseen. Lisäsirujen määrän minimoimiseksi Philips ehdotti 1980-luvulla kaksijohtimista kaksisuuntaista I2C-sarjaverkkoliitäntää, joka on suunniteltu erityisesti hallitsemaan useita siruja yhdessä laitteessa.
Tänä päivänä Philips yksin tuottaa yli sata I2C-yhteensopivaa laitetta elektronisiin laitteisiin, joilla on monenlaisia käyttötarkoituksia: muistia, videoprosessorijärjestelmiä, analogia-digitaali- ja digitaali-analogiamuuntimia, näytönohjaimia jne.
I2C-väylä on muunnos sarjatiedonvaihtoprotokollasta, joka pystyy lähettämään sarjamuotoista 8-bittistä dataa tavallisessa "nopeassa" tilassa 100-400 kbps:n nopeuksilla. Tiedonvaihtoprosessi toteutetaan tässä vain kahdella johdolla (lukuun ottamatta yhteistä johtoa): SDA-linja datalle ja SCL-linja synkronointia varten.
Väylä muuttuu kaksisuuntaiseksi, koska väylään kytkettyjen laitteiden ulostulojen kaskadeissa on avoimia kerääjiä tai kanavia, mikä toistaa JA-johdotuksen. Seurauksena on, että väylä minimoi piirien välisten yhteyksien määrän, jolloin levylle jää vähemmän tarvittavia nastoja ja jälkiä. Tämän seurauksena itse levy osoittautuu yksinkertaisemmiksi, kompaktimmaksi ja teknisesti edistyneemmäksi tuotannossa.
Tämän protokollan avulla voit poistaa käytöstä osoitedekooderit ja muut ulkoiset neuvottelulogiikat. I2C-väylällä samanaikaisesti toimivien sirujen määrää rajoittaa sen kapasiteetti – enintään 400 pF.
I2C-yhteensopivissa IC:issä on laitteiston kohinanvaimennusalgoritmi, joka varmistaa tietojen eheyden myös voimakkaiden häiriöiden yhteydessä. Tällaisissa laitteissa on liitäntä, jonka avulla mikropiirit voivat kommunikoida keskenään, vaikka niiden syöttöjännitteet ovat erilaiset. Alla olevassa kuvassa voit tutustua periaatteeseen yhdistää useita mikropiirejä yhteisen väylän kautta.
Jokaisella väylään kytketyllä laitteella on oma yksilöllinen osoite, jonka se määrittää ja se voi laitteen käyttötarkoituksen mukaisesti toimia vastaanottimena tai lähettimenä. Dataa siirrettäessä nämä laitteet voivat olla isäntä (isäntä) tai orja (orja). Isäntä on laite, joka aloittaa tiedonsiirron ja generoi kellosignaaleja SCL-linjalla. Slave on isäntälaitteeseen nähden kohdelaite.
I2C-väylän toimintahetkellä vain yksi laite voi toimia isäntänä; se tuottaa signaalin SCL-linjalle.Isäntä voi olla joko isäntävastaanotin tai isäntälähetin.
Väylä sallii periaatteessa useita erilaisia isäntiä, mutta asettaa rajoituksia ohjaussignaalien muodostamisen ja väylän tilan valvonnan ominaisuuksille; tämä tarkoittaa, että useat isännät voivat aloittaa lähetyksen samanaikaisesti, mutta tällaiset ristiriidat eliminoituvat välitysmenettelyn, eli sen, miten isäntä käyttäytyy havaitessaan, että väylä on toisen isäntälaitteen käytössä, ansiosta.
Laiteparin synkronointi varmistetaan sillä, että kaikki laitteet on kytketty väylään muodostaen "AND"-johdotuksen. Aluksi SDA- ja SCL-signaalit ovat korkeita.
START ja STOP
Vaihto alkaa siitä, että isäntä generoi «START»-tilan: SDA-linjalla signaali siirtyy korkeasta tilaan, kun taas SCL-linjalla on vakaa korkea taso. Kaikki väylään kytketyt laitteet näkevät tämän tilanteen käskynä käynnistää vaihto.
Jokainen isäntä generoi yksittäisen kellosignaalin SCL-linjalla lähettäessään dataa väylällä.
Vaihto päättyy isäntälaitteen STOP-tilan muodostamiseen: SDA-linjalla signaali vaihtuu matalasta korkeaksi, kun taas SCL-linjalla on vakaa korkea taso.
Kuljettaja toimii aina START- ja STOP-signaalien lähteenä. Heti kun «START»-signaali on kiinteä, se tarkoittaa, että linja on varattu. Linja on vapaa, kun STOP-signaali havaitaan.
Välittömästi START-tilan ilmoittamisen jälkeen isäntä vaihtaa SCL-linjan matalaksi ja lähettää SDA-linjalle ensimmäisen viestitavun merkittävimmän bitin. Viestin tavujen määrää ei ole rajoitettu.SDA-linjan muutokset ovat käytössä vain, kun SCL-linjan signaalitaso on alhainen. Tiedot ovat kelvollisia, eikä niitä tule muuttaa vain, kun synkronointipulssi on korkea.
Kuittaus, että orjavastaanotin on vastaanottanut tavun isäntälähettimestä, tehdään asettamalla erityinen kuittausbitti SDA-linjalle kahdeksannen databitin vastaanoton jälkeen.
VAHVISTUS
Joten 8 bitin datan lähettäminen lähettimestä vastaanottimeen päätyy ylimääräiseen pulssiin SCL-linjalla, kun vastaanottava laite laskee SDA-linjalle, mikä osoittaa, että se on vastaanottanut koko tavun.
Vahvistus on olennainen osa tiedonsiirtoprosessia. Isäntä generoi tahdistuspulssin. Lähetin lähettää matalan tilan SDA:lle, kun kuittauskello on aktiivinen. Kun synkronointipulssi on korkea, vastaanottimen on pidettävä SDA matalana.
Jos kohde-orja ei kuitaa osoitettaan esimerkiksi siksi, että se on sillä hetkellä varattu, datalinja on pidettävä korkealla. Isäntä voi sitten antaa STOP-signaalin lähetyksen keskeyttämiseksi.
Jos vastaanoton suorittaa isäntävastaanotin, se on velvollinen ilmoittamaan orjalähettimelle lähetyksen päätyttyä - ei vahvistamalla viimeistä tavua. Orjalähetin vapauttaa datalinjan, jotta isäntä voi antaa STOP-signaalin tai toistuvan START-signaalin.
Laitteiden synkronointi varmistetaan sillä, että kytkennät SCL-linjaan tehdään "AND"-periaatteella.
Isännällä ei ole yksinoikeutta ohjata SCL-linjan siirtymistä matalasta korkeaan.Jos orja tarvitsee enemmän aikaa vastaanotetun bitin käsittelemiseen, se voi itsenäisesti pitää SCL:n matalana, kunnes se on valmis vastaanottamaan seuraavan databitin. SCL-linja on tällaisessa tilanteessa matala pisimmän matalan tason tahdistuspulssin ajan.
Laitteet, joilla on alhaisin jatkuva matala, pysyvät käyttämättömänä pitkän ajanjakson loppuun asti. Kun kaikki laitteet ovat lopettaneet matalan synkronointijakson, SCL nousee korkeaksi.
Kaikki laitteet alkavat kellota korkealle ja ensimmäinen laite, joka suorittaa jakson, on ensimmäinen, joka asettaa SCL-linjan matalalle. Tämän seurauksena SCL:n matalan tilan kesto määräytyy yhden laitteen synkronointipulssin pisin matalan tilan mukaan ja korkean tilan keston määrää jonkin laitteen lyhin synkronointijakso. laitteet.
Vastaanottimet voivat käyttää synkronointisignaaleja keinona ohjata tiedonsiirtoa bitti- ja tavutasolla.
Jos laite pystyy vastaanottamaan tavuja suurella nopeudella, mutta vastaanotetun tavun tallentaminen tai valmistautuminen seuraavan tavun vastaanottamiseen vie tietyn ajan, se voi jatkaa SCL-arvon pienentämistä vastaanotettuaan ja kuitattuaan tavun, mikä pakottaa lähetin valmiustilaan.
Mikro-ohjain, jossa ei ole sisäänrakennettuja laitteistopiirejä, esimerkiksi bittitasolla, voi hidastaa kellotaajuutta pidentämällä matalan tilan kestoa, minkä seurauksena päälaitteen baudinopeus määräytyy sen nopeuden mukaan. hitaampi laite.
OSOITTAMINEN
Jokaisella I2C-väylään liitetyllä laitteella on yksilöllinen ohjelmaosoite, johon isäntä osoittaa sen lähettämällä tietyn komennon. Samantyyppisille mikropiireille on tunnusomaista osoitteenvalitsin, joka on toteutettu joko valitsimen digitaalisten tulojen muodossa tai analogisessa muodossa. Osoitteet on jaettu väylään kytkettyjen laitteiden osoiteavaruuteen.
Normaalitila olettaa seitsemän bitin osoitteen. Osoittaminen toimii seuraavasti: «START»-komennon jälkeen isäntä lähettää ensimmäisen tavun, joka määrittää, mikä orjalaite tarvitaan kommunikoimaan isäntälaitteen kanssa. On myös yhteinen kutsuosoite, joka määrittelee kaikki väylällä olevat laitteet, kaikki laitteet (teoreettisesti) vastaavat siihen kuittauksella, mutta käytännössä tämä on harvinaista.
Joten ensimmäisen tavun seitsemän ensimmäistä bittiä ovat orjaosoite. Vähiten merkitsevä bitti, kahdeksas, ilmaisee tiedon lähetyssuunnan. Jos on «0», tiedot kirjoitetaan isännältä tälle orjalle. Jos «1», isäntä lukee tiedot tältä orjalta.
Kun isäntä on lähettänyt osoitetavun, kukin orja vertaa osoitettaan siihen. Jokainen, jolla on sama osoite, on orja ja määritellään orjalähettimeksi tai orjavastaanottimeksi osoitetavun vähiten merkitsevän bitin arvosta riippuen.
Orjaosoite voi sisältää kiinteitä ja ohjelmoitavia osia. Melko usein samassa järjestelmässä toimii suuri määrä samantyyppisiä laitteita, jolloin osoitteen ohjelmoitava osa mahdollistaa enintään samantyyppisten laitteiden käytön väylällä. Kuinka monta bittiä osoitetavussa on ohjelmoitavissa, riippuu sirulla olevien vapaiden nastojen määrästä.
Joskus riittää nasta, jolla on ohjelmoitavan osoitealueen analoginen asetus, esimerkiksi SAA1064 - LED-ilmaisinohjain, jolla on juuri tällainen toteutus. Tietyn nastan potentiaali määrittää sirun osoiteavaruuden poikkeaman, jotta samantyyppiset sirut eivät ole ristiriidassa samalla väylällä toimiessa. Kaikki I2C-väylää tukevat sirut sisältävät joukon osoitteita, jotka valmistaja määrittelee dokumentaatiossa.
Yhdistelmä «11110XX» on varattu 10-bittiselle osoitteelle. Jos kuvittelemme tietojen vaihdon «START»-komennosta «STOP»-komentoon, se näyttää tältä:
Yksinkertaiset ja yhdistetyt tiedonsiirtomuodot ovat sallittuja. Yhdistetty muoto tarkoittaa, että «START» ja «STOP» välillä isäntä ja orja voivat toimia vastaanottimina ja lähettiminä, mikä on hyödyllistä esimerkiksi sarjamuistin hallinnassa.
Anna tiedon ensimmäisen tavun siirtää muistiosoite. Sitten toistamalla «START»-komento ja lukemalla orja-osoite, muistitiedot toimivat. Laitteen kehittäjä tekee päätökset lisätä tai vähentää automaattisesti aiemmin käytettyä osoitetta tutkittuaan sirun dokumentaatiota. Tavalla tai toisella START-komennon saatuaan kaikkien laitteiden on palautettava logiikkansa ja varauduttava siihen, että osoite nimetään nyt.