Kaikki Arduino I2C -väylästä

Arduino I2C -väylä

kanssa Arduino voi luoda suuren määrän projekteja kuten olet nähnyt lukiessasi Hwlibreä, mikrokontrollerin ohjelmointi yksinkertaisella tavalla. Pero entre las conexiones analógicas y digitales de esta placa de hardware libre, se encuentran algunas qu aún siguen siendo algo desconocidas para muchos principiantes, como el verdadero potencial de las conexiones PWM, el SPI, los pines RX y TX del puerto serie, o el propio bus I2C. Por eso, con esta entrada podrás al menos conocer todo lo que necesitas del I2C.

kanssa I2C-väylä Voit liittää ja käyttää monia kolmannen osapuolen laitteita, joilla on tämän tyyppinen protokolla, kommunikoimaan Arduino-kortin kanssa. Niiden väliin voit liittää kiihtyvyysmittareita, näyttöjä, laskureita, kompasseja ja monia muita integroituja piirejä tämän Philips-keksinnön ansiosta.

Mikä on I2C?

I2C viittaa integroituun piiriin, toisin sanoen integroitu piiri. Se on sarjamuotoinen tietoliikenneväylä, jonka Philips Semiconductors -yhtiö on kehittänyt vuonna 1982 ja joka nykyään on NXP Semiconductors tämän osan poistamisen jälkeen. Aluksi se luotiin tämän tuotemerkin televisioille kommunikoimaan useista sisäisistä siruista yksinkertaisella tavalla. Mutta vuodesta 1990 lähtien I2C on levinnyt ja sitä käyttävät monet valmistajat.

Tällä hetkellä käytössä kymmeniä sirunvalmistajia useita toimintoja varten. Arduino-levyjen mikrokontrollerien luoja Atmel esitteli TWI (Two Wired Interface) -merkinnän lisensointitarkoituksiin, vaikka se on identtinen I2C: n kanssa. Mutta vuonna 2006 alkuperäisen patentin voimassaolo päättyi eikä siihen enää kuulu tekijänoikeuksia, joten termiä I2C on käytetty uudelleen (vain logo on edelleen suojattu, mutta sen käyttöä tai termin käyttöä ei ole rajoitettu).

I2C-väylän tekniset tiedot

I2C-väylä

El I2C-väylästä on tullut alan standardi, ja Arduino on ottanut sen käyttöön yhteydenpitoon sitä tarvitsevien oheislaitteiden kanssa. Se tarvitsee vain kaksi johtoa tai kaapelia toimintaansa varten, yhden kellosignaalia varten (CLK) ja toisen sarjatietojen (SDA) lähettämistä varten. Tämä on edullista verrattuna muihin tietoliikenneyhteyksiin SPI-väylään, vaikka sen toiminta on jonkin verran monimutkaisempi vaadittavien lisäpiirien vuoksi.

Tällä bussilla jokaisella siihen liitetyllä laitteella on osoite käytetään näiden laitteiden käyttämiseen erikseen. Tämä osoite on vahvistettu laitteistolla, muokkaamalla viimeiset 3 bittiä hyppyjohtimilla tai vaihtamalla DIP: itä, vaikka se voidaan tehdä myös ohjelmistolla. Jokaisella laitteella on yksilöllinen osoite, vaikka useilla laitteista voi olla sama osoite, ja saattaa olla tarpeen käyttää toissijaista väylää ristiriitojen välttämiseksi tai sen muuttamiseksi mahdollisuuksien mukaan.

Lisäksi I2C-väylällä on Master-Slave-tyyppinen arkkitehtuuri, eli isäntä-orja. Tämä tarkoittaa, että kun päälaite aloittaa viestinnän, se pystyy lähettämään tai vastaanottamaan dataa orjiltaan. Orjat eivät voi aloittaa viestintää, vain isäntä voi tehdä sen, eivätkä orjat myöskään voi puhua keskenään suoraan ilman isännän väliintuloa.

Jos sinulla on useat opettajat bussissa, vain yksi voi toimia opettajana samanaikaisesti. Mutta se ei ole sen arvoinen, koska opettajan vaihtaminen vaatii suurta monimutkaisuutta, joten se ei ole yleistä.

Muista, että master tarjoaa kellosignaalin kaikkien väylän laitteiden synkronoimiseksi. Tämä eliminoi tarpeen, että jokaisella orjalla olisi oma kellonsa.

I2C-väyläprotokolla ennustaa myös vetovastusten käyttöä syöttöjännitteissä (Vcc), vaikka näitä vastuksia ei yleensä käytetä Arduinon kanssa pull-up koska kirjastojen ohjelmointi koska lanka aktivoi sisäiset arvot 20-30 k. Tämä voi olla liian pehmeää joillekin projekteille, joten signaalin nousevat reunat ovat hitaampia, joten pienempiä nopeuksia ja lyhyempiä tiedonsiirtoetäisyyksiä voidaan käyttää. Korjaamiseksi sinun on ehkä asetettava ulkoiset vetovastukset välille 1k - 4k7.

