Tartalomjegyzék:
- 1. lépés: Mi az I²C és miért szeretjük?
- 2. lépés: Nézzük meg közelebbről
- 3. lépés: I²C és ZIO
- 4. lépés: Mennyi a kábel maximális hossza?
- 5. lépés: Hogyan lehet több eszközt csatlakoztatni ugyanazon a buszon?
- 6. lépés: Mi az I2C lezárás?
Videó: Bemutatjuk az I2C -t Zio modulokkal és Qwiic -el: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Robin Sharma elmondta: „Az apró napi fejlesztések idővel lenyűgöző eredményekhez vezetnek”. Lehet, hogy azt gondolja: „Jaj, újabb I2C bejegyzés?”. Nos, minden bizonnyal több ezer információ található az I2C -ről. De maradjon velünk, ez nem csak egy újabb I2C cikk. A Qwiic Connect System és a Zio perifériás kitörési táblák határozottan I²C játékváltók!
Bevezetés
Ha elektronikus projekteket épít, és félelmetes dolgokat csinál, akkor talán rájött, hogy ahogy a projektjei egyre nagyobbak lesznek, a kenyértábla kígyógödörnek tűnik (kicsit rendetlen, nem?).
Ezenkívül, ha több projektje van folyamatban, akkor sok időt tölt azzal, hogy vezetékeket vált projektről projektre.
Készítők vagyunk, ezért megértjük a küzdelmet. Legutóbbi hozzájárulásunk az OHS közösséghez egy ZIO nevű moduláris prototípus -rendszer, amely Qwiic összekötő rendszert alkalmaz. A Qwiic egy nagyon kényelmes módja annak, hogy az I²C -n keresztül kommunikálja a programozható áramkört az érzékelőkkel, a hajtóművekkel és a megszakító táblákkal.
1. lépés: Mi az I²C és miért szeretjük?
Az I²C a legszélesebb körben használt multi-master busz, ami azt jelenti, hogy különböző chipek csatlakoztathatók ugyanahhoz a buszhoz. Számos alkalmazásban használják a master és a slave, vagy több master és slave eszközök között. A mikrovezérlőktől az okostelefonokon át az ipari alkalmazásokig, különösen a videoeszközök, például a számítógép -monitorok esetében. Könnyen megvalósítható sok elektronikus kivitelben (és a közelmúltban még egyszerűbb a Qwiic csatlakozóval).
Ha két szóval kellene leírnunk az I²C -t, akkor valószínűleg az egyszerűséget és a rugalmasságot használnánk.
Az I²C egyik legnagyobb előnye más kommunikációs protokollokkal szemben, hogy kétvezetékes interfész, ami azt jelenti, hogy csak két jelvezetékre van szüksége, SDA (soros adatvonal) és SCL (soros óravonal). Lehet, hogy nem a leggyorsabb protokoll, de köztudott, hogy nagyon rugalmas, rugalmasságot biztosít a buszfeszültségben.
Egy másik jelentős jellemző, ami vonzóvá teszi ezt a buszt, a mester és a szolga közötti kapcsolat. Több eszköz is csatlakoztatható ugyanahhoz a buszhoz, és nincs szükség az eszközök közötti huzalozás megváltoztatására, mivel minden eszköz egyedi címmel rendelkezik (a mester kiválasztja a kommunikálni kívánt eszközt).
2. lépés: Nézzük meg közelebbről
Szóval, hogyan működik az I²C? Korábban már említettük, hogy az egyik legjelentősebb jellemző a feszültségráta, ez lehetséges, mivel az I²C nyílt kollektorot (más néven nyitott elvezetést) használ mind az SDA, mind az SCL kommunikációs vonalakhoz.
Az SCL az órajel, szinkronizálja az adatátvitelt az I²C buszon lévő eszközök között, és ezt a master generálja. Míg az SDA hordozza az adatokat, amelyeket a buszhoz csatlakoztatott érzékelőkről vagy más eszközökről küldhet vagy fogadhat.
A jel kimenete a földhöz van csatlakoztatva, ami azt jelenti, hogy minden eszköz alacsony. A jel magas helyreállításához mindkét vezeték pozitív tápfeszültségre van kötve egy lehúzható ellenálláson keresztül.
A ZIO modulok segítségével lefedtük Önt, minden kitörési táblánk tartalmazza a szükséges felhúzó ellenállást.
Az I²C egy üzenetprotokollt követ, hogy kommunikálja a mestert a slave eszközökkel. A két vonal (SCL és SDA) minden I²C slave -ben közös, a buszon lévő összes slave hallgatja az üzenetet.
Az üzenetprotokoll a mellékelt képen látható formátumot követi:
Első pillantásra bonyolultnak tűnhet, de van egy jó hírünk. Az Arduino IDE használatakor létezik a Wire.h könyvtár, amely egyszerűsíti az I²C üzenetprotokoll beállítását.
Az indítási feltétel akkor jön létre, amikor az adatvonal (SDA) alacsonyra csökken, miközben az óravonal (SCL) még mindig magas. Amikor egy projektet állítunk be az Arduino felületen, nem kell aggódnunk az indítási feltétel előállítása miatt, azt egy adott funkcióval kell kezdeményezni (Wire.beginTransmission (slaveAddress)).
Ezenkívül ez a funkció kezdeményezi az átvitelt az adott slave címmel. A megosztott buszon kommunikálni kívánt slave kiválasztásához a mester továbbítja a címet a slave számára, hogy kommunikáljon. Miután a cím beállítva, hogy kommunikáljon a megfelelő slave -vel, a kiválasztott módtól függően az üzenet olvasási vagy írási bittel érkezik.
A salve nyugtázással válaszol (ACK vagy NACK), és a buszon lévő többi szolgaberendezés kedvezményben részesíti a többi adatot, amíg az üzenet befejeződik és a busz ingyenes. Az ACK után a slave -ek belső címregiszterének sorozata folytatja az átvitelt.
Az adatok elküldésekor az átviteli üzenet leállási feltétellel zárul. Az átvitel befejezéséhez az adatvonal magasra változik, és az óravonal magas marad.
3. lépés: I²C és ZIO
Kitaláltuk, hogy az lenne a legjobb, ha a fenti információkat tervezném egy mester (más néven Zuino, a mi mikro) és a rabszolgák (más néven ZIO kitörő táblák) közötti beszélgetésben.
Ebben az alapvető példában a ZIO TOF távolságérzékelőt és a ZIO OLED kijelzőt használjuk. A TOF megadja a távolság információkat, míg a ZIO Oled megjeleníti az adatokat. A felhasznált alkatrészek és eszközök:
- ZUINO M UNO - a mester
- ZIO OLED kijelző - Slave_01
- ZIO TOF távolságérzékelő - Slave_02
- Qwiic kábel - Egyszerű csatlakoztatás I²C eszközökhöz
Íme, milyen egyszerű csatlakoztatni a táblákat egymáshoz a Qwiic segítségével, nincs szükség kenyérlapra, további kábelekre vagy ZUINO csapokra. A ZUINO soros óra és adatvonala a Qwiic csatlakozó segítségével automatikusan csatlakozik a távolságérzékelőhöz és az OLED -hez. A másik két kábel a 3V3 és a GND.
Először is nézzük meg a szükséges információkat, hogy kommunikálhassuk a mestert a rabszolgákkal, és ismernünk kell az egyedi címeket.
Eszköz: ZIO távolságérzékelő
- Cikkszám: RFD77402
- I2C Cím: 0x4C
- Adatlap link
Eszköz: ZIO OLED kijelző
- Rendelési szám: SSD1306
- Cím: 0x3C
- Adatlap link
A slave eszközök egyedi címének megtalálásához nyissa meg a mellékelt adatlapot. A távolságérzékelő esetében a cím a modul interfész szakaszában található. Minden érzékelőnek vagy alkatrésznek más adatlapja van, különböző információkkal. Néha nehéz lehet megtalálni egy 30 oldalas adatlapon (tipp: nyissa meg a keresőeszközt a PDF -megtekintőben, és írja be a „address” vagy „device ID” elemeket a gyors kereséshez).
Most, hogy az egyes eszközök egyedi címe ismert, az adatok olvasásához/ írásához be kell azonosítani a belső regisztercímet (szintén az adatlapból). A ZIO Távolságérzékelő adatlapján megnézve a távolság elérésének címe 0x7FF.
Ebben a konkrét esetben valóban nincs szükségünk ezekre az információkra az érzékelő használatához, mint a könyvtárnak.
A következő lépés, adja át a kódot. A ZUINO M UNO kompatibilis az Arduino IDE -vel, ami jelentősen megkönnyíti a telepítést. A projekthez szükséges könyvtárak a következők:
- Drót.h
- Adafruit_GFX.h
- Adafruit_SSD1306.h
- SparkFun_RFD77402_Arduino_Library.h
A Wire.h egy arduino könyvtár, a két Adafruit könyvtárat az OLED, az utolsót pedig a Távolság érzékelő használja. Tekintse meg ezt az oktatóanyagot a *.zip könyvtárak Arduino IDE -hez való összekapcsolásáról.
A kódot tekintve először a könyvtárakat kell deklarálni, valamint az OLED címét.
A beállításban () megkezdődik az átvitel, és megjelenik a szöveg a távolságérzékelő funkcióiról.
A hurok () méréseket végez a távolságon, és az OLED kinyomtatja.
Ellenőrizze a példa forráskódját a github linken.
Mindkét kitörőtábla használata nagyon egyszerű minden értelemben. A hardveres oldalon a Qwiic csatlakozó gyorsabbá és sokkal kevésbé rendetlenné teszi a hardver beállítását, mint a kenyérpult és az áthidaló vezetékek. A firmware esetében pedig a megfelelő könyvtárak használata az I2C kommunikációhoz, az érzékelő és a kijelző sokkal egyszerűbbé teszi a kódot.
4. lépés: Mennyi a kábel maximális hossza?
A maximális hossz az SDA és SCL felhúzó ellenállásaitól és a kábel kapacitásától függ. Az ellenállások meghatározzák a busz sebességét is, minél alacsonyabb a busz sebessége, annál hosszabb a kábelhatár. A kábel kapacitása korlátozza a buszon lévő eszközök számát, valamint a kábel hosszát. A tipikus alkalmazások korlátozzák a vezeték hosszát 2,5-3,5 m-re (9-12ft), de a használt kábeltől függően eltérések lehetnek. Referenciaként az árnyékolt 22 AWG sodrott érpárú kábeleket használó I2C alkalmazások maximális hossza körülbelül 1 m (3 láb) 100 kbaund, 10 m (30ft) 10 kbaud.
Vannak olyan webhelyek, mint a mogami vagy a WolframAlpha, amelyek lehetővé teszik a kábel hosszának becslését.
5. lépés: Hogyan lehet több eszközt csatlakoztatni ugyanazon a buszon?
Az I2C egy soros busz, ahol minden eszköz megosztott buszhoz van csatlakoztatva. A Qwiic csatlakozóval a különböző töréspanelek egymás után csatlakoztathatók a Qwiic csatlakozó segítségével. Minden táblán legalább 2 Qwiic csatlakozó található.
Különböző táblákat hoztunk létre a Qwiic és az I2C korlátozásainak megoldására. A Zio Qwiic adapterkártya Qwiic eszközökön keresztül történő csatlakoztatáshoz használható Qwiic csatlakozó nélkül, a Qwiic és a kenyérfal deszkás fejkábel használatával. Ez az egyszerű trükk korlátlan lehetőségeket teremt.
A különböző eszközök busz- vagy fahálózathoz való csatlakoztatásához a Zio Qwiic Hub -ot fejlesztettük ki.
Végül, de nem utolsó sorban a Zio Qwiic MUX lehetővé teszi két vagy több eszköz csatlakoztatását ugyanazon a címen.
6. lépés: Mi az I2C lezárás?
Az I2C leállításához szükséges, így a vonal szabadon adhat hozzá más eszközöket. Ez kissé zavaró lehet, mivel a lezáró kifejezést általában a busz felhúzó ellenállások leírására használják (az alapértelmezett állapot biztosítása érdekében, ebben az esetben az áramellátáshoz). A Zuino tábláknál az ellenállás értéke 4,7 kΩ.
Ha a befejezést kihagyják, a buszon egyáltalán nem lesz kommunikáció- a mester nem tudja generálni az indítási feltételt, így az üzenet nem kerül továbbításra a slave-ekhez.
További információkért és a Zio képességeiért nézze meg a Zio legújabb termékeit. A cikk célja, hogy elmagyarázza az I²C kommunikáció alapjait, és azt, hogyan működik a Zio és a Qwiic csatlakozóval. Kövesse velünk a további frissítéseket.
Ajánlott:
DIY Walkie-Talkie általános 433 MHz-es RF modulokkal: 4 lépés
DIY Walkie-Talkie általános 433 MHz-es RF modulokkal: Ebben a projektben megmutatom, hogyan kell használni az Ebay általános 433 MHz-es RF moduljait egy funkcionális Walkie-Talkie létrehozásához. Ez azt jelenti, hogy összehasonlítjuk a különböző RF modulokat, tanulunk egy kicsit a d osztályú erősítőről, és végül megépítjük a Walkie-Talkie-t
Robotkar Zio modulokkal 3. rész: 4 lépés
Robotkar Zio modulokkal 3. rész: Ez a blogbejegyzés a Zio Robotics sorozat része. Bevezetés Korábbi blogunkban közzétettük az 1. és 2. rész oktatóanyagát arról, hogyan lehet Zio modulok segítségével vezérelni egy robotkart. Az első rész többnyire a robotkar karjának automatikus vezérlésére összpontosított
Robotkar Zio modulokkal 2. rész: 11 lépés
Robotkar Zio modulokkal 2. rész: A mai oktatóanyagban mind a 4 szervót és egy PS2 vezeték nélküli vezérlőt fogjuk használni a robotkar vezérléséhez. Ez a blogbejegyzés a Zio Robotics sorozat része. Bevezetés Korábbi blogunkban közzétettük az 1. részt oktatóanyag a Robot Ar vezérléséről
Robotkar vezérlése Zio modulokkal 1. rész: 8 lépés
Robotkar vezérlése Zio modulokkal 1. rész: Ez a blogbejegyzés a Zio Robotics sorozat része. Ez a projekt megtanítja, hogyan kell kinyitni és bezárni a robotkar karját. Ezt az n
Bemutatjuk a „Deodorino” -t - az infravörös vezérlésű Arduino -t üres dezodorrúdban. Kattintson az 1. fényképre: 7 lépés
Bemutatjuk a „Deodorino” -t - az infravörös vezérlésű Arduino -t üres dezodorrúdban. Kattintson az 1. fényképre: Most menjen a részletekre