Vodič za protokol sabirnice I2C, Sučelje s aplikacijama

Vodič za protokol sabirnice I2C, Sučelje s aplikacijama

Danas protokoli igraju ključnu ulogu u dizajn ugrađenog sustava . Bez odlaska na protokole, ako želite proširiti periferne značajke mikrokontrolera, složenost i potrošnja energije će se povećati. Dostupne su različite vrste sabirničkih protokola kao što su USART, SPI, CAN, I2C protokol sabirnice , itd., koji se koriste za prijenos podataka između dva sustava.



I2C protokol

Što je I2C sabirnica?


Prijenos i primanje informacija između dva ili više uređaja zahtijeva komunikacijski put koji se naziva sistem sabirnice. I2C sabirnica je dvosmjerna dvožična serijska sabirnica koja se koristi za prijenos podataka između integriranih krugova. I2C je kratica za 'Inter integrirani krug'. Prvi put su ga predstavili Philipsovi poluvodiči 1982. I2C sabirnica sastoji se od tri brzine prijenosa podataka kao što su standardni, brzi i brzi način. I2C sabirnica podržava 7-bitni i 10-bitni uređaj za adresni prostor i njegov se rad razlikuje s niskim naponima.



I2c protokol sabirnice

I2c protokol sabirnice

Signalne linije I2C



Signalne linije I2C

Signalne linije I2C

I2C je protokol serijske sabirnice koji se sastoji od dvije signalne linije kao što su SCL i SDL linije koje se koriste za komunikaciju s uređajima. SCL znači 'serijska linija sata' i taj signal uvijek pokreće 'glavni uređaj'. SDL je kratica za 'serijsku podatkovnu liniju', a ovaj signal pokreće glavna ili I2C periferna oprema. Obje SCL i SDL linije su u stanju otvorenog odvoda kada nema prijenosa između I2C perifernih uređaja.

Izlazi s otvorenim odvodom


Otvoreni odvod je koncept za FET tranzistor pri čemu je odvodni terminal tranzistora otvoren. SDL i SCL pinovi glavnog uređaja dizajnirani su s tranzistorima u otvorenom stanju, pa je prijenos podataka moguć samo kada se ti tranzistori provode. Stoga su ti vodovi ili odvodne stezaljke povezani temeljnim otporima za izvlačenje na VCC za način provođenja.

I2C sučelja

Puno slave uređaji povezani su s mikrokontrolerom uz pomoć I2C sabirnice kroz I2C mjenjač razine IC za prijenos podataka između njih. I2C protokol koji se koristi za povezivanje maksimalno 128 uređaja koji su svi povezani za komunikaciju s SCL i SDL linijama glavne jedinice kao i podređenim uređajima. Podržava Multimaster komunikaciju, što znači da se za povezivanje vanjskih uređaja koriste dva master-a.

I2C stope prijenosa podataka

I2C protokol djeluje u tri načina, kao što su: brzi način rada, način rada velike brzine i standardni način rada, pri čemu se brzina podataka u standardnom načinu kreće od 0 Hz do 100 Hz, a podaci u brzom načinu rada mogu se prenositi brzinom od 0 Hz do 400 KHz, a način rada brzinom 10 KHz do 100KHz. 9-bitni podaci šalju se za svaki prijenos, pri čemu 8-bitni odašiljač MSB šalje LSB-u, a 9. bit je bit potvrde koji šalje prijemnik.

I2C stope prijenosa podataka

I2C stope prijenosa podataka

I2C komunikacija

I2C protokol sabirnice najčešće se koristi u master i slave komunikaciji, pri čemu se master naziva 'mikrokontroler', a slave se nazivaju drugi uređaji kao što su ADC, EEPROM, DAC i slični uređaji u ugrađenom sustavu. Broj pomoćnih uređaja povezan je s glavnim uređajem uz pomoć I2C sabirnice, pri čemu se svaki pomoćni uređaj sastoji od jedinstvene adrese koja ga komunicira. Sljedeći se koraci koriste za komunikaciju glavnog uređaja s podređenim uređajem:

Korak 1: Prvo, glavni uređaj izdaje uvjet pokretanja kako bi obavijestio sve pomoćne uređaje tako da slušaju na serijskoj podatkovnoj liniji.

Korak 2: Glavni uređaj šalje adresu ciljnog slave uređaja koja se uspoređuje sa adresama svih slave uređaja kao povezane na SCL i SDL linije. Ako se bilo koja adresa podudara, taj je uređaj odabran, a preostali svi uređaji odspojeni su od SCL i SDL linija.

Korak 3: Podređeni uređaj s podudarnom adresom primljenom od matičnog uređaja, odgovara potvrdom glavnom pretvaraču, nakon čega se uspostavlja komunikacija između glavnog i pomoćnog uređaja na podatkovnoj sabirnici.

Korak 4: I master i slave primaju i prenose podatke ovisno o tome čita li se ili piše li komunikacija.

Korak 5: Tada master može prenijeti 8-bitne podatke na prijemnik koji odgovara 1-bitnom potvrdom.