signaali

I2C-signaali

La viestintäkehys joista I2C-väyläsignaali koostuu biteistä tai tiloista (Arduinossa käytetyt, koska I2C-standardi sallii muiden):

  • 8 bittiä, joista 7 on osoite orjalaite, jota haluat käyttää lähettämään tai vastaanottamaan tietoja siitä. 7 bitillä voidaan luoda jopa 128 erilaista osoitetta, jotta teoriassa olisi pääsy 128 laitteelle, mutta vain 112: lle, koska 16 on varattu erikoiskäyttöön. Ja lisäbitti, joka ilmoittaa, jos haluat lähettää tai vastaanottaa orjalaitteen tiedot.
  • On myös vahvistusbitti, jos se ei ole aktiivinen, tiedonsiirto ei ole kelvollinen.
  • Sitten datatavut että he haluavat lähettää tai vastaanottaa orjia. Jokainen tavu, kuten tiedät, koostuu 8-bittisestä. Huomaa, että jokaista lähetettyä tai vastaanotettua 8-bittistä tai 1 tavua dataa varten tarvitaan vielä 18 bittiä vahvistus-, osoite- jne., Mikä tarkoittaa, että väylän nopeus on hyvin rajoitettu.
  • Viimeinen pala validointi viestinnän.

Lisäksi kellotaajuus lähetykset ovat vakiona 100 MHz, vaikkakin nopeampi tila on 400 MHz.

I2C-väylän edut ja haitat

Las ventajas ääni:

  • yksinkertaisuus käyttämällä vain kahta riviä.
  • Se on mekanismeja tietääksesi onko signaali saapunut verrattuna muihin yhteyskäytäntöihin.

Las haitat ääni:

  • Nopeus melko alhainen lähetys.
  • Se ei ole täysi kaksipuolinen tulostus, toisin sanoen et voi lähettää ja vastaanottaa samanaikaisesti.
  • Ei käytä pariteettia eikä minkään muun tyyppistä varmennusmekanismia, jonka avulla tiedetään, ovatko vastaanotetut databitit oikeita.

I2C Arduinossa

Arduino I2C -väylä

En Arduino, mallista riippuen, neulat, jotka voidaan ottaa käyttöön tämän I2C-väylän kanssa, vaihtelevat. Esimerkiksi:

  • Arduino UNO, Nano, MiniPro: A4 käytetään SDA: lle (data) ja A5: lle SCK (kello).
  • arduino mega: tappi 20 SDA: lle ja 21 SCK: lle.

Muista, että voit käyttää sitä hyödyntää kirjastoa Johto. H Arduino IDE -koodeillesi, vaikka on muitakin I2C y i2cdevlib. Voit lukea näiden kirjastojen asiakirjat tai artikkelit kiinnostavista projekteista saadaksesi koodit sen ohjelmoinnista.

Kuinka tietää laitteen osoite, jotta sitä voidaan käyttää I2C: n kanssa?

Vain yksi viimeinen varoitus, ja kun ostat mikropiirejä eurooppalaisilta, japanilaisilta tai amerikkalaisilta valmistajilta, sinä ilmoita suunta joita sinun tulisi käyttää laitteessa. Toisaalta kiinalaiset eivät joskus tarkoita sitä tai se ei ole oikea, joten se ei toimi. Se voidaan helposti ratkaista osoiteskannerilla, jotta tiedät mihin suuntaan sinun pitäisi viitata luonnoksessasi.

La arduino-yhteisö on luonut tämän koodi skannata osoite ja tunnistaa se Yksinkertaisella tavalla. Vaikka näytän koodin täällä:

#include "Wire.h"
 
extern "C" { 
    #include "utility/twi.h"
}
 
void scanI2CBus(byte from_addr, byte to_addr, void(*callback)(byte address, byte result) ) 
{
  byte rc;
  byte data = 0;
  for( byte addr = from_addr; addr <= to_addr; addr++ ) {
    rc = twi_writeTo(addr, &data, 0, 1, 0);
    callback( addr, rc );
  }
}
 
void scanFunc( byte addr, byte result ) {
  Serial.print("addr: ");
  Serial.print(addr,DEC);
  Serial.print( (result==0) ? " Encontrado!":"       ");
  Serial.print( (addr%4) ? "\t":"\n");
}
 
 
const byte start_address = 8;
const byte end_address = 119;
 
void setup()
{
    Wire.begin();
 
    Serial.begin(9600);
    Serial.print("Escaneando bus I2C...");
    scanI2CBus( start_address, end_address, scanFunc );
    Serial.println("\nTerminado");
}
 
void loop() 
{
    delay(1000);
}


Ole ensimmäinen kommentti

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.