I²C

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 26.9.2020 tarkistetusta versiosta . tarkastukset vaativat 14 muokkausta .

I²C ( IIC , venäjä ah-square-si tai ah-tu-si , eng.  Inter-Integrated Circuit ) on sarjamuotoinen epäsymmetrinen väylä elektronisten laitteiden sisällä olevien integroitujen piirien väliseen viestintään . Käyttää kahta kaksisuuntaista tietoliikennelinjaa (SDA ja SCL), joita käytetään hitaiden oheislaitteiden liittämiseen prosessoreihin ja mikro -ohjaimiin (esimerkiksi emolevyissä , sulautetuissa järjestelmissä , matkapuhelimissa ).

Historia

Philips Semiconductors on kehittänyt sen 1980- luvun alussa yksinkertaiseksi 8-bittiseksi sisäpuhelinväyläksi rakennuksen ohjauselektroniikkaan. Se on suunniteltu 100 kHz:n taajuudelle.

Standardoitu vuonna 1992, ensimmäisessä versiossa 400 kbps nopea tila ( Fast - mode , Fm ) lisättiin tavanomaiseen 100 kbps - tilaan ; 10-bittisen osoitteen ansiosta on mahdollista liittää yhteen väylään yli 1000 laitetta, joiden lukumäärää rajoittaa suurin sallittu väyläkapasiteetti - 400 pF .

Versio 2.0 (1998) ottaa käyttöön nopean 3,4 Mbit/s ( Hs ) tilan ja alhaiset tehovaatimukset. Hieman paranneltu versiossa 2.1 (2000).

Versio 3 (2007) lisäsi 1 Mbps tilan ( Fast-mode plus , Fm+ ) ja laitteen tunnistusmekanismin ( ID ).

Versio 4 (2012) esitteli yksisuuntaisen 5 Mbps tilan ( Ultra Fast-mode , UFm ) käyttämällä push-pull- logiikkaa ilman vetovastuksia , esiasetettujen tunnisteiden taulukko lisättiin.

Versio 5 (2012) korjaa virheet.

Versiossa 6 (2014) väylän kapasitanssista ja käyttöjännitteestä riippuen vetovastusten arvon määrittävät käyrät on laskettu uudelleen [1] .

Kytkentäperiaate

I 2 C -väylä on synkroninen ja koostuu kahdesta linjasta: data (SDA) ja kello (SCL). On isäntä (isäntä) ja orjat (orja). Vaihdon aloittaja on aina isäntä, kahden orjan välinen vaihto on mahdotonta. Yhdellä kaksijohdinväylällä voi olla yhteensä enintään 127 laitetta.

Isäntä generoi SCL-linjan kellot. SDA-linjaa voi ohjata joko isäntä tai orja lähetyssuunnasta riippuen. Tiedonvaihdon yksikkö on paketti, joka on kehystetty ainutlaatuisilla väyläehdoilla, joita kutsutaan aloitus- ja lopetusehtoiksi. Jokaisen paketin alussa oleva isäntä lähettää yhden tavun, jossa se ilmoittaa orjan osoitteen ja myöhempien tietojen lähetyssuunnan. Tiedot välitetään 8-bittisinä sanoina. Jokaisen sanan jälkeen vastaanottava puoli lähettää yhden kuittausbitin.

Kuinka se toimii

I²C käyttää kahta kaksisuuntaista linjaa, jotka on vedetty syöttöjännitteeseen ja joita ohjataan avoimen kollektorin tai avoimen nielun kautta - sarjatietolinjaa (SDA, eng.  Serial DAta ) ja sarjakellolinjaa ( SCL, eng.  Serial CLock ). Vakiojännitteet ovat +5 V tai +3,3 V, mutta muut ovat sallittuja.

Klassinen osoitus sisältää 7-bittisen osoitetilan, jossa on 16 varattua osoitetta. Tämä tarkoittaa, että kehittäjät voivat liittää oheislaitteita yhteen väylään jopa 112 ilmaista osoitetta.

Päätoimintatapa on 100 kbps; 10 kbps hidastetun nopeuden tilassa. On myös tärkeää, että standardi sallii kellon keskeyttämisen toimimaan hitaiden laitteiden kanssa.

Viestin lähetysprosessi. START ja STOP tila

