INHOUDSOPGAWE:

Bekendstelling van I2C met Zio -modules en Qwiic: 6 stappe
Bekendstelling van I2C met Zio -modules en Qwiic: 6 stappe

Video: Bekendstelling van I2C met Zio -modules en Qwiic: 6 stappe

Video: Bekendstelling van I2C met Zio -modules en Qwiic: 6 stappe
Video: BigTreeTech SKR 1.4 - Basics 2024, Julie
Anonim
Bekendstelling van I2C met Zio -modules en Qwiic
Bekendstelling van I2C met Zio -modules en Qwiic

Robin Sharma het gesê: 'Klein daaglikse verbeterings mettertyd lei tot wonderlike resultate'. U dink miskien: 'Ag, nog 'n I2C -pos?'. Daar is beslis duisende inligting oor I2C. Maar bly ingeskakel, dit is nie net nog 'n I2C -artikel nie. Qwiic Connect System en Zio perifere uitbreekborde is beslis I²C -spelwisselaars!

Inleiding

As u elektroniese projekte bou en wonderlike dinge doen, sou u moontlik besef het dat u broodbord soos 'n slangput lyk, namate u projekte groter word.

Boonop, as u verskeie projekte aan die gang het, spandeer u baie tyd daaraan om die drade van projek na projek te verander.

Ons is makers, so ons verstaan die stryd. Ons mees onlangse bydrae tot die OHS -gemeenskap is 'n modulêre prototiperingstelsel genaamd ZIO, wat Qwiic -aansluitstelsel aanneem. Qwiic is 'n baie maklike manier om 'n programmeerbare printplaat via I²C aan sensors, aandrywers en uitbreekborde te kommunikeer.

Stap 1: Wat is I²C en waarom ons daarvan hou

Wat is I²C en waarom ons daarvan hou
Wat is I²C en waarom ons daarvan hou

I²C is die multi-meesterbus wat die meeste gebruik word, wat beteken dat verskillende skyfies aan dieselfde bus gekoppel kan word. Dit word gebruik in baie toepassings tussen 'n meester en slaaf of meerdere meester- en slawe -toestelle. Van mikrobeheerders, tot slimfone, tot industriële toepassings, veral vir video -toestelle soos rekenaarmonitors. Dit kan maklik geïmplementeer word in baie elektroniese ontwerpe (en onlangs nog makliker met die Qwiic -aansluiting).

As ons I²C in twee woorde moes beskryf, sou ons waarskynlik eenvoud en buigsaamheid gebruik.

Een van die grootste voordele van I²C bo ander kommunikasieprotokolle is dat dit 'n tweedraads koppelvlak is, wat beteken dat dit slegs twee seindrade benodig, SDA (Serial Data Line) en SCL (Serial Clock Line). Dit is moontlik nie die vinnigste protokol nie, maar dit is bekend daarvoor dat dit baie buigsaam is, wat buigsaamheid in busspanning moontlik maak.

Nog 'n belangrike kenmerk wat hierdie bus aantreklik maak, is die gemeenskap tussen meester en slaaf. Daar kan verskeie toestelle aan dieselfde bus gekoppel word en daar hoef nie die bedrading tussen toestelle te verander nie, aangesien elke toestel 'n unieke adres het (die meester kies die toestel om te kommunikeer).

Stap 2: Kom ons kyk van naderby

Kom ons kyk van naderby
Kom ons kyk van naderby
Kom ons kyk van naderby
Kom ons kyk van naderby
Kom ons kyk van naderby
Kom ons kyk van naderby
Kom ons kyk van naderby
Kom ons kyk van naderby

Dus, hoe werk I²C? Vroeër het ons genoem dat die spanningstoelaag een van die belangrikste kenmerke is; dit is moontlik, aangesien I²C 'n oop kollektor (ook bekend as oop drein) gebruik vir beide SDA- en SCL -kommunikasielyne.

SCL is die kloksein, sinchroniseer die data -oordrag tussen die toestelle op die I²C -bus en dit word deur die meester gegenereer. Terwyl SDA die data dra om te stuur of te ontvang van die sensors of ander toestelle wat aan die bus gekoppel is.

Die uitset na die sein word aan die grond gekoppel, wat beteken dat elke toestel so laag is. Om die sein na hoog te herstel, word beide lyne verbind met 'n positiewe voedingsspanning deur 'n optrekweerstand wat beëindig moet word.