Vodič za I2C

Prijenos i primanje informacija korak po korak serijski u odnosu na impulse takta naziva se I2C protokol. To je protokol među sustavima i kratkim udaljenostima, što znači da se koristi unutar pločice za komunikaciju matičnog i podređenog uređaja.

Osnove protokola I2C

Općenito, I2C sustav sabirnice sastoji se od dvije žice koje se lako koriste za proširenje ulaznih i izlaznih perifernih značajki kao što su ADC, EEROM i RTC, i ostale osnovne komponente napraviti sustav čija je složenost vrlo manja.

Primjer: Budući da mikrokontroler 8051 nema ugrađeni ADC - pa, ako želimo povezati bilo koji analogni senzor s mikrokontrolerom 8051 - moramo koristiti ADC uređaje kao što su ADC0804-1 kanalni ADC, ADC0808- 8-kanalni ADC, itd. Korištenjem ovih ADC-a, analogne senzore možemo povezati s mikrokontrolerom.

Bez korištenja protokola za proširivanje I / O značajki bilo kojeg mikrokontrolera ili procesora, možemo prijeći na 8255 ICit 8-pinski uređaj. The 8051 mikrokontroler je 40-pinski mikrokontroler pomoću 8255 IC možemo proširiti 3-I / O priključke s 8-pinova u svakom priključku. Korištenjem svih uređaja kao što su RTC, ADC, EEPROM, mjerači vremena, itd. - za proširenje perifernih sklopova - također se povećavaju složenost, trošak, potrošnja energije i veličina proizvoda.

Kako bi se prevladao ovaj problem, u obzir dolazi koncept protokola za smanjenje složenosti hardvera i potrošnje energije. Pomoću ovog I2C protokola možemo proširiti veći broj značajki, poput I / 0 perifernih uređaja, ADC-ova, T / C-a i memorijskih uređaja do 128 uređaja.
Terminologija koja se koristi u I2C protokolima

Odašiljač: Uređaj koji šalje podatke na sabirnicu naziva se odašiljač.

Prijamnik: Uređaj koji prima podatke sa sabirnice naziva se prijemnik.

Ovladati; majstorski: Uređaj koji pokreće prijenose za generiranje signala sata i završava prijenos naziva se master.

Rob: Uređaj kojem se obraća master naziva se slave.

Multimaster: Više od jednog master može istodobno pokušati upravljati sabirnicom, a da se ne ošteti poruka koja se naziva Multimaster.

Arbitraža: Postupak kako bi se osiguralo da, ako više od jednog glavnog računala istodobno pokušava kontrolirati sabirnicu - samo jedan smije to učiniti, tako da dobitna poruka nije oštećena.

Sinkronizacija: Postupak sinkronizacije pojedinačnih taktova dva ili više uređaja naziva se sinkronizacija.

Slijed osnovnih naredbi I2C

  1. Stanje startnog bita
  2. Stanje zaustavnog bita
  3. Uvjet za priznanje
  4. Operacija master od slave do pisanja
  5. Pročitajte operaciju Slave za gospodara

Stanje pokretanja i zaustavljanja bitova

Kada master (mikrokontroler) želi razgovarati s pomoćnim uređajem (na primjer ADC), započinje komunikaciju izdavanjem uvjeta pokretanja na I2C sabirnici, a zatim izdaje uvjet zaustavljanja. Razine logike pokretanja i zaustavljanja I2C prikazane su na slici.

Uvjet pokretanja I2C definira se kao visoki do niski prijelaz SDA linije dok je SCL linija visoka. Uvjet zaustavljanja I2C događa se kada se SDA linija prebacuje s niske na visoku, dok je SCL linija visoka.

I2C master uvijek generira S i P uvjete. Jednom kada I2C master pokrene stanje START, smatra se da je I2c sabirnica u zauzetom stanju.

Stanje pokretanja i zaustavljanja bitova

Stanje pokretanja i zaustavljanja bitova

Programiranje:

UVJET START:

sbit SDA = P1 ^ 7 // inicijalizacija SDA i SCL pinova mikrokontrolera //
sbit SCL = P1 ^ 6
odgoda praznine (nepotpisan int)
void main ()
{
SDA = 1 // obrada podataka //
SCL = 1 // sat je visok //
odgoditi()
SDA = 0 // poslao je podatke //
odgoditi()
SCL = 0 // signal sata je nizak //
}
Kašnjenje praznine (int p)
{
unsignedinta, b
Za (a = 0a<255a++) //delay function//
Za (b = 0b}

STOP Stanje:

void main ()
{
SDA = 0 // Zaustavite obradu podataka //
SCL = 1 // sat je visok //
odgoditi()
SDA = 1 // Zaustavljeno //
odgoditi()
SCL = 0 // signal sata je nizak //
}
Kašnjenje praznine (int p)
{
unsignedinta, b
Za (a = 0a<255a++) //delay function//
Za (b = 0b}

Stanje potvrde (ACK) i bez potvrde (NCK)

Nakon svakog bajta koji se prenosi preko I2C sabirnice slijedi uvjet potvrde od prijamnika, što znači da će, nakon što master povuče SCL nisko za dovršetak prijenosa 8-bita, primatelj SDA povući SDA prema glavnom. Ako se nakon prijenosa prijamnika ne povuče, SDA linija LOW smatra se NCK uvjetom.

Zahvalnica (ACK)

Zahvalnica (ACK)

Programiranje

Priznanje
void main ()
{
SDA = 0 // SDA linija ide na nizak //
SCL = 1 // sat je visok do nizak //
kašnjenje (100)
SCL = 0
}
Nema potvrde:
void main ()
{
SDA = 1 // SDA linija ide prema visokoj //
SCL = 1 // sat je visok do nizak //
kašnjenje (100)
SCL = 0
}

Master to Slave piše operaciju

I2C protokol prenosi podatke u obliku paketa ili bajtova. Nakon svakog bajta slijedi bit potvrde.

Format prijenosa podataka

Format prijenosa podataka

Format prijenosa podataka

Početak: Prvenstveno, slijed prijenosa podataka koji je pokrenuo master koji generira početni uvjet.

7-bitna adresa: Nakon toga master šalje slave adresu u dva 8-bitna formata umjesto jedne 16-bitne adrese.

R / W: Ako je bit za čitanje i pisanje visok, tada se izvodi operacija pisanja.

ALAS: Ako se operacija upisa izvodi u slave uređaju, tada prijemnik šalje 1-bitni ACK mikrokontroleru.

Stop: Nakon završetka operacije upisa u podređeni uređaj, mikrokontroler šalje uvjet zaustavljanja podređenom uređaju.

Programiranje

Napišite operaciju

voidwrite (nepotpisani znak d)
{
Nepotpisani char k, j = 0x80
Za (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
kašnjenje (4)
SCL = 0
}
SDA = 1
SCL = 1
odgoda (2)
c = SDA
odgoda (2)
SCL = 0
}

Operacija čitanja od gospodara do podređenog

Podaci se s podređenog uređaja vraćaju u obliku bita ili bajtova - prvo pročitajte najznačajniji bit, a posljednji pročitajte najmanje bitni bit.

Format čitanja podataka

Format čitanja podataka

Format čitanja podataka

Početak: Primarno, slijed prijenosa podataka pokreće master koji generira početni uvjet.

7-bitna adresa: Nakon toga master šalje slave adresu u dva 8-bitna formata umjesto jedne 16-bitne adrese.

R / W: Ako je bit za čitanje i pisanje nizak, tada se izvodi operacija čitanja.

ALAS: Ako se operacija upisa izvodi u slave uređaju, tada prijemnik šalje 1-bitni ACK mikrokontroleru.

Stop: Nakon završetka operacije upisa u podređeni uređaj, mikrokontroler šalje uvjet zaustavljanja podređenom uređaju.

Programiranje

Prazno čitanje ()
{
Nepotpisani znak j, z = 0x00, q = 0x80
SDA = 1
za (j = 0j<8j++)
{
SCL = 1
kašnjenje (100)
zastava = SDA
ako (zastava == 1)
q)
q = q >> 1
kašnjenje (100)
SCL = 0

Praktični primjer povezivanja ADC-a s mikrokontrolerom 8051

ADC je uređaj koji se koristi za pretvaranje analognih podataka u oblik digitalnih i digitalnih u analogne. Mikrokontroler 8051 nema ugrađeni ADC, tako da ga moramo dodavati izvana putem I2C protokola. PCF8591 temelji se na I2C analogno digitalnom i digitalno-analogni pretvarač. Ovaj uređaj može podržavati maksimalno 4 analogna ulazna kanala uz napone od 2,5 do 6v.

Analogni izlazi

Analogni izlazi dolaze u obliku napona. Na primjer, analogni senzor od 5v daje izlaznu logiku od 0.01v do 5v.
Maksimalna digitalna vrijednost 5v je = 256.
Vrijednost 2,5v je = 123 prema maksimalnoj vrijednosti napona.

Formula analognog izlaza je:

Formula digitalnih izlaza:

Povezivanje ADC-a s mikrokontrolerom 8051

Povezivanje ADC-a s mikrokontrolerom 8051

Gornja slika prikazuje prijenos podataka pomoću I2C protokola s ADC uređaja na mikrokontroler 8051. ADC pinovi SCL i SDA povezani su na pinove 1.7 i 1.6 mikrokontrolera radi uspostavljanja komunikacije između njih. Kada senzor daje analogne vrijednosti ADC-u, on se pretvara u digitalni i prenosi podatke u mikrokontroler putem I2C protokola.

Ovdje se radi o vodiču za protokol sabirnice I2C s odgovarajućim programima. Nadamo se da će vam dati sadržaj pružiti praktični koncept povezivanja nekoliko uređaja s mikrokontrolerima pomoću I2C komunikacije. Ako sumnjate u postupak povezivanja ovog protokola, možete nas kontaktirati komentarom u nastavku.