Výukový program protokolu I2C bus, Rozhranie s aplikáciami

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





V súčasnosti majú protokoly zásadnú úlohu v design zabudovaného systému . Bez rozšírenia na protokoly, ak chcete rozšíriť periférne vlastnosti mikrokontroléra, zvýši sa zložitosť a spotreba energie. K dispozícii sú rôzne typy protokolov zbernice, ako napríklad USART, SPI, CAN, Protokol zbernice I2C atď., ktoré sa používajú na prenos údajov medzi dvoma systémami.

Protokol I2C

Čo je I2C Bus?




Vysielanie a príjem informácií medzi dvoma alebo viac ako dvoma zariadeniami vyžaduje komunikačnú cestu nazývanú ako systém zbernice. Zbernica I2C je obojsmerná dvojvodičová sériová zbernica, ktorá sa používa na prenos údajov medzi integrovanými obvodmi. I2C je skratka pre „Inter Integrated Circuit“. Prvýkrát ho predstavili polovodiče spoločnosti Philips v roku 1982. Zbernica I2C pozostáva z troch rýchlostí prenosu dát, ako je štandardný, rýchly režim a vysokorýchlostný režim. Zbernica I2C podporuje 7-bitové a 10-bitové zariadenie s adresným priestorom a jej prevádzka sa líši pri nízkych napätiach.

I2c zbernicový protokol

I2c zbernicový protokol



Signálne čiary I2C

Signálne čiary I2C

Signálne čiary I2C

I2C je protokol sériovej zbernice pozostávajúci z dvoch signálnych vedení, ako sú vedenia SCL a SDL, ktoré sa používajú na komunikáciu so zariadeniami. SCL znamená „sériová hodinová linka“ a tento signál je vždy riadený „hlavným zariadením“. SDL znamená „sériová dátová linka“ a tento signál je riadený buď hlavnou alebo periférnou jednotkou I2C. Obe tieto linky SCL a SDL sú v stave otvoreného odtoku, keď nedochádza k prenosu medzi periférnymi zariadeniami I2C.

Open-Drain výstupy


Otvorený odtok je koncepcia pre tranzistor FET pričom odtoková svorka tranzistora je otvorená. Kolíky SDL a SCL hlavného zariadenia sú navrhnuté s tranzistormi v otvorenom stave, takže prenos dát je možný iba vtedy, keď sú tieto tranzistory vedené. Preto sú tieto vedenia alebo odtokové svorky spojené s dôslednými pull-up rezistormi k VCC pre režim vedenia.

Rozhrania I2C

Veľa podriadené zariadenia sú prepojené s mikrokontrolérom pomocou zbernice I2C cez IC radiča úrovne I2C na prenos informácií medzi nimi. Protokol I2C sa používa na pripojenie maximálne 128 zariadení, ktoré sú všetky pripojené na komunikáciu s linkami SCL a SDL hlavnej jednotky, ako aj so slave zariadeniami. Podporuje komunikáciu Multimaster, čo znamená, že na komunikáciu externých zariadení sa používajú dva ovládače.

Sadzby prenosu dát I2C

Protokol I2C pracuje v troch režimoch, ako sú: rýchly režim, vysokorýchlostný režim a štandardný režim, pričom rýchlosť dát v štandardnom režime sa pohybuje od 0 Hz do 100 Hz a dáta v rýchlom režime sa môžu prenášať s rýchlosťou 0 Hz až 400 KHz a vysokorýchlostný režim s 10 KHz až 100 KHz. 9-bitové dáta sa posielajú pre každý prenos, pričom 8 bitov sa vysiela vysielačom MSB do LSB a 9. bit je potvrdzovací bit zaslaný prijímačom.

Sadzby prenosu dát I2C

Sadzby prenosu dát I2C

Komunikácia I2C