Met ZIO -modules het ons u gedek, al ons uitbreekborde bevat die nodige optrekweerstand.

I²C volg 'n boodskapprotokol om die meester met slawe -toestelle te kommunikeer. Die twee lyne (SCL en SDA) is algemeen in alle I²C -slawe, alle slawe in die bus luister na die boodskap.

Die boodskapprotokol volg die formaat wat in die aangehegte prent getoon word:

Dit lyk met die eerste oogopslag ingewikkeld, maar ons het 'n bietjie goeie nuus. As u Arduino IDE gebruik, is daar die biblioteek Wire.h om die opstelling van die I²C -boodskapprotokol te vereenvoudig.

Die beginvoorwaarde word gegenereer wanneer die datalyn (SDA) laag daal terwyl die kloklyn (SCL) steeds hoog is. By die opstel van 'n projek op die Arduino -koppelvlak hoef ons nie regtig bekommerd te wees oor die opwekking van die beginvoorwaarde nie; dit sal met 'n spesifieke funksie (Wire.beginTransmission (slaveAddress)) begin word.

Boonop begin hierdie funksie ook die oordrag met die spesifieke slaafadres. Om die slaaf te kies om op die gedeelde bus te kommunikeer, gaan die meester die adres deur na die slaaf om te kommunikeer. Nadat die adres ingestel is om met die ooreenstemmende slaaf te kommunikeer, volg die boodskap met 'n lees- of skryfbit, afhangende van die gekose modus.

Die slaaf gee 'n antwoord met 'n erkenning (ACK of NACK), en ander slawe -toestelle op die bus verminder die res van die data totdat die boodskap voltooi is en die bus gratis is. Na die ACK gaan 'n reeks van 'n interne adresregister van die slawe voort met die oordrag.

As die data gestuur word, eindig die oordragboodskap met 'n stoptoestand. Om die oordrag te beëindig, verander die datalyn na hoog en die kloklyn bly hoog.

Stap 3: I²C en ZIO

I²C en ZIO
I²C en ZIO

Ons het agtergekom dat dit die beste sou wees om alle inligting hierbo te bloudruk in 'n gesprek tussen 'n meester (ook Zuino, ons mikro) en slawe (ook bekend as ZIO -uitbreekborde).

In hierdie basiese voorbeeld gebruik ons die ZIO TOF afstandsensor en die ZIO OLED Display. Die TOF gee die afstandsinligting terwyl die ZIO Oled die data vertoon. Die komponente en toestelle wat gebruik word:

  • ZUINO M UNO - die Meester
  • ZIO OLED -skerm - Slave_01
  • ZIO TOF Afstandsensor - Slave_02
  • Qwiic -kabel - Maklike verbinding vir I²C -toestelle

Hier is hoe maklik dit is om die planke met mekaar te verbind met Qwiic, geen broodbord nodig nie, ekstra kabels of ZUINO -penne. Die seriële klok en data -lyn van die ZUINO word outomaties met die afstandsensor en OLED verbind deur die Qwiic -aansluiting te gebruik. Die twee ander kabels is die 3V3 en GND.

Eerstens, kyk na die nodige inligting, om die meester met die slawe te kommunikeer, wat ons nodig het om die unieke adresse te ken.

Toestel: ZIO Afstandsensor

  • Onderdeelnommer: RFD77402
  • I2C -adres: 0x4C
  • Gegevensbladskakel

Toestel: ZIO OLED -skerm

  • Onderdeelnommer: SSD1306
  • Adres: 0x3C
  • Gegevensbladskakel

Om die unieke adres vir die slawe -toestelle te vind, maak die gegewensblad oop. Vir die afstandsensor word die adres verskaf by die module -koppelvlak. Elke sensor of komponent het 'n ander datablad met verskillende inligting. Dit kan soms 'n uitdaging wees om dit op 'n datablad van 30 bladsye te vind (wenk: maak die vindhulpmiddel in die PDF -kyker oop en tik 'adres' of 'apparaat -ID' vir 'n vinnige soektog).

Noudat die unieke adres vir elke toestel bekend is, om data te lees/ skryf, moet die interne registeradres geïdentifiseer word (ook uit die datablad). Kyk na die datablad van die ZIO -afstandsensor, die adres vir die afstand kom ooreen met 0x7FF.

In hierdie spesifieke geval het ons hierdie inligting regtig nie nodig om die sensor te gebruik nie, aangesien die biblioteek dit reeds doen.

