Minden az Arduino I2C buszról

Arduino I2C busz

a Az Arduino számos projektet hozhat létre mint látta, ha olvassa a Hwlibre-t, a mikrovezérlő egyszerű programozása. De az analóg és a digitális csatlakozások között ezen a táblán hardware libre, vannak olyanok, amelyek sok kezdő számára még ismeretlenek, mint például a PWM kapcsolatok valódi potenciálja, az SPI, a soros port RX és TX lábai vagy maga az I2C busz. Ezért ezzel a bejegyzéssel legalább mindent megtudhat, amire szüksége van az I2C-ről.

a az I2C busz sok olyan harmadik féltől származó eszközt csatlakoztathat és használhat, amelyek rendelkeznek ilyen típusú protokollal az Arduino táblával való kommunikációhoz. Közöttük a Philips találmányának köszönhetően gyorsulásmérőket, kijelzőket, számlálót, iránytűket és még sok más integrált áramkört csatlakoztathat.

Mi az I2C?

Az I2C az integrált áramkörre utal, azaz inter-integrált áramkör. Ez egy soros adatkommunikációs busz, amelyet 1982-ben fejlesztett ki a Philips Semiconductors cég, amely ma NXP Semiconductors, miután megszabadult ettől a szakasztól. Eleinte az ilyen márkájú televíziók számára hozták létre, hogy több belső chipet egyszerű módon kommunikáljanak. De 1990 óta az I2C elterjedt, és sok gyártó használja.

Jelenleg több tucat chipgyártó használja több funkcióhoz. Atmel, az Arduino táblák mikrovezérlőinek megalkotója engedélyezési okokból bevezette a TWI (Two Wired Interface) jelölést, bár azonos az I2C-vel. De 2006-ban az eredeti szabadalom lejárt, és már nem tartozik a szerzői jogok hatálya alá, ezért az I2C kifejezést újrafelhasználta (továbbra is csak a logó védett, de annak megvalósítását vagy használatát nem korlátozzák).

I2C busz műszaki adatai

I2C busz

El Az I2C busz ipari szabvány lett, és az Arduino implementálta a perifériákkal való kommunikációhoz, amelyekre szükségük van. Csak két vezetékre vagy kábelre van szüksége a működéséhez, az egyik az órajelhez (CLK), a másik a soros adatok küldéséhez (SDA). Ez előnyös a többi kommunikációhoz képest az SPI buszhoz képest, bár működése valamivel összetettebb a szükséges további áramkörök miatt.

Ezen a buszon minden hozzá csatlakoztatott eszköznek van címe ezeknek az eszközöknek az egyénileg történő eléréséhez használatos. Ezt a címet hardver rögzíti, az utolsó 3 bitet jumperekkel vagy DIP kapcsolókkal módosítja, bár szoftveresen is megtehető. Minden eszköznek egyedi címe lesz, bár közülük többnek ugyanaz lehet a címe, és előfordulhat, hogy egy másodlagos buszt kell használni az ütközések elkerülése, vagy ha lehetséges, megváltoztatása.

Ezenkívül az I2C buszon van egy Master-Slave típusú architektúra, vagyis mester-rabszolga. Ez azt jelenti, hogy amikor a kommunikációt egy master eszköz kezdi meg, akkor képes adatokat küldeni vagy fogadni rabszolgáitól. A rabszolgák nem lesznek képesek kezdeményezni a kommunikációt, csak a mester képes rá, és a rabszolgák sem beszélhetnek közvetlenül egymással a mester közreműködése nélkül.

Ha van több tanár a buszon, csak egy léphet tanárként egyszerre. De nem éri meg, mivel a tanárváltás nagy bonyolultságot igényel, ezért nem gyakori.

Ne feledje, hogy a A master biztosítja az órajelet a buszon lévő összes eszköz szinkronizálásához. Így nincs szükség arra, hogy minden rabszolgának saját órája legyen.