Protokol I2C zbernice sa najbežnejšie používa v komunikácii typu master a slave, pričom master sa nazýva „mikrokontrolér“ a slave sa nazýva ďalšie zariadenia, ako napríklad ADC, EEPROM, DAC a podobné zariadenia v zabudovanom systéme. Počet podradených zariadení je pripojený k hlavnému zariadeniu pomocou zbernice I2C, pričom každé podriadené zariadenie pozostáva z jedinečnej adresy na jeho komunikáciu. Nasledujúce kroky sa používajú na komunikáciu hlavného zariadenia s podradeným zariadením:

Krok 1: Najskôr hlavné zariadenie vydá podmienku spustenia, aby informovalo všetky podriadené zariadenia tak, aby počúvali na sériovej dátovej linke.

Krok 2: Hlavné zariadenie odosiela adresu cieľového podriadeného zariadenia, ktorá sa porovnáva s adresami všetkých podradených zariadení pripojených k linkám SCL a SDL. Ak sa ktokoľvek zhoduje s adresou, vyberie sa dané zariadenie a zvyšné všetky zariadenia sa odpojia od liniek SCL a SDL.

Krok 3: Podriadené zariadenie so zhodnou adresou prijatou od nadriadeného reaguje s potvrdením nadriadenému, potom sa nadviaže komunikácia medzi nadriadeným a podriadeným zariadením na dátovej zbernici.

Krok 4: Master aj slave prijímajú a vysielajú dáta v závislosti od toho, či je komunikácia čítaná alebo zapisovaná.

Krok 5: Potom môže master prenášať 8-bitové dáta do prijímača, ktorý odpovedá 1-bitovým potvrdením.

Výukový program I2C

Vysielanie a postupné prijímanie informácií krok za krokom vzhľadom na hodinové impulzy sa nazýva protokol I2C. Je to medzisystémový protokol a protokol na krátku vzdialenosť, čo znamená, že sa v rámci dosky plošných spojov používa na komunikáciu zariadení typu master a slave.

Základy protokolu I2C

Všeobecne platí, že systém zbernice I2C pozostáva z dvoch vodičov, ktoré sa ľahko používajú na rozšírenie vstupných a výstupných periférnych funkcií, ako sú ADC, EEROM a RTC, a ďalšie základné komponenty vytvoriť systém, ktorého zložitosť je oveľa menšia.

Príklad: Pretože mikrokontrolér 8051 nemá zabudovaný ADC - takže ak chceme prepojiť akékoľvek analógové snímače s mikrokontrolérom 8051 - musíme používať zariadenia ADC, ako napríklad ADC0804-1 kanálový ADC, ADC0808-8 kanálový ADC atď. Použitím týchto ADC, môžeme prepojiť analógové snímače s mikrokontrolérom.

Bez použitia protokolu na rozšírenie vstupno-výstupných funkcií ľubovoľného mikrokontroléra alebo procesora môžeme prejsť na 8-kolíkové zariadenie 8255 ICit. The Mikrokontrolér 8051 je 40-pólový mikrokontrolér pomocou 8255 IC môžeme rozšíriť 3-I / O porty o 8-pin v každom porte. Použitím všetkých zariadení, ako sú RTC, ADC, EEPROM, časovače atď. - na rozšírenie periférnych obvodov - sa tiež zvyšuje zložitosť, náklady, spotreba energie a veľkosť produktu.

Na prekonanie tohto problému prichádza do obrazu koncepcia protokolu na zníženie hardvérovej zložitosti a spotreby energie. Pomocou tohto protokolu I2C môžeme rozšíriť viac funkcií, ako sú I / 0 periférie, ADC, T / C a pamäťové zariadenia, až na 128 zariadení.
Terminológia použitá v protokoloch I2C

Vysielač: Zariadenie, ktoré odosiela dáta na zbernicu, sa nazýva vysielač.

Prijímač: Zariadenie, ktoré prijíma dáta zo zbernice, sa nazýva prijímač.

Majster: Zariadenie, ktoré iniciuje prenosy na generovanie hodinových signálov a ukončenie prenosu, sa nazýva master.

Otrok: Zariadenie adresované nadradenou jednotkou sa nazýva slave.