Vaihtoprosessi alkaa isännällä generoimalla START-tilan : kun SCL-linja on HIGH, se generoi SDA-linjasignaalin siirtymän HIGH-tilasta LOW-tilaan. Kaikki väylään kytketyt laitteet havaitsevat tämän siirtymän merkkinä vaihtoprosessin alkamisesta. Kellon luominen on aina isännön vastuulla; kukin isäntä generoi oman kellosignaalinsa lähettäessään dataa väylän kautta.


Kun paketteja lähetetään I²C-väylän kautta, jokainen isäntä generoi oman kellosignaalinsa SCL-linjalla. Kun START-ehto on muodostettu, isäntä laskee SCL-linjan tilan LOW-tilaan ja asettaa sanoman ensimmäisen tavun merkittävimmän bitin SDA-linjalle. Viestin tavujen määrää ei ole rajoitettu. I²C-väylämääritys sallii muutokset SDA-linjassa vain, kun SCL-linja on ALHAINEN. Tiedot ovat kelvollisia ja niiden pitäisi pysyä vakaina vain kellon HIGH-tilassa. Vahvistaakseen, että orja-vastaanotin vastaanottaa tavun isäntälähettimeltä, I²C-väylän vaihtoprotokollan määrittelyyn lisätään erityinen vahvistusbitti, joka asetetaan SDA-väylään 8 databitin vastaanoton jälkeen.


Vaihtoprosessi päättyy siihen, että isäntä generoi STOP-tilan  - SDA-linjan tilan siirtymisen LOW-tilasta HIGH-tilaan, kun SCL-linja on HIGH. START- ja STOP-tilat generoi aina isäntä. Väylän katsotaan olevan varattu sen jälkeen, kun START-ehto on lukittu. Bussi katsotaan vapaaksi jonkin aikaa STOP-ehdon korjaamisen jälkeen.

Vahvistus

Siten 8 bitin datan siirto lähettimestä vastaanottimeen saatetaan päätökseen lisäjaksolla (SCL-linjan 9. kellopulssin muodostus), jossa vastaanotin asettaa SDA-linjan signaalitason matalaksi. merkki tavun onnistuneesta vastaanotosta.

Kuittaus tiedonsiirron aikana on pakollista, paitsi kun orjapuoli suorittaa siirron. Isäntä generoi vastaavan synkronointipulssin. Lähetin vapauttaa (asettaa HIGH) SDA-linjan kuittauskellon ajaksi. Vastaanottimen tulee pitää SDA-linja kuittauskellon HIGH-tilan aikana vakaassa LOW-tilassa.

Siinä tapauksessa, että vastaanottimen orja ei voi kuitata osoitettaan (esimerkiksi silloin kun se parhaillaan suorittaa reaaliaikaisia ​​toimintoja), datalinja tulee jättää HIGH-tilaan. Isäntä voi sitten antaa STOP-ehdon tiedonsiirron keskeyttämiseksi. Jos isäntä-vastaanotin on mukana siirrossa, sen on raportoitava siirron päättymisestä orjalähettimelle jättämällä kuittaamatta viimeistä tavua. Orjalähettimen on vapautettava datalinja, jotta isäntä voi antaa STOP-ehdon tai toistaa START-ehdon.

Synkronointi

Synkronointi suoritetaan käyttämällä langallista JA-yhteyttä SCL-linjaan, mikä tarkoittaa, että isännällä ei ole yksinomaista hallintaa SCL-linjan siirtymiseen LOW-tilasta HIGH-tilaan. Siinä tapauksessa, että orja tarvitsee lisäaikaa käsitelläkseen vastaanotettua bittiä, se pystyy pitämään SCL-linjan matalana, kunnes se on valmis vastaanottamaan seuraavan bitin. Siten SCL-linja on LOW pisimmän LOW-kellojakson ajan.

Laitteet, joissa on lyhyempi LOW-jakso, siirtyvät lepotilaan jonkin aikaa, kunnes pitkä jakso päättyy. Kun kaikki käytössä olevat laitteet ovat ylittäneet LOW-kellojakson, SCL-linja muuttuu HIGH. Kaikkien laitteiden kellot alkavat käydä HIGH:lla. Ensimmäinen laite, joka vanhenee tämän ajanjakson, ohjaa SCL-linjan LOW jälleen. Siten SCL-kellolinjan LOW-jakso määräytyy kaikkien mukana olevien laitteiden pisimmän kellojakson mukaan ja HIGH-jakson määrittää laitteiden lyhin kellojakso.

Vastaanottimet voivat käyttää synkronointimekanismia keinona ohjata datan siirtoa tavu- ja bittitasolla.