Az I2C buszprotokoll a felhúzási ellenállások használatát is előírja a tápfeszültség vezetékekben (Vcc), bár ezeket az ellenállásokat általában nem használják felhúzás, mert a könyvtárak programozása mivel a vezeték 20-30 k értékkel aktiválja a belső vezetékeket. Ez egyes projekteknél túl halk lehet, ezért a jel emelkedő szélei lassabbak lesznek, így alacsonyabb sebességek és rövidebb kommunikációs távolságok használhatók. Ennek kijavításához szükség lehet külső felhúzási ellenállások beállítására 1k és 4k7 között.

Jel

I2C jel

La kommunikációs keret ebből egy I2C buszjel bitekből vagy állapotokból áll (az Arduino-ban használtak, mivel az I2C szabvány lehetővé teszi másoknak is):

  • 8 bit, közülük 7 cím annak a szolga eszköznek a neve, amelyhez hozzáférni szeretne, hogy adatokat küldjön vagy fogadjon tőle. 7 bit segítségével akár 128 különféle cím is létrehozható, így elméletileg 128 eszközhöz lehetne hozzáférni, de csak a 112-hez lehet hozzáférni, mivel 16 speciális felhasználásra van fenntartva. És a további bit, amely jelzi, ha akarja küld vagy fogad a rabszolga eszközével kapcsolatos információk.
  • Van is egy érvényesítő bit, ha nem aktív, a kommunikáció nem lesz érvényes.
  • Aztán a adat bájtok hogy a rabszolgák által akarnak küldeni vagy fogadni. Minden bájt, mint tudják, 8 bitből áll. Vegye figyelembe, hogy minden elküldött vagy fogadott 8 bites vagy 1 bájtos adathoz további 18 bit ellenőrzésre, címre stb. Van szükség, ami azt jelenti, hogy a busz sebessége nagyon korlátozott.
  • Egy utolsó darab érvényesítés a kommunikáció.

Ezen felül az óra frekvenciája a az átvitel alapkivitelben 100 Mhz, bár van gyorsabb mód 400 Mhz-en.

Az I2C busz előnyei és hátrányai

az előny hang:

  • egyszerűség csak két vonal használatával.
  • Megvan mechanizmusok annak megismerésére, hogy megérkezett-e a jel összehasonlítva más kommunikációs protokollokkal.

az hátrányok hang:

  • Sebesség meglehetősen alacsony átviteli sebesség.
  • Ez nem teljes duplex, vagyis nem küldhet és fogadhat egyszerre.
  • Nem használja a paritást sem semmilyen más típusú ellenőrzési mechanizmus, amelyből kiderül, hogy a kapott adatbitek helyesek-e.

I2C az Arduinón

Arduino I2C busz

En Arduino, modelltől függően, az I2C busz használatához engedélyezhető csapok eltérőek lehetnek. Például:

  • Arduino UNO, Nano, MiniPro: A4 az SDA (adatok) és az A5 az SCK (óra) esetén.
  • Mega Arduino: 20 tű az SDA és 21 az SCK számára.

Ne feledje, hogy a használatához meg kell használja ki a könyvtárat Huzal.h az Arduino IDE kódjaihoz, bár vannak más hasonlóak is I2C y i2cdevlib. Elolvashatja e könyvtárak dokumentumait vagy az Önt érdeklő projektekről szóló cikkeinket, hogy megszerezhesse a programozásának kódjait.

Hogyan lehet megtudni egy eszköz címét az I2C-vel való használatához?

Csak egy utolsó figyelmeztetés: ez az, amikor európai, japán vagy amerikai gyártókól vásárol IC-ket, akkor Ön jelezze az irányt használja az eszközhöz. Másrészt a kínaiak néha nem részletezik, vagy nem helyes, ezért nem fog működni. Ez könnyen megoldható egy címolvasóval, hogy megtudja, melyik irányra kell hivatkoznia a vázlatán.

La arduino közösség létrehozta ezt kódot a cím beolvasásához és azonosításához Egyszerű módon. Bár itt mutatom meg a kódot:

#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);
}


Legyen Ön az első hozzászóló

Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.