Výukový protokol sběrnice I2C, Rozhraní s aplikacemi

Vyzkoušejte Náš Nástroj Pro Odstranění Problémů





V dnešní době hrají protokoly zásadní roli v design vestavěného systému . Aniž byste šli na protokoly, pokud chcete rozšířit periferní funkce mikrokontroléru, složitost a spotřeba energie se zvýší. K dispozici jsou různé typy protokolů sběrnice, jako je USART, SPI, CAN, Protokol sběrnice I2C atd., které se používají k přenosu dat mezi dvěma systémy.

Protokol I2C

Co je I2C Bus?




Vysílání a příjem informací mezi dvěma nebo více než dvěma zařízeními vyžaduje komunikační cestu nazvanou jako systém sběrnice. Sběrnice I2C je obousměrná dvoudrátová sériová sběrnice, která se používá k přenosu dat mezi integrovanými obvody. I2C je zkratka pro „Inter Integrated Circuit“. Poprvé ho představili polovodiče společnosti Philips v roce 1982. Sběrnice I2C se skládá ze tří rychlostí přenosu dat, jako je standardní, rychlý režim a vysokorychlostní režim. Sběrnice I2C podporuje 7bitové a 10bitové zařízení adresového prostoru a její provoz se liší při nízkém napětí.

Protokol sběrnice I2c

Protokol sběrnice I2c



Signální linky I2C

Signální linky I2C

Signální linky I2C

I2C je protokol sériové sběrnice skládající se ze dvou signálních linek, jako jsou linky SCL a SDL, které se používají ke komunikaci se zařízeními. SCL znamená „sériová hodinová linka“ a tento signál je vždy řízen „hlavním zařízením“. SDL znamená ‚sériová datová linka 'a tento signál je řízen buď nadřízenou nebo I2C periferií. Obě tyto linky SCL a SDL jsou ve stavu open-drain, když nedochází k přenosu mezi periferními zařízeními I2C.

Open-Drain výstupy


Otevřený odtok je koncept pro FET tranzistor přičemž odtoková svorka tranzistoru je otevřená. Pin SDL a SCL hlavního zařízení jsou navrženy s tranzistory v otevřeném stavu, takže přenos dat je možný pouze tehdy, když jsou tyto tranzistory vedeny. Proto jsou tato vedení nebo odtokové svorky připojeny důkladné pull-up rezistory k VCC pro režim vedení.

Rozhraní I2C

Mnoho podřízená zařízení jsou propojena s mikrokontrolérem s pomocí sběrnice I2C přes I2C řadicí jednotku úrovně pro přenos informací mezi nimi. Protokol I2C slouží k připojení maximálně 128 zařízení, která jsou všechna připojena ke komunikaci s linkami SCL a SDL hlavní jednotky i podřízenými zařízeními. Podporuje komunikaci Multimaster, což znamená, že ke komunikaci s externími zařízeními se používají dva mastery.

Rychlost přenosu dat I2C

Protokol I2C pracuje se třemi režimy, jako jsou: rychlý režim, vysokorychlostní režim a standardní režim, kde se standardní datová rychlost dat pohybuje v rozmezí 0 Hz až 100 Hz a data rychlého režimu se mohou přenášet s rychlostí 0 Hz až 400 KHz a vysokorychlostní režim s 10 KHz až 100 KHz. 9bitová data se odesílají pro každý přenos, přičemž 8 bitů se vysílá vysílačem MSB do LSB a 9. bit je potvrzovacím bitem odeslaným přijímačem.

Rychlost přenosu dat I2C

Rychlost přenosu dat I2C

Komunikace I2C

Protokol sběrnice I2C se nejčastěji používá v komunikaci master a slave, kde se master nazývá „mikrokontrolér“ a slave se nazývá jiná zařízení, jako jsou ADC, EEPROM, DAC a podobná zařízení ve vestavěném systému. Počet podřízených zařízení je připojen k hlavnímu zařízení pomocí sběrnice I2C, přičemž každé podřízené zařízení obsahuje jedinečnou adresu, která jej komunikuje. Ke komunikaci nadřízeného zařízení s podřízeným se používají následující kroky:

Krok 1: Nejprve hlavní zařízení vydá podmínku spuštění, aby informovala všechna podřízená zařízení, aby naslouchala na sériové datové lince.

Krok 2: Hlavní zařízení odesílá adresu cílového podřízeného zařízení, která se porovnává s adresami všech podřízených zařízení připojených k linkám SCL a SDL. Pokud se kdokoli shoduje s adresou, je vybráno toto zařízení a zbývající všechna zařízení jsou odpojena od linek SCL a SDL.

Krok 3: Podřízené zařízení se shodnou adresou přijatou od nadřízeného odpovídá potvrzením nadřízenému, poté je navázána komunikace mezi nadřízeným i podřízeným zařízením na datové sběrnici.

Krok 4: Master i slave přijímají a vysílají data v závislosti na tom, zda je komunikace čtena nebo zapisována.