Tavutasolla, jos laite voi vastaanottaa datatavuja suurella nopeudella, mutta kestää tietyn ajan tallentaa vastaanotettu tavu tai valmistautua vastaanottamaan seuraavaa, se voi pitää SCL-linjan LOW vastaanotettuaan ja kuitattuaan tavua, mikä asettaa lähettimen lepotilaan.

Bittitasolla laite, kuten mikro-ohjain, jossa ei ole sisäänrakennettuja I²C-laitteistopiirejä tai joissa on rajoitetut piirit, voi hidastaa kellotaajuutta pidentämällä sen LOW-jaksoa. Tällä tavalla minkä tahansa isäntälaitteen baudinopeus sovitetaan hitaiden laitteiden nopeuteen.

Osoittaminen I²C-väylässä

Jokainen väylään kytketty laite voidaan ohjelmoida yksilölliseen osoitteeseen. Viestin vastaanottajan valitsemiseksi isäntä käyttää ainutlaatuista osoitekomponenttia paketin muodossa. Samantyyppisiä laitteita käytettäessä IC:issä on usein ylimääräinen osoitevalitsin, joka voidaan toteuttaa sekä osoitevalitsimen digitaalilisätuloina että analogisena tulona. Tällöin tällaisten samantyyppisten laitteiden osoitteet erotetaan väylään kytkettyjen laitteiden osoiteavaruudessa.

Normaalitila käyttää 7-bittistä osoitetta.

Osoitemenettely I²C-väylällä on se, että ensimmäinen tavu START-signaalin jälkeen määrittää, mihin orjaan isäntä osoittaa vaihtojaksoa varten. Poikkeuksena on "Yleinen kutsu" -osoite, joka osoittaa kaikki väylän laitteet. Kun tätä osoitetta käytetään, kaikkien laitteiden pitäisi teoriassa lähettää kuittaussignaali. Laitteet, jotka pystyvät käsittelemään "yleistä puhelua", ovat kuitenkin käytännössä harvinaisia.

Kahden ensimmäisen tavun seitsemän ensimmäistä bittiä muodostavat orjaosoitteen. Kahdeksas vähiten merkitsevä bitti määrittää tiedonsiirron suunnan. "Nolla" tarkoittaa, että isäntä lähettää tiedot valitulle orjalle. "Yksi" tarkoittaa, että isäntä vastaanottaa tietoja orjalta.

Kun osoite on lähetetty, jokainen järjestelmän laite vertaa START-signaalin jälkeisiä seitsemän ensimmäistä bittiä osoitteeseen. Jos osuma löytyy, laite katsoo olevansa valittu joko vastaanotin-orjaksi tai lähetin-orjaksi, riippuen suuntabitistä.

Orjaosoite voi koostua kiinteästä osasta ja ohjelmoitavasta osasta. Usein tapahtuu, että järjestelmässä on useita samantyyppisiä laitteita (esimerkiksi muisti-IC:t tai LED-ilmaisinohjaimet ) , joten käyttämällä osoitteen ohjelmoitavaa osaa on mahdollista yhdistää suurin mahdollinen määrä tällaisia ​​laitteita. bussiin. Ohjelmoitavien bittien määrä osoitteessa riippuu vapaiden sirun nastojen määrästä. Joskus yhtä lähtöä käytetään ohjelmoitavan osoitealueen analogisella asetuksella [2] . Tässä tapauksessa IC:n tämän osoitenastan potentiaalista riippuen on mahdollista siirtää ajurin osoiteavaruutta siten, että samantyyppiset IC:t eivät ole ristiriidassa keskenään yhteisessä väylässä.

Kaikilla I²C-väylästandardin toimintaa tukevilla erikoispiirteillä on joukko kiinteitä osoitteita, joiden luettelon valmistaja ilmoittaa säätimien kuvauksissa.

Osoitteen bittiyhdistelmä 11110XX on varattu 10-bittiselle osoitteelle.

Väylämäärittelyn mukaisesti sekä yksinkertaiset vaihtoformaatit että yhdistetyt ovat sallittuja, kun START-tilasta STOP-tilaan isäntä ja orja voivat toimia sekä vastaanottimena että datalähettimenä. Yhdistettyjä formaatteja voidaan käyttää esimerkiksi peräkkäisen muistin hallintaan.