Multimaster: Viac ako jeden hlavný server sa môže pokúsiť riadiť zbernicu súčasne bez toho, aby došlo k poškodeniu správy, sa nazýva Multimaster.

Arbitráž: Postup zabezpečujúci, že ak sa súčasne pokúša ovládať zbernicu viac ako jeden hlavný server - smie to urobiť iba jeden, aby nedošlo k poškodeniu víťaznej správy.

Synchronizácia: Postup synchronizácie dvojhôd hodín dvoch alebo viacerých zariadení sa nazýva synchronizácia.

Poradie základných príkazov I2C

  1. Podmienka začatia bit
  2. Stav zastavenia bitu
  3. Podmienka potvrdenia
  4. Operácia zápisu Master to Slave
  5. Prečítajte si operáciu Slave to Master

Stav spustenia a zastavenia bitov

Keď si hlavný (mikrokontrolér) želá hovoriť s podriadeným zariadením (napríklad ADC), začne komunikáciu vydaním štartovacej podmienky na zbernici I2C a potom vydá podmienku zastavenia. Logické úrovne spustenia a zastavenia I2C sú zobrazené na obrázku.

Podmienka spustenia I2C je definovaná ako prechod z vysokej na nízku linku SDA, zatiaľ čo linka SCL je vysoká. Stav zastavenia I2C nastane, keď sa linka SDA prepne z nízkej na vysokú, zatiaľ čo linka SCL je vysoká.

Master I2C generuje vždy podmienky S a P. Len čo I2C master inicializuje stav START, zbernica I2c sa považuje za zaneprázdnenú.

Stav spustenia a zastavenia bitov

Stav spustenia a zastavenia bitov

Programovanie:

ŠTART PODMIENKA:

sbit SDA = P1 ^ 7 // inicializovať piny SDA a SCL mikrokontroléra //
sbit SCL = P1 ^ 6
neplatnosť oneskorenia (unsigned int)
void main ()
{
SDA = 1 // spracovanie údajov //
SCL = 1 // hodiny sú vysoké //
oneskorenie ()
SDA = 0 // odoslal údaje //
oneskorenie ()
SCL = 0 // hodinový signál je slabý //
}
Oneskorenie neplatnosti (int p)
{
unsignedinta, nar
Pre (a = 0a<255a++) //delay function//
Pre (b = 0b}

Stav STOP:

void main ()
{
SDA = 0 // Zastaviť spracovanie údajov //
SCL = 1 // hodiny sú vysoké //
oneskorenie ()
SDA = 1 // zastavené //
oneskorenie ()
SCL = 0 // hodinový signál je slabý //
}
Oneskorenie neplatnosti (int p)
{
unsignedinta, nar
Pre (a = 0a<255a++) //delay function//
Pre (b = 0b}

Podmienka potvrdenia (ACK) a stavu bez potvrdenia (NCK)

Za každým bajtom prenášaným cez zbernicu I2C nasleduje podmienka potvrdenia z prijímača, čo znamená, že keď hlavný server stiahne SCL nízko, aby dokončil prenos 8 bitov, SDA bude prijímačom vytiahnutý nízko. Ak sa po vyslaní prijímača neťahá, považuje sa linka SDA LOW za podmienku NCK.

Potvrdenie (ACK)

Potvrdenie (ACK)

Programovanie

Poďakovanie
void main ()
{
SDA = 0 // Riadok SDA klesá na nízku //
SCL = 1 // hodiny sú vysoké až nízke //
oneskorenie (100)
SCL = 0
}
Bez potvrdenia:
void main ()
{
SDA = 1 // riadok SDA ide na maximum //
SCL = 1 // hodiny sú vysoké až nízke //
oneskorenie (100)
SCL = 0
}

Master to Slave zapisuje operáciu

Protokol I2C prenáša údaje vo forme paketov alebo bajtov. Za každým bajtom nasleduje potvrdzovací bit.

Formát prenosu údajov

Formát prenosu údajov

Formát prenosu údajov

Štart: Primárne je to sekvencia prenosu dát iniciovaná nadradeným serverom generujúcim podmienku spustenia.

7-bitová adresa: Potom master pošle adresu slave v dvoch 8-bitových formátoch namiesto jednej 16-bitovej adresy.

Č / P: Ak je bit na čítanie a zápis vysoký, vykoná sa operácia zápisu.

ALAS: Ak sa operácia zápisu vykonáva v podradenom zariadení, potom prijímač pošle 1-bitový ACK do mikrokontroléra.

Stop: Po dokončení operácie zápisu v podradenom zariadení mikroprocesor pošle podmienku zastavenia do podriadeného zariadenia.

Programovanie

Operácia zápisu

voidwrite (nepodpísaný znak d)
{
Nepodpísaný znak k, j = 0x80
Pre (k = 0 k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
oneskorenie (4)
SCL = 0
}
SDA = 1
SCL = 1
meškanie (2)
c = SDA
meškanie (2)
SCL = 0
}

Operácia čítania typu Master to Slave

Dáta sa načítajú späť z podriadeného zariadenia vo forme bitov alebo bajtov - najskôr načítajte najvýznamnejší bit a ako posledný prečítajte najmenej významný bit.

Formát čítania údajov

Formát čítania údajov

Formát čítania údajov

Štart: Sekvencia prenosu dát je primárne iniciovaná nadradeným serverom generujúcim podmienku spustenia.

7-bitová adresa: Potom master pošle adresu slave v dvoch 8-bitových formátoch namiesto jednej 16-bitovej adresy.

Č / P: Ak je bit na čítanie a zápis nízky, vykoná sa operácia čítania.

ALAS: Ak sa operácia zápisu vykonáva v podradenom zariadení, potom prijímač pošle 1-bitový ACK do mikrokontroléra.

Stop: Po dokončení operácie zápisu v podradenom zariadení mikroprocesor pošle podmienku zastavenia do podriadeného zariadenia.

Programovanie

Zrušené čítanie ()
{
Nepodpísaný znak j, z = 0x00, q = 0x80
SDA = 1
pre (j = 0j<8j++)
{
SCL = 1
oneskorenie (100)
vlajka = SDA
if (príznak == 1)
q)
q = q >> 1
oneskorenie (100)
SCL = 0

Praktický príklad prepojenia ADC s mikrokontrolérom 8051

ADC je zariadenie, ktoré sa používa na prevod analógových údajov do podoby digitálnych a digitálnych na analógové. Mikrokontrolér 8051 nemá zabudovaný ADC, takže musíme pridávať externe prostredníctvom protokolu I2C. PCF8591 je založený na I2C analógovo-digitálne a digitálno-analógový prevodník. Toto zariadenie podporuje maximálne 4 analógové vstupné kanály spolu s napätím 2,5 až 6 V.

Analógové výstupy

Analógové výstupy majú formu napätia. Napríklad 5V analógový snímač poskytuje výstupnú logiku 0,01 V až 5 V.
Maximálna digitálna hodnota 5v je = 256.
Hodnota 2,5v je = 123 podľa maximálnej hodnoty napätia.

Vzorec analógového výstupu je:

Vzorec digitálnych výstupov:

Prepojenie ADC s mikrokontrolérom 8051

Prepojenie ADC s mikrokontrolérom 8051

Vyššie uvedený obrázok zobrazuje prenos dát pomocou protokolu I2C zo zariadenia ADC do mikrokontroléra 8051. ADC piny SCL a SDA sú pripojené k pinom 1.7 a 1.6 mikrokontroléra na nadviazanie komunikácie medzi nimi. Keď snímač dáva ADC analógové hodnoty, prevádza ich na digitálne a prenáša údaje do mikrokontroléra prostredníctvom protokolu I2C.

Reč je o výučbe protokolu zbernice I2C s príslušnými programami. Dúfame, že vám daný obsah poskytne praktický koncept prepojenia viacerých zariadení s mikrokontrolérmi pomocou komunikácie I2C. Ak máte pochybnosti o postupe prepojenia tohto protokolu, môžete nás kontaktovať komentárom nižšie.