I²C: erinevus redaktsioonide vahel

Eemaldatud sisu Lisatud sisu
PResümee puudub
P teineteise > üksteise (kui osalisi on üle kahe)
1. rida:
{{keeletoimeta}}
'''I²C''' ("i-ruut-c" või "i-kaks-c" millele üldiselt viidatakse kui "kahejuhtme liideselekahejuhtmeliidesele") on mitme võimaliku ülemaga jadasiin, mis leiutati [[Philips|Philipsi]] poolt ning mida kasutatakse madalaväikese kiirusega [[perifeeria]] seadmete ühendamisel [[emaplaat|emaplaatidegaemaplaatide]], [[manussüsteem|manussüsteemidegamanussüsteemide]], mobiiltelefonidegamobiiltelefonide või muude seadmetega. Alates 2006. aastast ei ole vaja I²C protokolli kasutamiseks litsentsi osta, kuid omandamaks alluva aadressi, peab maksma tasu [[NXP]]-le (varem tuntud kui Philipsi pooljuhtelektroonika divisjon).<ref>[http://www.nxp.com/products/interface_control/i2c/licensing/ I²C Litsenseerimise informatsioon]</ref>
 
== Disain ==
10. rida:
I²C näidisdisainil on 7- või 10-bitine (olenevalt kasutatavast seadmest) aadressiruum. Kõige tavalisem kiirus, millega seda siini kasutatakse, on 100 kbit/s standardrežiimis ja 10 kbit/s madala kiirusega režiimis, kuigi on lubatud ka meelevaldselt madalad kiirused. Hiljutised I²C siini redigeerimised on muutnud võimalikuks suurema hulga sõlmede kasutamist ning võimaldanud suuremate kiiruste kasutamist (400 kbit/s kiir-töörežiim, 1 Mbit/s Kiir töörežiim pluss-is ja 3,4 Mbit/s kiireimas töörežiimis).
 
Tuleb silmas pidada, et andmevahetuskiirused, mida eespool mainiti, on infovahetus ülem- ja alamseadmete vahel ning ilma taktivenituseta või muude riistvara kulutusteta. Protokolli kulutuste alla kuuluvad alama aadress ja mõni kord ka [[register|registri]] aadress alam-seadmes, samamoodi ka baidi [[ACK/NACK]] bitid. Sellest tulenevalt on kasutaja kasuliku andmemahu kiirus väiksem kui seadmete vahel toimuv suhtluskiirus. Näiteks, kui iga suhtlus alamseadmega lubaks saata vaid ühte baiti infot saaksime kasuliku infovahetuskiiruse vaid poole seadmete vahelisest suhtluskiirusest.
 
Maksimaalne sõlmede hulk on piiratud aadressiruumi ning ka maksimaalse siini mahtuvuse poolt (400 pF), mis piirab praktiliselt kasutatava siinipikkuse paari meetri peale.
20. rida:
*Alamsõlm – sõlm, mis võtab vastu takti ja käitub vastavalt aadressidele.
 
See siin võimaldab mitme ülemsõlme olemasolekutolemasolu. Lisaks võib ülem- ja alam-rolle andmepakettide vahel muuta (Pealepärast seda, kui STOP on saadetud).
Igal siini seadmel on olemas neli võimalikku töörežiimi, kuigi suurem osa seadmeidseadmeist kasutavadkasutab vaid ühte rolli ja selle kahte töörežiimi:
 
* Ülem saatmine – ülemsõlm saadab infot alamale
28. rida:
* Alam vastuvõtmine – alamsõlm võtab ülemsõlmelt infot vastu
 
Ülemseade on algselt ülem saatmisrežiimis saates stardi biti ning sellele järgnevalt seitsme biti pikkuse aadressi alamseadmest millega ta soovib suhelda. Seejärel järgneb üksik bitbitt, mis annab teada, kas ülemseade soovib alamseadmele kirjutada(0) või sellelt lugeda(1).
 
Kui vastava aadressiga alamseadeldis on siinil olemas, siis ta vastab ACK bitiga (active low for acknowledged ehk aktiivne madal tunnistamisest) selle aadressi kohta. Seejärel jätkab ülemseade kas saatmis- või vastuvõtmisrežiimis (olenevalt varem saadetud lugemis/kirjutamis bitist) ning seejärel jätkab alam ülemale vastavas režiimis.
38. rida:
Kui ülem soovib baiti lugeda, siis saadab alam seda korduvalt ning ülem vastab ACK bitiga peale igat baiti välja arvatud viimase korral.
 
Sellele järgnevaltSeejärel lõpetab ülemseadeldis ülekande stop bitiga või võib ka saata uue START biti, kui ta soovib siini endale hoida ning uut ülekannet alustada.
 
===Suhtlusprotokoll===
89. rida:
=== Läbirääkimised SDA kasutamisega ===
 
Iga ülemseadeldis jälgib siini start ja stop bitte ega alusta kunagi oma andmevahetust seni, kuni teine ülemseadeldis siini töös hoiab. On aga võimalus, et kaks ülemseadeldist alustavad ülekannet samal ajal. Sel juhul toimuvad läbirääkimised. Alamseadmete infovahetust saab ka läbi rääkida juhul, kui ülemseadeldis adresseerib mitut alamat korraga, kuid see pole kuigi tavaline. Erinevalt näiteks [[ethernet|Ethernet-iEtherneti]] protokollile mis kasutab juhusliku taganemise viivitust enne uuesti proovimist. I²C-l on deterministlik läbirääkimiste meetod. Iga saatja kontrollib infoliini (SDA) kõrgust ning võrdleb seda tasemetega mida ta ootab. Kui need ei kehti on saatja oma õigused kaotanud ning lõpetab suhtluse.
 
Kui üks saatjatest seab SDA liini ühe peale (ehk ei tõmba seda madalaks ja ning teine saatja seab selle nulli peale (ehk tõmbab madalaks) on tulemuseks olukord kus liin on madal. Esimene saatja näeb, et liin on teistsugune kui ta ootaks ning seega järeldab, et teine sõlm on töös. Esimene sõlm, mis sellist erinevust märkab kaotab läbirääkimised ehk lõpetab SDA siini juhtimise. Kui seda tegev on ülemseadeldis siis ka tema lõpetab SCL liini juhtimise ning ootab stoppi. See järel võib ülemseade uuesti proovida kogu sõnumi saatmist. Samal ajal teine sõlm ei ole SDA liinil eeldatud ja päris tasemete vahel mingit erinevust märganud seega jätkab ülekannet.
 
Kui kaks ülemseadeldist saadavad sõnumit kahele erinevale alamale, siis see, kelle alama aadress on madalam saab alati aadressi tasemel õiguse. Kuna kaks ülemseadeldist võivad sõnumi saata ka samadele alam-aadressidele ning üks aadress vihjab vahepeal mitmele alamale peab läbirääkimisvõimalus alles jääma ka info ülekandmise ajal.
 
Iseenesest toimub läbirääkimine üpris harva, kuid on tarvis korralikuks mitme ülemaga suhtluseks. Samamoodi nagu taktivenitamisega, ei toeta seda kõik seadmeid. SeadmedSeadmeid, mis toetavad mitme ülemseadme suhtlust, omavadnimetatakse nimetustmitme ülemseadme toega ("Multimulti-master") e mitme ülemseadme toegaseadmeteks.
 
SelliselSel üliharuldasel juhul, kui kaks ülemseadet saadavad samal ajal identse sõnumi, tunnistatakse kommunikatsioon õnnestunuks, kuid alamseade saab kätte vaid ühe sõnumi. Alamseadmed mis suudavad suhelda mitme ülemaga omavad see tõttu idempotentseid lisakäske.
 
=== Puhvedamine ja multipleksimine ===
 
Kui ühe siini küljes on palju I²C seadmeid, võib tekkida vajadus lisada puhvreid või multipleksereid, et suuri siini osasid väiksemateks segmentideks jagada. See võib olla vajalik nii mahtuvuse vähendamiseks kui ka mitme sama aadressiga seadme lisamiseks siinile. On olemas palju erinevaid [[mux|multipleksereid]] ja [[bufferPuhvermälu|buffreidpuhvreid]], kuid need kõik peavad arvestama fakti, et I²C siin on kahesuunaline. Multipleksereid võib lisada ka [[analoogseade|analooglülititega]], mille abil saab ühe osa teisega siduda. Analooglülitid säilitavad siini kahesuunalisuse, kuid ei isoleeri osade mahtuvust teineteisest ega paku ka puhvri võimalusi.
 
Kahe suunalise suhtluse liinid nagu I²C vajavad erilisi puhvreid, et takistada "[[lach-up|latch-up-i]]". Selleks on mitmeid võimalusi: I²C on avatud kollektoriga seega puhver peab madala poole madalaks tõmbama ka siis, kui see on teisel pool madal. Üks meetod "latch-up-i" ära hoidmiseks on valida puhver, mille sisend- ja väljund levelidväljundtasemed on üles ehitatud selliseltnii, et väljundi tase oleks driveril kõrgem kui sisendi lävi. See takistab puhvril ise enda väljundi muutuse peale väljundi muutuse. Näiteks võib puhvri sisendi lävi olla 0,4 V, et madalat tuvastada, kuid väljundi tase on 0,5 V. Sellise meetodi kasutamine nõuab seda, et kõik teised seadmed teisel pool puhvrit oleks sobivad väljundtasemega. Lisaks tähendab eespool nimetatu, et mitut puhvrit ei saa teineteisele järjestikku üksteise otsa panna.
 
Teise võimalusena on olemas puhvrid, mis töötavad kui vooluvõimendid või peavad meeles oma eelmise asendi, et "latch-up-i" ära hoida.
129. rida:
== Välislingid ==
;Ametlikud spetsifikatsioonid
* [http://www.nxp.com/documents/user_manual/UM10204.pdf ametlik I2C Spetsifikatsioonspetsifikatsioon], NXP
* [http://www.nxp.com/acrobat_download2/selectionguides/SELGUIDE.PDF Määratud I2C aadressiteaadresside nimekiri], NXP
;Muud allikad
* [http://www.i2c-bus.org Detailne sissejuhatus, Primer]
* [http://www.totalphase.com/support/kb/10037/ I²C Tausttaust]
* [http://www.interfacebus.com/Design_Connector_I2C.html I²C Siinsiin]
* [http://www.linuxjournal.com/article/1342 I²C siini kasutamine Linuxiga]
* [http://www.maxim-ic.com/appnotes.cfm/an_pk/4267/CMP/ELK10 I²C siini kasutusmeetodid/riistvara]
* [http://www.epanorama.net/links/serialbus.html Jadasiini informatsiooni lehekülginfo]
* [http://www.esacademy.com/faq/i2c/ I²C Siinisiini tehniline ülevaade ja KKK]
* [http://www.dnatechindia.com/Tutorial/8051-Tutorial/Introduction-to-I2C-Protocol.html I²C Tutvustustutvustus]
* [http://focus.ti.com/logic/docs/littlelogicI2C.tsp?sectionId=460&DCMP=I2CLOGIC+Other&HQS=Other+OT+i2c I²C mikrokiibid Texas Instruments-iltInstrumentsilt]
* [http://www.i2cbus.com/ I²C Siinisiini tutvustus]
* [http://www.byteparadigm.com/kb/article/AA-00255/22/Introduction-to-SPI-and-IC-protocols.html Sissejuhatus I2C ja SPI protokollidesse]
* [http://www.prodigytest.com/I2C_software.htm I2C Protokolliprotokolli dekodeerimise tarkvara]
* [http://tronixstuff.wordpress.com/2010/10/20/tutorial-arduino-and-the-i2c-bus/ Algaja sissejuhatus kasutamaks I²C seadmeid arduinoga, sisaldab ka testitud ja töötavaid näiteid ]
* [http://www.dsscircuits.com/articles/effects-of-varying-i2c-pull-up-resistors.html Muutuvate pull-up takistite mõju I²C siinile.]
 
==Viited==