I2C buszprotokoll bemutató, Interfész alkalmazásokkal

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Manapság a protokollok alapvető szerepet játszanak a beágyazott rendszer kialakítása . A protokollok megismerése nélkül, ha bővíteni szeretné a mikrovezérlő periférikus jellemzőit, a bonyolultság és az energiafogyasztás megnő. Különböző típusú buszprotokollok érhetők el, például USART, SPI, CAN, I2C busz protokoll stb., amelyeket két rendszer közötti adatátvitelre használnak.

I2C protokoll

Mi az I2C busz?




Az információk két vagy több mint két eszköz közötti továbbításához és fogadásához buszrendszerként hívott kommunikációs útvonalra van szükség. Az I2C busz kétirányú kétvezetékes soros busz, amelyet az adatok integrált áramkörök közötti továbbítására használnak. Az I2C jelentése „Inter Integrated Circuit”. Először a Philips félvezetői vezették be 1982-ben. Az I2C busz három adatátviteli sebességből áll, mint a normál, a gyors és a nagy sebességű üzemmód. Az I2C busz támogatja a 7 és 10 bites címtér eszközt, és működése alacsony feszültséggel változik.

I2c buszprotokoll

I2c buszprotokoll



I2C jelvezetékek

I2C jelvezetékek

I2C jelvezetékek

Az I2C egy soros buszprotokoll, amely két jelvezetékből áll, például SCL és SDL vonalakból, amelyeket az eszközökkel való kommunikációra használnak. Az SCL jelentése „soros óra vonal”, és ezt a jelet mindig a „master eszköz” vezérli. Az SDL a „soros adatsort” jelenti, és ezt a jelet vagy a master, vagy az I2C perifériák vezérlik. Mind az SCL, mind az SDL vonalak nyitott lefolyású állapotban vannak, amikor nincs transzfer az I2C perifériák között.

Nyitott lefolyású kimenetek


A nyitott lefolyó a koncepció a FET tranzisztorra ahol a tranzisztor leeresztő kapcsa nyitott állapotú. A master eszköz SDL és SCL csapjai úgy vannak kialakítva, hogy a tranzisztorok nyitott állapotban vannak, így az adatátvitel csak akkor lehetséges, ha ezeket a tranzisztorokat vezetik. Ezért ezek a vezetékek vagy leeresztő kapcsok alapos felhúzási ellenállásokkal vannak összekötve a VCC-vel a vezetési mód érdekében.

I2C interfészek

Sok a rabszolga eszközök kapcsolódnak a mikrovezérlőhöz az I2C busz segítségével az I2C szintű váltó IC-n keresztül az információk átadásához közöttük. Az I2C protokoll legfeljebb 128 olyan eszköz csatlakoztatására használt, amelyek mind a master egység SCL és SDL vonalaival, mind a slave eszközökkel kommunikálnak. Támogatja a Multimaster kommunikációt, ami azt jelenti, hogy két mastert használnak a külső eszközök kommunikációjához.

I2C adatátviteli árak

Az I2C protokoll három módot működtet, például: gyors üzemmódot, nagysebességű módot és normál módot, ahol a normál módú adatsebesség 0 Hz és 100 Hz között mozog, és a gyors üzemmód adatátviteli sebessége 0 Hz és 400 KHz, valamint a nagy sebességű mód 10 KHz-től 100KHz-ig. A 9 bites adatokat minden egyes adatátvitelnél elküldik, ahol az MSB adó 8 bitet küld az LSB-nek, a 9. bit pedig a vevő által küldött nyugtázó bit.

I2C adatátviteli árak

I2C adatátviteli árak

I2C kommunikáció

Az I2C busz protokollt leggyakrabban a master és a slave kommunikációban használják, ahol a masteret „mikrokontrollernek” hívják, a slave-et pedig más eszközöknek, például ADC, EEPROM, DAC és hasonló eszközöknek a beágyazott rendszerben. A slave eszközök száma az I2C busz segítségével kapcsolódik a master eszközhöz, ahol minden slave egyedi címből áll a kommunikációhoz. A következő lépésekkel kommunikálhatja a master eszközt a slave-lel:

1. lépés: Először a master eszköz kiad egy kezdési feltételt, hogy tájékoztassa az összes slave eszközt, hogy azok hallgassák a soros adatsort.

2. lépés: A master eszköz elküldi a cél slave eszköz címét, amelyet összehasonlítanak az összes slave eszköz címével, az SCL és SDL vonalakhoz csatlakozva. Ha bárki cím egyezik, akkor az adott eszköz kiválasztásra kerül, és a többi eszköz leválasztásra kerül az SCL és SDL vonalakról.

3. lépés: A mestertől kapott egyeztetett címmel rendelkező szolga eszköz nyugtázással válaszol a mesterre, ezután kommunikáció jön létre mind a master, mind a slave eszközök között az adat buszon.

4. lépés: A master és a slave egyaránt fogadja és továbbítja az adatokat, attól függően, hogy a kommunikáció olvasható vagy írt-e.

5. lépés: Ezután a master 8 bites adatot továbbíthat a vevőnek, amely 1 bites nyugtázással válaszol.

I2C bemutató

Az információ lépésenkénti továbbítását és fogadását az óraimpulzusok tekintetében I2C protokollnak nevezzük. Ez egy rendszerközi és rövid távolságú protokoll, ami azt jelenti, hogy az áramköri kártyán belül használják a master és a slave eszközök kommunikációjára.

I2C protokoll alapjai

Általánosságban az I2C buszrendszer két vezetékből áll, amelyek könnyen használhatók a bemeneti és kimeneti perifériák, például az ADC, az EEROM és az RTC bővítésére, és egyéb alapkomponensek olyan rendszert készíteni, amelynek összetettsége nagyon alacsony.

Példa: Mivel a 8051 mikrovezérlőnek nincs beépített ADC-je - így ha bármilyen analóg érzékelőt össze akarunk kapcsolni a 8051 mikrovezérlővel - ADC-eszközöket kell használnunk, például ADC0804-1 csatornás ADC, ADC0808-8 csatornás ADC-t stb. Ezeknek az ADC-knek a használatával, összekapcsolhatjuk az analóg érzékelőket a mikrovezérlővel.

Anélkül, hogy a protokollt bármely mikrokontroller vagy processzor I / O funkcióinak kibővítésére használnánk, 8255 ICit 8 tűs eszközhöz léphetünk. A A 8051 mikrokontroller egy 40 tűs mikrovezérlő a 8255 IC használatával kibővíthetjük a 3-I / O portokat, mindegyik portban 8 pólussal. Az összes eszköz, például az RTC, az ADC, az EEPROM, az időzítők stb. Használatával - a perifériás áramkör bővítéséhez - a komplexitás, a költség, az energiafogyasztás és a termékméret is megnő.

Ennek a problémának a leküzdése érdekében a protokollkoncepció képbe kerül a hardver komplexitásának és az energiafogyasztás csökkentésének érdekében. Ennek az I2C protokollnak a segítségével több funkciót bővíthetünk, például I / 0 perifériákat, ADC-ket, T / C-t és memóriaeszközöket 128 eszközig.
Az I2C protokollokban használt terminológia

Adó: Az eszközt, amely adatokat küld a buszra, adónak nevezzük.

Vevő: Az eszközt, amely adatokat fogad a buszról, vevőnek nevezzük.

Fő: Az eszközt, amely az átvitelt kezdeményezi az órajelek előállításához és az átadás befejezéséhez, mesternek nevezik.

Rabszolga: A mester által megszólított eszközt rabszolgának hívják.

Multimaster: Több master egyidejűleg megkísérelheti a busz vezérlését anélkül, hogy az üzenet megsérülne.