Volgende stap, stuur die kode in. ZUINO M UNO is verenigbaar met Arduino IDE, wat die opstelling baie makliker maak. Die biblioteke wat benodig word vir hierdie projek is die volgende:

  • Draad.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • SparkFun_RFD77402_Arduino_Library.h

Wire.h is 'n arduino -biblioteek, die twee Adafruit -biblioteke word gebruik vir die OLED en die laaste vir die afstandsensor. Lees hierdie handleiding oor hoe om *.zip -biblioteke aan Arduino IDE te koppel.

As ons na die kode kyk, moet die biblioteke eers verklaar word, sowel as die adres vir die OLED.

In die opstelling () begin die oordrag en word teks vertoon vir die afstandsensorfunksionaliteit.

Die lus () meet die afstand en die OLED druk dit af.

Gaan die voorbeeld bronkode na op die github -skakel.

Die gebruik van beide uitbreekborde is in alle opsigte redelik maklik. Aan die hardeware kant maak die Qwiic -aansluiting die hardeware -opset vinniger en baie minder deurmekaar as om 'n broodbord en jumperdrade te hê. En vir die firmware, deur die ooreenstemmende biblioteke vir die I2C -kommunikasie te gebruik, maak die sensor en die skerm die kode baie eenvoudiger.

Stap 4: Wat is die maksimum kabellengte?

Die maksimum lengte hang af van die optrekweerstands wat gebruik word vir SDA en SCL en die kabelkapasiteit. Die weerstande bepaal ook die busspoed, hoe laer die busspoed, hoe langer is die kabelgrens. Die kabelkapasiteit beperk die aantal toestelle op die bus, sowel as die kabellengte. Tipiese toepassings beperk die draadlengte tot 2,5-3,5m (9-12ft), maar daar is 'n afwyking afhangende van die kabel wat gebruik word. Ter verwysing is die maksimum lengte op I2C -toepassings met afgeskermde 22 AWG -gedraaide paarkabels ongeveer 1 m (3 voet) by 100 kbaund, 10 m (30ft) by 10kbaud.

Daar is 'n paar webwerwe soos mogami of WolframAlpha waarmee u die kabellengte kan skat.

Stap 5: Hoe om verskeie toestelle op dieselfde bus aan te sluit?

Hoe om verskeie toestelle op dieselfde bus aan te sluit?
Hoe om verskeie toestelle op dieselfde bus aan te sluit?
Hoe om verskeie toestelle op dieselfde bus aan te sluit?
Hoe om verskeie toestelle op dieselfde bus aan te sluit?

I2C is 'n reeksbus waar alle toestelle aan 'n gedeelde bus gekoppel is. Met Qwiic -aansluiting kan die verskillende uitbreekborde na mekaar verbind word met behulp van die Qwiic -aansluiting. Elke bord het ten minste 2 Qwiic -verbindings.

Ons het verskillende borde gemaak om sommige van die Qwiic- en I2C -beperkings op te los. Zio Qwiic -adapterbord word gebruik om via Qwiic -toestelle aan te sluit sonder 'n Qwiic -aansluiting, met behulp van Qwiic na 'n broodbord -manlike kopkabel. Hierdie eenvoudige truuk skep onbeperkte moontlikhede.

Om verskillende toestelle op 'n bus- of boomnetwerk aan te sluit, het ons die Zio Qwiic Hub gekry.

Laastens, maar nie die minste nie, laat die Zio Qwiic MUX toe om twee of meer toestelle met dieselfde adres te verbind.

Stap 6: Wat is die I2C -beëindiging?

I2C is nodig om te beëindig, sodat die lyn gratis is om ander toestelle by te voeg. Dit kan 'n bietjie verwarrend wees, aangesien die beëindigingsterm algemeen gebruik word om die optelweerstands van die bus te beskryf (om 'n standaardtoestand te bied, in hierdie geval om stroom aan die stroombaan te voorsien). Vir Zuino -borde is die weerstandwaarde 4,7kΩ.

As die beëindiging weggelaat word, sal daar glad nie kommunikasie op die bus wees nie- die meester sou nie die starttoestand kon genereer nie, dus word die boodskap nie na die slawe oorgedra nie.

Raadpleeg die nuutste Zio -produkte vir meer inligting en Zio -vermoëns. Die doel van hierdie artikel is om die basiese beginsels van I²C te verduidelik en hoe dit met Zio en Qwiic -aansluiting werk. Bly ingeskakel vir meer opdaterings.

Aanbeveel: