I2C siin — määramine, seade, andmeedastus, adresseerimine

Elektroonilise vooluringi loomisel seisavad paljud arendajad silmitsi vajadusega kasutada selle üksikute plokkide sobitamiseks, proovivõtmiseks ja adresseerimiseks suurt hulka vahepealseid kiipe. Lisakiipide arvu minimeerimiseks pakkus Philips juba 1980ndatel välja kahejuhtmelise kahesuunalise I2C jadaliidese, mis on loodud spetsiaalselt mitme kiibi haldamiseks ühes seadmes.

I2C siins – määramine, seade, andmeedastus, adresseerimine

Ainuüksi Philips toodab täna enam kui sada I2C-ühilduvat seadet elektroonikaseadmetele, millel on väga erinevaid eesmärke: mälu, videoprotsessorsüsteemid, analoog-digitaal- ja digitaal-analoogmuundurid, kuvaridraiverid jne.

I2C buss

I2C siin on jadaandmevahetusprotokolli modifikatsioon, mis on võimeline edastama 8-bitise jadaandmeid tavalises "kiire" režiimis kiirusega 100–400 kbps. Andmevahetusprotsess on siin rakendatud ainult kahel juhtmel (ilma ühist traati arvestamata): SDA liin andmete jaoks ja SCL liin sünkroonimiseks.

Siin muutub kahesuunaliseks tänu sellele, et siiniga ühendatud seadmete väljundite kaskaadidel on avatud kollektorid või kanalid, mis kordavad JA juhtmestikku. Selle tulemusena minimeerib siin kiipidevaheliste ühenduste arvu, jättes plaadile vähem vajalikke kontakte ja jälgi. Tänu sellele osutub plaat ise lihtsamaks, kompaktsemaks ja tootmises tehnoloogiliselt arenenumaks.

See protokoll võimaldab teil keelata aadresside dekoodrid ja muu välise läbirääkimisloogika. I2C siinil samaaegselt töötavate kiipide arvu piirab selle võimsus - maksimaalselt 400 pF.

I2C protokoll

I2C-ga ühilduvatel IC-del on riistvaraline mürasummutusalgoritm, mis tagab andmete terviklikkuse isegi tugevate häirete korral. Sellistel seadmetel on liides, mis võimaldab mikroskeemidel omavahel suhelda ka siis, kui nende toitepinged on erinevad. Alloleval joonisel saate tutvuda mitme mikrolülituse ühendamise põhimõttega ühise siini kaudu.

Igal siiniga ühendatud seadmel on oma kordumatu aadress, selle määrab ja vastavalt seadme otstarbele võib see töötada vastuvõtja või saatjana. Andmete edastamisel võivad need seadmed olla ülem (master) või alam (alluv). Ülemseade on seade, mis käivitab andmeedastuse ja genereerib SCL-liinil kellasignaale. Alamseade on ülemseadme suhtes sihtseade.

Seadme ühendusskeem

Igal tööhetkel I2C siinil saab ülemseadmena toimida ainult üks seade; see genereerib signaali SCL liinil.Ülemseade võib olla nii ülemvastuvõtja kui ka juhtsaatja.

Põhimõtteliselt lubab siin mitu erinevat ülemseadet, kuid seab piirangud juhtsignaalide moodustamise ja siini oleku jälgimise omadustele; see tähendab, et mitu ülemseadet saab korraga edastama hakata, kuid sedalaadi konfliktid on välistatud tänu arbitraažile ehk sellele, kuidas ülem käitub, kui tuvastab, et siin on hõivatud teine ​​ülem.

Seadmepaari sünkroonimise tagab asjaolu, et kõik seadmed on ühendatud siiniga, moodustades "JA" juhtmestiku. Esialgu on SDA ja SCL signaalid kõrged.

START ja STOP

Vahetus algab sellega, et ülem genereerib oleku «START»: SDA liinil läheb signaal kõrgest madalasse olekusse, samas kui SCL liinil on stabiilne kõrge tase. Kõik siiniga ühendatud seadmed tajuvad seda olukorda kui käsku vahetuse käivitamiseks.


