Vadnica za protokol vodila I2C, Vmesnik z aplikacijami

Preizkusite Naš Instrument Za Odpravo Težav





Danes imajo protokoli bistveno vlogo pri zasnova vgrajenega sistema . Če želite razširiti zunanje funkcije mikrokrmilnika, ne da bi se lotili protokolov, se bo zapletenost in poraba energije povečala. Na voljo so različne vrste vodilskih protokolov, kot so USART, SPI, CAN, I2C protokol vodila itd., ki se uporabljajo za prenos podatkov med dvema sistemoma.

Protokol I2C

Kaj je I2C Bus?




Za prenos in sprejemanje informacij med dvema ali več kot dvema napravama je potrebna komunikacijska pot, imenovana sistem vodila. I2C vodilo je dvosmerno dvožično serijsko vodilo, ki se uporablja za prenos podatkov med integriranimi vezji. I2C pomeni 'Inter Integrated Circuit'. Prvič so ga Philipsovi polprevodniki predstavili leta 1982. I2C vodilo sestavljajo tri hitrosti prenosa podatkov, kot so standardni, hitri in hitri način. Vodilo I2C podpira 7-bitno in 10-bitno napravo z naslovnim prostorom, njegovo delovanje pa se razlikuje pri nizki napetosti.

Protokol vodila I2c

Protokol vodila I2c



Signalne črte I2C

Signalne črte I2C

Signalne črte I2C

I2C je protokol serijskega vodila, sestavljen iz dveh signalnih linij, kot sta linije SCL in SDL, ki se uporabljajo za komunikacijo z napravami. SCL pomeni 'serijska ura' in ta signal vedno poganja 'glavna naprava'. SDL pomeni „serijska podatkovna linija“, ta signal pa poganja glavna enota ali zunanja oprema I2C. Obe vodi SCL in SDL sta v stanju odprtega odtoka, kadar med zunanjimi napravami I2C ni prenosa.

Izhodi odprtega odtoka


Odprt odtok je koncept za FET tranzistor pri čemer je odtočni priključek tranzistorja odprt. Zatiči SDL in SCL glavne naprave so zasnovani s tranzistorji v odprtem stanju, zato je prenos podatkov mogoč le, če se izvajajo ti tranzistorji. Zato so ti vodi ali odtočni terminali povezani z vlečnimi upori na VCC za prevodni način.

Vmesniki I2C

Veliko pomožne naprave so povezane z mikrokrmilnikom s pomočjo vodila I2C skozi IC nivojskega pretvornika nivoja I2C za prenos informacij med njimi. Protokol I2C, ki se uporablja za povezavo največ 128 naprav, ki so vse povezane za komunikacijo s povezavami SCL in SDL glavne enote ter podrejenimi napravami. Podpira komunikacijo Multimaster, kar pomeni, da se za komuniciranje zunanjih naprav uporabljata dva masterja.

Stopnje prenosa podatkov I2C

Protokol I2C deluje v treh načinih, kot so: hitri način, hitri način in standardni način, pri čemer se hitrost podatkov v standardnem načinu giblje od 0 Hz do 100 Hz, podatki v hitrem načinu pa se lahko prenašajo s hitrostjo od 0 Hz do 400 KHz in način visoke hitrosti z 10 KHz do 100KHz. 9-bitni podatki se pošljejo za vsak prenos, pri čemer 8-bit pošlje oddajnik MSB v LSB, 9. bit pa je potrditveni bit, ki ga pošlje sprejemnik.

Stopnje prenosa podatkov I2C

Stopnje prenosa podatkov I2C

Komunikacija I2C

Protokol vodila I2C se najpogosteje uporablja v glavni in pomožni komunikaciji, kjer se glavni imenuje 'mikrokrmilnik', pomožni enoti pa druge naprave, kot so ADC, EEPROM, DAC in podobne naprave v vdelanem sistemu. Število pomožnih naprav je s pomočjo vodila I2C povezano z glavno napravo, pri čemer je vsaka pomožna enota sestavljena iz edinstvenega naslova za komunikacijo. Za sporočanje glavne naprave pomožni enoti se uporabljajo naslednji koraki:

Korak 1: Najprej glavna naprava izda pogoj za zagon, da obvesti vse podrejene naprave, da poslušajo v serijski podatkovni liniji.

2. korak: Glavna naprava pošlje naslov ciljne podrejene naprave, ki se primerja z naslovi vseh podrejenih naprav, kot so povezane z linijami SCL in SDL. Če se kdo ujema z naslovom, je izbrana ta naprava, preostale vse naprave pa so prekinjene s povezavami SCL in SDL.

3. korak: Podrejena naprava z usklajenim naslovom, ki ga prejme od glavne enote, se s potrditvijo odzove na glavno enoto, nato se vzpostavi komunikacija med glavno in pomožno napravo na podatkovnem vodilu.

4. korak: Tako glavni kot pomožni podatek sprejemata in prenašata podatke, odvisno od tega, ali je komunikacija prebrana ali zapisana.

5. korak: Nato lahko glavni posreduje 8-bitne podatke sprejemniku, ki odgovori z 1-bitno potrditvijo.

Vadnica za I2C

Korak za korakom serijsko oddajanje in sprejemanje informacij glede na impulze ure se imenuje protokol I2C. To je medsistemski protokol in protokol na kratke razdalje, kar pomeni, da se uporablja znotraj vezja za komunikacijo glavne in podrejene naprave.

Osnove protokola I2C

Na splošno je sistem vodila I2C sestavljen iz dveh žic, ki se enostavno uporabljata za razširitev vhodnih in izhodnih zunanjih funkcij, kot so ADC, EEROM in RTC, in druge osnovne komponente narediti sistem, katerega kompleksnost je zelo manjša.

Primer: Ker mikrokrmilnik 8051 nima vgrajenega ADC - torej, če želimo vmesnik katerega koli analognega senzorja v mikrokrmilnik 8051 - moramo uporabiti naprave ADC, kot so ADC0804-1 kanalni ADC, ADC0808- 8-kanalni ADC, itd. analogne senzorje lahko povežemo z mikrokrmilnikom.

Brez uporabe protokola za razširitev vhodno / izhodnih funkcij katerega koli mikrokrmilnika ali procesorja lahko preidemo na 8255 ICit 8-pinsko napravo. The 8051 mikrokrmilnik je 40-pinski mikrokrmilnik z uporabo 8255 IC lahko razširimo vrata 3-V / I z 8-nožicami v vsakem pristanišču. Z uporabo vseh naprav, kot so RTC, ADC, EEPROM, časovniki itd. - za razširitev perifernih vezij se povečajo tudi zapletenost, stroški, poraba energije in velikost izdelka.

Da bi odpravili to težavo, je na voljo koncept protokola za zmanjšanje kompleksnosti strojne opreme in porabe energije. S tem protokolom I2C lahko razširimo več funkcij, kot so zunanje naprave I / 0, ADC-ji, T / C in pomnilniške naprave do 128 naprav.
Terminologija, ki se uporablja v protokolih I2C

Oddajnik: Naprava, ki podatke pošilja na vodilo, se imenuje oddajnik.

Sprejemnik: Naprava, ki sprejema podatke z vodila, se imenuje sprejemnik.

Mojster: Naprava, ki sproži prenose za generiranje urnih signalov in zaključi prenos, se imenuje master.

Suženj: Naprava, ki jo naslovi poveljnik, se imenuje podrejena.

Multimaster: Več vodij lahko istočasno poskuša nadzirati vodilo, ne da bi poškodoval sporočilo, ki se imenuje Multimaster.

Arbitraža: Postopek za zagotovitev, da če več kot ena glavna enota hkrati poskuša nadzorovati vodilo - sme to storiti samo eden, tako da zmagovalno sporočilo ni poškodovano.

Sinhronizacija: Postopek sinhronizacije posameznih ur dveh ali več naprav se imenuje sinhronizacija.

Zaporedje osnovnih ukazov I2C

  1. Zaženi bitni pogoj
  2. Stop bit stanje
  3. Pogoj za potrditev
  4. Nadrejena operacija zapisovanja
  5. Preberite Operation Slave to Master

Zagon in zaustavitev stanja bitov

Ko glavni (mikrokrmilnik) želi govoriti s podrejeno napravo (na primer ADC), začne komunikacijo z izdajo pogoja zagona na vodilu I2C in nato izda pogoj zaustavitve. Logični nivoji I2C za zagon in zaustavitev so prikazani na sliki.

Pogoj za zagon I2C je opredeljen kot prehod linije SDA med visokim in nizkim, medtem ko je linija SCL visoka. Stanje zaustavitve I2C se pojavi, ko se linija SDA preklopi z nizke na visoko, medtem ko je linija SCL visoka.

Nadzornik I2C vedno generira pogoje S in P. Ko glavna enota I2C sproži pogoj START, se šteje, da je vodilo I2c zasedeno.

Zagon in zaustavitev stanja bitov

Zagon in zaustavitev stanja bitov

Programiranje:

Pogoj START:

sbit SDA = P1 ^ 7 // inicializiramo SDA in SCL nožice mikrokrmilnika //
sbit SCL = P1 ^ 6
zamuda praznine (nepodpisan int)
void main ()
{
SDA = 1 // obdelava podatkov //
SCL = 1 // ura je visoka //
zamuda ()
SDA = 0 // poslali podatke //
zamuda ()
SCL = 0 // taktni signal je nizek //
}
Zakasnitev praznine (int p)
{
unsignedinta, b
Za (a = 0a<255a++) //delay function//
Za (b = 0b}

STOP:

void main ()
{
SDA = 0 // Ustavite obdelavo podatkov //
SCL = 1 // ura je visoka //
zamuda ()
SDA = 1 // ustavljeno //
zamuda ()
SCL = 0 // taktni signal je nizek //
}
Zakasnitev praznine (int p)
{
unsignedinta, b
Za (a = 0a<255a++) //delay function//
Za (b = 0b}

Pogoj za potrditev (ACK) in brez potrditve (NCK)

Vsakemu bajtu, ki se prenese prek vodila I2C, sledi pogoj za potrditev s strani sprejemnika, kar pomeni, da bo po tem, ko poveljnik povleče SCL nizko za dokončanje prenosa 8-bitnega, sprejemnik SDA nizko povlekel SDA. Če se po prenosu sprejemnika ne vleče, se šteje, da je linija SDA LOW (NIZKO) pogoj NCK.

Potrditev (ACK)

Potrditev (ACK)

Programiranje

Zahvala
void main ()
{
SDA = 0 // Vrstica SDA gre na nizko //
SCL = 1 // ura je od najvišje do najnižje //
zamuda (100)
SCL = 0
}
Brez potrditve:
void main ()
{
SDA = 1 // Vrstica SDA gre na visoko //
SCL = 1 // ura je od najvišje do najnižje //
zamuda (100)
SCL = 0
}

Master to Slave piše operacijo

Protokol I2C podatke prenaša v obliki paketov ali bajtov. Vsakemu bajtu sledi potrditveni bit.

Oblika prenosa podatkov

Oblika prenosa podatkov

Oblika prenosa podatkov

Začetek: Predvsem zaporedje prenosa podatkov, ki ga sproži poveljnik, ki generira zagonski pogoj.

7-bitni naslov: Po tem poveljnik pošlje podrejeni naslov v dveh 8-bitnih oblikah namesto v enem samem 16-bitnem naslovu.

R / W: Če je bit branja in pisanja visok, se izvede operacija zapisovanja.

ALAS: Če se operacija zapisovanja izvaja v podrejeni napravi, potem sprejemnik pošlje 1-bitni ACK mikrokrmilniku.

Stop: Po zaključku operacije zapisovanja v podrejeni napravi mikrokrmilnik pošlje podrejeni napravi stanje zaustavitve.

Programiranje

Napiši operacijo

voidwrite (nepodpisani znak d)
{
Nepodpisana črka k, j = 0x80
Za (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
zamuda (4)
SCL = 0
}
SDA = 1
SCL = 1
zamuda (2)
c = SDA
zamuda (2)
SCL = 0
}

Operacija od bralca do podrejenega

Podatki se iz podrejene naprave preberejo v obliki bita ali bajtov - najprej preberite najpomembnejši bit in nazadnje preberite najmanj pomemben bit.

Oblika branja podatkov

Oblika branja podatkov

Oblika branja podatkov

Začetek: Zaporedje prenosa podatkov najprej sproži poveljnik, ki generira zagonski pogoj.

7-bitni naslov: Po tem poveljnik pošlje podrejeni naslov v dveh 8-bitnih oblikah namesto v enem samem 16-bitnem naslovu.

R / W: Če je bit branja in pisanja nizek, se izvede operacija branja.

ALAS: Če se operacija zapisovanja izvaja v podrejeni napravi, potem sprejemnik pošlje 1-bitni ACK mikrokrmilniku.

Stop: Po zaključku operacije zapisovanja v podrejeni napravi mikrokrmilnik pošlje podrejeni napravi stanje zaustavitve.

Programiranje

Neveljavno branje ()
{
Nepodpisani znak j, z = 0x00, q = 0x80
SDA = 1
za (j = 0j<8j++)
{
SCL = 1
zamuda (100)
zastava = SDA
če (zastava == 1)
q)
q = q >> 1
zamuda (100)
SCL = 0

Praktični primer povezovanja ADC z mikrokrmilnikom 8051

ADC je naprava, ki se uporablja za pretvorbo analognih podatkov v digitalno in digitalno analogno obliko. Mikrokrmilnik 8051 nima vgrajenega ADC-ja, zato ga moramo dodati zunaj prek protokola I2C. PCF8591 temelji na I2C analogni digitalni in digitalno-analogni pretvornik. Ta naprava lahko podpira največ 4-analogne vhodne kanale skupaj z napetostmi 2,5 do 6v.

Analogni izhodi

Analogni izhodi so v obliki napetosti. Na primer, analogni senzor 5v daje izhodno logiko od 0,01 do 5v.
Največja digitalna vrednost 5v je = 256.
Vrednost 2,5v je = 123 glede na največjo vrednost napetosti.

Formula analognega izhoda je:

Formula digitalnih izhodov:

Povezava ADC z mikrokrmilnikom 8051

Povezava ADC z mikrokrmilnikom 8051

Zgornja slika prikazuje prenos podatkov po protokolu I2C z naprave ADC na mikrokrmilnik 8051. Zatiči ADC SCL in SDA so povezani z nožicama 1.7 in 1.6 mikrokrmilnika za vzpostavitev komunikacije med njima. Ko senzor ADC poda analogne vrednosti, se pretvori v digitalno in s protokolom I2C prenese podatke v mikrokrmilnik.

Tu gre za vadnico protokola vodila I2C z ustreznimi programi. Upamo, da vam dana vsebina daje praktičen koncept povezovanja več naprav z mikrokrmilniki s pomočjo komunikacije I2C. Če dvomite v postopek povezovanja tega protokola, nas lahko kontaktirate spodaj.