Krok 5: Poté může master vysílat 8bitová data do přijímače, který odpovídá 1bitovým potvrzením.

Výukový program I2C

Vysílání a přijímání informací krok za krokem sériově vzhledem k hodinovým impulzům se nazývá protokol I2C. Jedná se o protokol mezi systémy a na krátkou vzdálenost, což znamená, že se v desce s plošnými spoji používá ke komunikaci zařízení typu master a slave.

Základy protokolu I2C

Systém sběrnice I2C se obecně skládá ze dvou vodičů, které se snadno používají k rozšíření vstupních a výstupních periferních funkcí, jako jsou ADC, EEROM a RTC, a další základní komponenty vytvořit systém, jehož složitost je mnohem menší.

Příklad: Protože mikrokontrolér 8051 nemá žádný vestavěný ADC - takže pokud chceme propojit jakékoli analogové senzory s mikrokontrolérem 8051 - musíme použít zařízení ADC jako ADC0804-1 kanálový ADC, ADC0808-8 kanálový ADC atd. Použitím těchto ADC můžeme propojit analogové senzory s mikrokontrolérem.

Bez použití protokolu k rozšíření funkcí I / O jakéhokoli mikrokontroléru nebo procesoru můžeme přejít na 8pinové zařízení 8255 ICit. The Mikrokontrolér 8051 je 40kolíkový mikrokontrolér pomocí 8255 IC můžeme rozšířit 3-I / O porty o 8 pinů v každém portu. Použitím všech zařízení, jako jsou RTC, ADC, EEPROM, časovače atd. - pro rozšíření periferních obvodů - se také zvyšuje složitost, náklady, spotřeba energie a velikost produktu.

K překonání tohoto problému přichází koncept protokolu, který snižuje hardwarovou složitost a spotřebu energie. Pomocí tohoto protokolu I2C můžeme rozšířit více funkcí, jako jsou periferní zařízení I / 0, ADC, T / C a paměťová zařízení, až na 128 zařízení.
Terminologie používaná v protokolech I2C

Vysílač: Zařízení, které odesílá data na sběrnici, se nazývá vysílač.

Přijímač: Zařízení, které přijímá data ze sběrnice, se nazývá přijímač.

Mistr: Zařízení, které iniciuje přenosy za účelem generování hodinových signálů a ukončení přenosu, se nazývá hlavní.

Otrok: Zařízení adresované nadřízeným se nazývá slave.

Multimaster: Více než jeden master se může pokusit ovládat sběrnici současně, aniž by došlo k poškození zprávy, se nazývá Multimaster.

Arbitráž: Postup, který zajistí, že pokud se více než jeden master současně pokusí ovládat sběrnici - může to udělat pouze jeden, vítězná zpráva nebude poškozena.

Synchronizace: Postup synchronizace hodinových singlů dvou nebo více zařízení se nazývá synchronizace.

Sekvence základních příkazů I2C

  1. Podmínka spuštění bitu
  2. Stav Stop bit
  3. Podmínka potvrzení
  4. Operace zápisu Master to Slave
  5. Přečtěte si Operation Slave to Master

Podmínka spuštění a zastavení bitů

Když si hlavní (mikrokontrolér) přeje hovořit s podřízeným zařízením (například ADC), zahájí komunikaci vydáním spouštěcí podmínky na sběrnici I2C a poté vydá podmínku zastavení. Logické úrovně spuštění a zastavení I2C jsou zobrazeny na obrázku.

Startovací podmínka I2C je definována jako přechod vysoké až nízké linie SDA, zatímco linka SCL je vysoká. Stav zastavení I2C nastane, když se linka SDA přepne z nízké na vysokou, zatímco linka SCL je vysoká.

Master I2C generuje vždy podmínky S a P. Jakmile I2C master inicializuje podmínku START, je sběrnice I2c považována za zaneprázdněnou.

Podmínka spuštění a zastavení bitů

Podmínka spuštění a zastavení bitů

Programování:

START PODMÍNKY:

sbit SDA = P1 ^ 7 // inicializovat piny SDA a SCL mikrokontroléru //
sbit SCL = P1 ^ 6
neplatnost zpoždění (unsigned int)
void main ()
{
SDA = 1 // zpracování dat //
SCL = 1 // hodiny jsou vysoké //
zpoždění()
SDA = 0 // odeslala data //
zpoždění()
SCL = 0 // hodinový signál je slabý //
}
Prázdné zpoždění (int p)
{
unsignedinta, nar
Pro (a = 0a<255a++) //delay function//
Pro (b = 0b}

Stav STOP:

void main ()
{
SDA = 0 // Zastavit zpracování dat //
SCL = 1 // hodiny jsou vysoké //
zpoždění()
SDA = 1 // zastaveno //
zpoždění()
SCL = 0 // hodinový signál je slabý //
}
Prázdné zpoždění (int p)
{
unsignedinta, nar
Pro (a = 0a<255a++) //delay function//
Pro (b = 0b}

Podmínka potvrzení (ACK) a bez potvrzení (NCK)

Za každým bajtem přenášeným po sběrnici I2C následuje potvrzovací podmínka z přijímače, což znamená, že poté, co master stáhne SCL na minimum pro dokončení přenosu 8 bitů, SDA bude přijímačem vytáhnut na minimum. Pokud se po přenosu přijímače nevytáhne, považuje se linka SDA LOW za podmínku NCK.

Potvrzení (ACK)

Potvrzení (ACK)

Programování

Potvrzení
void main ()
{
SDA = 0 // SDA linka jde na nízkou //
SCL = 1 // hodiny jsou vysoké až nízké //
zpoždění (100)
SCL = 0
}
Bez potvrzení:
void main ()
{
SDA = 1 // SDA linka jde na vysokou //
SCL = 1 // hodiny jsou vysoké až nízké //
zpoždění (100)
SCL = 0
}

Operace Master to Slave zapisuje

Protokol I2C přenáší data ve formě paketů nebo bajtů. Za každým bajtem následuje potvrzovací bit.

Formát přenosu dat

Formát přenosu dat

Formát přenosu dat

Start: Primárně sekvence přenosu dat zahájená masterem generujícím počáteční podmínku.

7bitová adresa: Poté master odešle adresu slave ve dvou 8bitových formátech namísto jediné 16bitové adresy.

R / W: Pokud je bit pro čtení a zápis vysoký, provede se operace zápisu.

BĚDA: Pokud se operace zápisu provádí v podřízeném zařízení, pak přijímač odešle 1bitový ACK do mikrokontroléru.

Stop: Po dokončení operace zápisu v podřízeném zařízení mikrokontrolér odešle podmínku zastavení do podřízeného zařízení.

Programování

Zápis operace

voidwrite (nepodepsaný znak d)
{
Nepodepsaný znak k, j = 0x80
Pro (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
zpoždění (4)
SCL = 0
}
SDA = 1
SCL = 1
zpoždění (2)
c = SDA
zpoždění (2)
SCL = 0
}

Operace čtení Master to Slave

Data jsou načtena zpět z podřízeného zařízení ve formě bitu nebo bajtů - nejdříve si přečtěte nejvýznamnější bit a jako poslední přečtěte nejméně významný bit.

Formát čtení dat

Formát čtení dat

Formát čtení dat

Start: Sekvence přenosu dat je primárně iniciována generátorem generujícím počáteční podmínku.

7bitová adresa: Poté master odešle adresu slave ve dvou 8bitových formátech namísto jediné 16bitové adresy.

R / W: Pokud je bit pro čtení a zápis nízký, provede se operace čtení.

BĚDA: Pokud se operace zápisu provádí v podřízeném zařízení, pak přijímač odešle 1bitový ACK do mikrokontroléru.

Stop: Po dokončení operace zápisu v podřízeném zařízení mikrokontrolér odešle podmínku zastavení do podřízeného zařízení.

Programování

Prázdné čtení ()
{
Nepodepsaný znak j, z = 0x00, q = 0x80
SDA = 1
pro (j = 0j<8j++)
{
SCL = 1
zpoždění (100)
vlajka = SDA
if (flag == 1)
q)
q = q >> 1
zpoždění (100)
SCL = 0

Praktický příklad propojení ADC s mikrokontrolérem 8051

ADC je zařízení, které se používá k převodu analogových dat do formy digitálních a digitálních na analogové. Mikrokontrolér 8051 nemá vestavěný ADC, takže musíme přidat externě prostřednictvím protokolu I2C. PCF8591 je založen na I2C analogově digitální a digitální na analogový převodník. Toto zařízení může podporovat maximálně 4 analogové vstupní kanály spolu s napětím 2,5 až 6 V.

Analogové výstupy

Analogové výstupy přicházejí ve formě napětí. Například 5V analogový snímač poskytuje výstupní logiku 0,01 V až 5 V.
Maximální digitální hodnota 5v je = 256.
Hodnota 2,5 V je = 123 podle maximální hodnoty napětí.

Vzorec analogového výstupu je:

Vzorec digitálních výstupů:

Propojení ADC s mikrokontrolérem 8051

Propojení ADC s mikrokontrolérem 8051

Výše uvedený obrázek ukazuje přenos dat pomocí protokolu I2C ze zařízení ADC do mikrokontroléru 8051. ADC piny SCL a SDA jsou připojeny k pinům 1.7 a 1.6 mikrokontroléru pro navázání komunikace mezi nimi. Když senzor dává analogové hodnoty ADC, převádí se na digitální a přenáší data do mikrokontroléru prostřednictvím protokolu I2C.

Jedná se o výukový program sběrnice I2C s příslušnými programy. Doufáme, že vám daný obsah poskytne praktický koncept propojení několika zařízení s mikrokontroléry pomocí komunikace I2C. Máte-li jakékoli pochybnosti o postupu propojení tohoto protokolu, můžete nás kontaktovat níže uvedeným komentářem.