Döntőbíráskodás: Eljárás annak biztosítására, hogy ha egyidejűleg egynél több master próbálja irányítani a buszt - csak egy engedi meg, hogy a nyertes üzenet ne sérüljön meg.

Szinkronizálás: Két vagy több eszköz órajelének szinkronizálását szinkronizálásnak nevezzük.

I2C alapparancsok szekvencia

  1. Start Bit feltétel
  2. Stop Bit feltétel
  3. Elismerési feltétel
  4. Master to slave Írási művelet
  5. Olvassa el a Slave to Master műveletet

Start és Stop Bit feltétel

Amikor a master (mikrovezérlő) beszélni akar egy szolga eszközzel (például ADC), akkor megkezdi a kommunikációt azzal, hogy kiindulási feltételt ad ki az I2C buszon, majd kiad egy leállási feltételt. Az I2C start és stop logikai szinteket az ábra mutatja.

Az I2C indítási feltétel az SDA vonal magasról alacsonyra történő átmenetét definiálja, míg az SCL vonal magas. Az I2C leállási állapot akkor fordul elő, amikor az SDA vonal alacsonyról magasra vált, miközben az SCL vonal magas.

Az I2C master mindig generálja az S és P feltételeket. Amint az I2C master elindít egy START feltételt, az I2c buszt foglalt állapotúnak kell tekinteni.

Start és Stop Bit feltétel

Start és Stop Bit feltétel

Programozás:

Feltétel indítása:

sbit SDA = P1 ^ 7 // inicializálja a mikrokontroller SDA és SCL csapjait //
sbit SCL = P1 ^ 6
érvénytelen késleltetés (aláíratlan int)
void main ()
{
SDA = 1 // az adatok feldolgozása //
SCL = 1 // az óra magas //
késleltetés()
SDA = 0 // elküldte az adatokat //
késleltetés()
SCL = 0 // az órajel alacsony //
}
Üres késés (int p)
{
aláíratlan, szül
Mert (a = 0a<255a++) //delay function//
Mert (b = 0b}

STOP feltétel:

void main ()
{
SDA = 0 // Az adatok feldolgozásának leállítása //
SCL = 1 // az óra magas //
késleltetés()
SDA = 1 // Leállt //
késleltetés()
SCL = 0 // az órajel alacsony //
}
Üres késés (int p)
{
aláíratlan, szül
Mert (a = 0a<255a++) //delay function//
Mert (b = 0b}

Nyugtázás (ACK) és Nincs nyugtázás (NCK) feltétel

Az I2C buszon keresztül továbbított minden byte után egy nyugtázási feltétel következik a vevőtől, ami azt jelenti, hogy miután a master alacsonyan húzza az SCL-t, hogy befejezze a 8-bites átvitelt, az SDA-t a vevő alacsonyra húzza a masterre. Ha azután, hogy a vevő adása nem húzza meg, az SDA LOW vonalat NCK feltételnek tekintjük.

Köszönetnyilvánítás (ACK)

Köszönetnyilvánítás (ACK)

Programozás

Elismerés
void main ()
{
SDA = 0 // Az SDA sor alacsonyra megy //
SCL = 1 // az óra magasról alacsonyra //
késés (100)
SCL = 0
}
Nincs nyugtázás:
void main ()
{
SDA = 1 // Az SDA sor magasra megy //
SCL = 1 // az óra magasról alacsonyra //
késés (100)
SCL = 0
}

A mester a rabszolgához művelet

Az I2C protokoll az adatokat csomagok vagy bájtok formájában továbbítja. Minden bájtot egy nyugtázó bit követ.

Adatátviteli formátum

Adatátviteli formátum

Adatátviteli formátum

Rajt: Elsõsorban az az adatátviteli sorrend, amelyet a mester indított el a startfeltételt generálva.

7 bites cím: Ezt követően a master két 8 bites formátumban küldi el a szolga címet egyetlen 16 bites cím helyett.

R / W: Ha az olvasási és írási bit magas, akkor az írási művelet végrehajtásra kerül.

JAJ: Ha az írási műveletet a slave eszközben hajtják végre, akkor a vevő elküldi az 1 bites ACK-t a mikrovezérlőnek.

Álljon meg: Az író művelet befejezése után a slave eszközben a mikrovezérlő elküldi a leállítási feltételt a slave eszköznek.

Programozás

Írás művelet

voidwrite (aláíratlan karakter d)
{
Aláíratlan char k, j = 0x80
Mert (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
késés (4)
SCL = 0
}
SDA = 1
SCL = 1
késés (2)
c = SDA
késés (2)
SCL = 0
}

Master to Slave Read művelet

Az adatokat bitek vagy bájtok formájában olvassák vissza a slave eszközről - először olvassák el a legjelentősebb bitet, és utoljára olvassák el a legkevésbé jelentős bitet.

Az adatok olvasási formátuma

Data Read Format

Data Read Format

Rajt: Elsõsorban az adatátviteli szekvenciát az indítja, hogy a mester létrehozza a kezdési feltételt.

7 bites cím: Ezt követően a master két 8 bites formátumban küldi el a szolga címet egyetlen 16 bites cím helyett.

R / W: Ha az olvasási és írási bit kevés, akkor az olvasási műveletet hajtjuk végre.

JAJ: Ha az írási műveletet a slave eszközben hajtják végre, akkor a vevő elküldi az 1 bites ACK-t a mikrovezérlőnek.

Álljon meg: Az író művelet befejezése után a slave eszközben a mikrovezérlő elküldi a leállítási feltételt a slave eszköznek.

Programozás

Érvénytelen olvasás ()
{
Aláíratlan karakter j, z = 0x00, q = 0x80
SDA = 1
(j = 0j<8j++)
{
SCL = 1
késés (100)
zászló = SDA
if (zászló == 1)
q)
q = q >> 1
késés (100)
SCL = 0

Gyakorlati példa az ADC és a 8051 mikrokontroller összekapcsolására

Az ADC egy olyan eszköz, amelyet az analóg adatok digitális és digitális formátumúvá alakítására alakítanak át. A 8051 mikrovezérlőnek nincs beépített ADC-je, ezért az I2C protokollon keresztül külsőleg kell hozzáadnunk. A PCF8591 az I2C alapú analóg digitális és digitális-analóg átalakító. Ez az eszköz maximum 4 analóg bemeneti csatornát képes támogatni, 2,5-6 V feszültség mellett.

Analóg kimenetek

Az analóg kimenetek feszültségek formájában érkeznek. Például az 5v-os analóg érzékelő kimeneti logikája 0,01v-5v.
Az 5v maximális digitális értéke = 256.
A 2,5v értéke = 123 a maximális feszültségértéknek megfelelően.

Az analóg kimenet képlete:

A digitális kimenetek képlete:

Az ADC összekapcsolása a 8051 mikrokontrollerrel

Az ADC összekapcsolása a 8051 mikrokontrollerrel

A fenti ábra az I2C protokoll használatával történő adatátvitelt mutatja az ADC eszközről a 8051 mikrovezérlőre. Az SCL és az SDA ADC csapjai a mikrovezérlő 1.7 és 1.6 csatlakozóihoz vannak csatlakoztatva, hogy kommunikációt létesítsenek közöttük. Amikor az érzékelő analóg értékeket ad az ADC-nek, akkor átalakul digitálisokká és adatokat továbbít a mikrovezérlőhöz az I2C protokollon keresztül.

Ez az I2C buszprotokoll bemutatójáról szól a megfelelő programokkal. Reméljük, hogy a megadott tartalom gyakorlati koncepciót ad arról, hogy több eszközt összekapcsoljon az I2C kommunikációt használó mikrovezérlőkkel. Ha kétségei merülnek fel a protokoll interfész-eljárásában, az alábbi megjegyzéssel érhet el minket.