Start ja stop – sünkroonimissignaal

Iga ülem genereerib siini kaudu andmeid edastades SCL liinil individuaalse taktsignaali.

Vahetus lõpeb STOP oleku moodustamisega masteri poolt: SDA liinil muutub signaal madalast kõrgeks, samas kui SCL liinil on stabiilne kõrge tase.

Juht toimib alati signaalide START ja STOP allikana. Niipea kui signaal «START» on fikseeritud, tähendab see, et liin on hõivatud. Liin on vaba, kui tuvastatakse STOP signaal.

Andmete ülekanne

Vahetult pärast START oleku deklareerimist lülitab ülemseade SCL rea madalale ja saadab SDA reale esimese sõnumibaidi kõige olulisema biti. Sõnumi baitide arv ei ole piiratud.SDA liini muudatused on lubatud ainult siis, kui SCL liini signaalitase on madal. Andmed kehtivad ja neid ei tohiks muuta ainult siis, kui sünkroonimisimpulss on kõrge.

Kinnitamine, et ülem-saatja bait on alam-vastuvõtja poolt vastu võetud, tehakse SDA-liinile spetsiaalse kinnitusbiti seadistamisega pärast kaheksanda andmebiti vastuvõtmist.

KINNITUS

Seega 8 biti andmete saatmine saatjalt vastuvõtjale lõpeb lisaimpulsiga SCL liinil, kui vastuvõttev seade läheb SDA liinil madalaks, mis näitab, et see on kogu baidi vastu võtnud.

Kinnituse sünkroonimise impulss

Kinnitamine on andmeedastusprotsessi lahutamatu osa. Juht genereerib sünkroonimisimpulsi. Saatja saadab madala oleku SDA-le, kui kinnituskell on aktiivne. Kui sünkroonimisimpulss on kõrge, peab vastuvõtja hoidma SDA madalana.

Kui sihtkoha alamseade ei kinnita oma aadressi, näiteks seetõttu, et see on hetkel hõivatud, tuleb andmeliini kõrgel hoida. Seejärel võib kapten anda STOP-signaali saatmise katkestamiseks.

Kui vastuvõttu teostab ülemvastuvõtja, siis on ta kohustatud sellest teavitama alamsaatjat peale edastuse lõpetamist – mitte viimase baiti kinnitamisega. Alamsaatja vabastab andmeliini, et ülemseade saaks anda STOP-signaali või korduva START-signaali.

Seadmete sünkroniseerimise tagab asjaolu, et ühendused SCL liiniga tehakse "AND" põhimõttel.

Masteril ei ole ainuõigust juhtida SCL-liini üleminekut madalalt kõrgele.Kui alam vajab vastuvõetud biti töötlemiseks rohkem aega, võib ta iseseisvalt hoida SCL-i madalal tasemel, kuni on valmis järgmist andmebitti vastu võtma. SCL-liin on sellises olukorras madal pikima madala taseme sünkroonimisimpulsi kestel.

Madalaima püsivalt madalseisuga seadmed jäävad kuni pika perioodi lõpuni jõude. Kui kõik seadmed on madala sünkroonimisperioodi lõpetanud, läheb SCL kõrgeks.

Kõik seadmed alustavad kõrget kellaaega ja esimene seade, mis selle perioodi lõpetab, seab esimesena SCL-liini madalale. Selle tulemusel määrab SCL madala oleku kestuse ühe seadme sünkroniseerimisimpulsi pikim madal olek ja ülemise oleku kestuse määrab ühe seadme lühim sünkroniseerimisperiood. seadmeid.

Vastuvõtjad saavad sünkroniseerimissignaale kasutada andmeedastuse juhtimise vahendina bittide ja baitide tasemel.

Kui seade on võimeline vastu võtma baite suure kiirusega, kuid vastuvõetud baidi salvestamiseks või järgmise baidi vastuvõtmiseks valmistumiseks kulub teatud aeg, võib see pärast baidi vastuvõtmist ja kinnitamist jätkata SCL-i madalana hoidmist, sundides saatja ooterežiimi.

Mikrokontroller, millel pole sisseehitatud riistvaralülitusi, näiteks bititasandil, võib aeglustada taktsagedust, suurendades oma madala oleku kestust. Selle tulemusena määrab põhiseadme boodikiiruse aeglasem seade.


I2C buss

Adresseerimine

Igal I2C siiniga ühendatud seadmel on kordumatu programmiaadress, millele ülem adresseerib, saates konkreetse käsu. Sama tüüpi mikroskeeme iseloomustab aadressivalija, mida rakendatakse kas selektori digitaalsisenditena või analoogkujul. Aadressid jaotatakse siiniga ühendatud seadmete aadressiruumi.

Tavarežiim eeldab seitsmebitist adresseerimist. Adresseerimine toimib järgmiselt: pärast käsku «START» saadab ülemseade esimese baidi, mis määrab, millist alamseadet on vaja ülemseadmega suhtlemiseks. Samuti on ühine kõneaadress, mis määratleb kõik siinis olevad seadmed, kõik seadmed (teoreetiliselt) vastavad sellele kinnitusega, kuid praktikas juhtub seda harva.

Seega on esimese baidi esimesed seitse bitti alam-aadress. Kõige vähem oluline bitt, kaheksas, näitab andmete saatmise suunda. Kui on «0», siis kirjutatakse info masterilt sellele orjale. Kui "1", loeb ülem teavet sellelt alluvalt.

Pärast seda, kui ülem on aadressbaidi saatmise lõpetanud, võrdleb iga alam oma aadressi sellega. Igaüks, kellel on sama aadress, on alam ja määratletakse kui alamsaatja või alam-vastuvõtja, olenevalt aadressibaidi vähima tähtsusega biti väärtusest.

Alam-aadress võib sisaldada fikseeritud ja programmeeritavaid osi. Üsna sageli töötab ühes süsteemis suur hulk sama tüüpi seadmeid, siis aadressi programmeeritav osa võimaldab siinis kasutada maksimaalselt sama tüüpi seadmeid. Kui palju bitte aadressibaidis on programmeeritav, sõltub kiibil olevate vabade kontaktide arvust.

Mõnikord piisab programmeeritava aadressivahemiku analoogseadistusega tihvtist, näiteks SAA1064 - LED-indikaatori draiver, millel on täpselt selline teostus. Konkreetse viigu potentsiaal määrab kiibi aadressiruumi nihke, nii et sama tüüpi kiibid ei konfliktiks samal siinil töötades. Kõik I2C siini toetavad kiibid sisaldavad aadresside komplekti, mille tootja määrab dokumentatsioonis.

Kombinatsioon «11110XX» on reserveeritud 10-bitiseks adresseerimiseks. Kui kujutame ette andmete vahetamist käsust «START» käsule «STOP», näeb see välja järgmine:


Adresseerimine

Siin on lubatud lihtsad ja kombineeritud andmevahetuse vormingud. Kombineeritud vorming tähendab, et "START" ja "STOP" vahel võivad ülem- ja alamseade toimida vastuvõtjate ja saatjatena, see on kasulik näiteks jadamälu haldamisel.

Laske andmete esimesel baidil edastada mäluaadress. Seejärel, korrates käsku «START» ja lugedes alluvat aadressi, hakkavad mäluandmed tööle. Otsused eelnevalt kasutatud aadressi automaatse suurendamise või vähendamise kohta teeb seadme arendaja pärast kiibi dokumentatsiooniga tutvumist. Nii või teisiti peavad kõik seadmed pärast START-käsu saamist taastama oma loogika ja valmistuma selleks, et aadress saab nüüd nime.

Soovitame lugeda:

Miks on elektrivool ohtlik?