Ensimmäisen datatavun aikana voidaan lähettää muistiosoite, joka kirjoitetaan sisäiseen salpaan . Kun START-signaali ja orjalaitteen osoite on toistettu, tiedot lähetetään muistista. Laitekohtainen rakentaja tekee kaikki päätökset aiemmin avatun osoitteen automaattisesta lisäämisestä tai vähentämisestä. Siksi joka tapauksessa paras tapa välttää hallitsematon tilanne väylässä ennen uuden (tai aiemmin käyttämättömän) IC:n käyttöä on tutkia huolellisesti tuoteseloste tai viiteopas.

Joka tapauksessa väylämäärittelyn mukaan kaikkien kehitteillä olevien laitteiden on nollattava väylälogiikka KÄYNNISTYS- tai RE-START-signaalia vastaanottaessaan ja valmistauduttava vastaanottamaan osoite.

Kuitenkin suurimmat ongelmat I²C-väylän käytössä johtuvat juuri siitä tosiasiasta, että kehittäjät, jotka "alkavat" työskennellä I²C-väylän kanssa, eivät ota huomioon sitä tosiasiaa, että isännällä (usein mikroprosessorilla) ei ole yksinoikeuksia mihinkään bussilinjat..

Sovellus

I²C:tä käytetään laitteissa, jotka tarjoavat helpon kehityksen ja alhaiset valmistuskustannukset suhteellisen hyvällä nopeudella.

Luettelo mahdollisista sovelluksista:

Esimerkkejä järjestelmistä, joissa on I²C-väylä

Kuvassa:
(a) Hyvin integroitu TV

  1. mikro-ohjain
  2. PLL- syntetisaattori
  3. Flash-muisti
  4. Monijärjestelmän krominanssidekooderi
  5. Stereo audio dekooderi
  6. Kuvasignaalin tehostin
  7. Hi-Fi audioprosessori
  8. Analoginen videoprosessori
  9. Teksti -tv- dekooderi
  10. OSD signaalin IC

(b) DECT -radiopuhelimen tukiasema

  1. DTMF generaattori
  2. Puhelinlinjan käyttöliittymä
  3. ADPCM- koodekki
  4. Eräohjain
  5. mikro-ohjain

Edut

Edut suunnittelijoille

Haitat

Kehitys

Jokainen elektroninen järjestelmä sisältää 3 erityyppistä solmua:

Halvoissa laitteissa I²C emuloidaan usein Bit-banging-tekniikkaa käyttävissä ohjelmistoissa .

Käyttöjärjestelmän tuki

Johdannaiset

I²C:n pohjalta on kehitetty väyliä tietokoneiden oheislaitteiden yhdistämiseen ACCESS.bus , tiedonsiirtoväyliä tietokoneen ja DDC -näytön välillä, SMBus - järjestelmän toimintojen ohjausväyliä ja muita. Näissä teknologioissa on mahdollista käyttää erilaisia ​​jännitteitä, valuuttakursseja ja erillisiä keskeytyslinjoja .

Intelin vuonna 1995 ehdottama SMBus on I²C:n osajoukko, joka määrittelee tiukemman käytön. Yksi SMBus:n tavoitteista on parantaa luotettavuutta ja yhteentoimivuutta. Vastaavasti nykyaikaiset I²C-järjestelmät sisältävät joitain SMBus-käytäntöjä ja -sääntöjä, jotka joskus tukevat sekä I²C:tä että SMBus:ta ja vaativat minimaalisen uudelleenmäärityksen joko komennon tai nastan avulla.

IPMB -väylää , joka perustuu kahden I²C:n käyttöön redundanssina ja on IPMI -rajapinnan perusta , käytetään erittäin luotettavissa AdvancedTCA- ja MicroTCA -standardien järjestelmissä .

TWI (Two Wire Interface) tai TWSI (Two Wire Serial Interface) on pohjimmiltaan sama I²C-väylä, mutta käyttää eri nimeä lisensointisyistä (I²C-patentit on jo peruutettu, 1.10.2006, I²C-protokollan käytön rojaltit peruutettu. Vähennykset kuitenkin säilytetään I²C-väylän eksklusiivisen orja- osoitteen osoittamiseksi.)

I²C-yhteensopiva protokolla käyttää OmniVisionin Serial Camera Control Bus ( SCCB ) -kameraväylää.

Katso myös

Muistiinpanot

  1. I²C-väylän erittely ja käyttöohje. Rev. 6.–4. huhtikuuta 2014 Arkistoitu 11. toukokuuta 2013 Wayback Machine  NXP Semiconductors NV :ssä
  2. kuinka se on toteutettu esimerkiksi SAA1064 IC:ssä

Linkit