Turinys:
- 1 žingsnis: kas yra I²C ir kodėl mums tai patinka
- 2 žingsnis: pažvelkime atidžiau
- 3 žingsnis: I²C ir ZIO
- 4 žingsnis: koks yra maksimalus kabelio ilgis?
- 5 žingsnis: Kaip prijungti kelis įrenginius toje pačioje magistralėje?
- 6 žingsnis: kas yra I2C nutraukimas?
Video: Pristatome „I2C“su „Zio“moduliais ir „Qwiic“: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Robin Sharma sakė: „Maži kasdieniai patobulinimai laikui bėgant duoda stulbinančių rezultatų“. Galbūt galvojate: „O, dar vienas I2C įrašas?“. Žinoma, yra tūkstančiai informacijos apie I2C. Tačiau sekite naujienas, tai ne tik dar vienas I2C straipsnis. „Qwiic Connect System“ir periferinės „Zio“perjungimo plokštės tikrai yra „I²C“žaidimų keitikliai!
Įvadas
Jei kuriate elektroninius projektus ir darote nuostabius dalykus, galbūt supratote, kad didėjant jūsų projektams jūsų duonos lenta pradeda atrodyti kaip gyvatės duobė (šiek tiek netvarkinga, tiesa?).
Be to, jei vykdote kelis projektus, praleidžiate krūvą laiko perjungdami laidus iš vieno projekto į kitą.
Mes esame kūrėjai, todėl suprantame kovą. Naujausias mūsų indėlis į OHS bendruomenę yra modulinė prototipų sistema, vadinama ZIO, pritaikanti „Qwiic“jungiamąją sistemą. „Qwiic“yra labai patogus būdas perduoti programuojamą plokštę su jutikliais, pavaromis ir pertraukimo plokštėmis per I²C.
1 žingsnis: kas yra I²C ir kodėl mums tai patinka
„I²C“yra plačiausiai naudojama kelių magistralių magistralė, o tai reiškia, kad prie tos pačios magistralės galima prijungti įvairius lustus. Jis naudojamas daugelyje programų tarp pagrindinio ir pavaldinio arba kelių pagrindinių ir pavaldžių įrenginių. Nuo mikrovaldiklių, išmaniųjų telefonų iki pramoninių programų, ypač vaizdo įrenginių, tokių kaip kompiuterių monitoriai. Jis gali būti lengvai įdiegtas daugelyje elektroninių konstrukcijų (o pastaruoju metu dar lengviau naudojant „Qwiic“jungtį).
Jei turėtume apibūdinti I²C dviem žodžiais, tikriausiai naudosime paprastumą ir lankstumą.
Vienas iš didžiausių I²C pranašumų, palyginti su kitais ryšio protokolais, yra tai, kad tai dviejų laidų sąsaja, o tai reiškia, kad jai reikia tik dviejų signalų laidų - SDA (Serial Data Line) ir SCL (Serial Clock Line). Tai gali būti ne pats greičiausias protokolas, tačiau jis yra gerai žinomas kaip labai lankstus, leidžiantis lanksčiai valdyti magistralę.
Kita svarbi savybė, dėl kurios šis autobusas yra patrauklus, yra bendravimas tarp šeimininko ir vergo. Prie tos pačios magistralės galima prijungti kelis įrenginius ir nereikia keisti laidų tarp įrenginių, nes kiekvienas įrenginys turi unikalų adresą (kapitonas pasirenka įrenginį, kuriuo norite bendrauti).
2 žingsnis: pažvelkime atidžiau
Taigi, kaip veikia „I²C“? Anksčiau minėjome, kad viena iš svarbiausių savybių yra įtampos nuokrypis, tai įmanoma, nes „I²C“naudoja atvirą kolektorių (dar vadinamą atviru nutekėjimu) tiek SDA, tiek SCL ryšio linijoms.
SCL yra laikrodžio signalas, sinchronizuoja duomenų perdavimą tarp I²C magistralės įrenginių ir jį generuoja kapitonas. Nors SDA neša duomenis, skirtus siųsti ar gauti iš jutiklių ar kitų prie magistralės prijungtų įrenginių.
Signalo išėjimas yra prijungtas prie žemės, o tai reiškia, kad kiekvienas įrenginys yra žemas. Norint atkurti aukštą signalą, abi linijos yra prijungtos prie teigiamos maitinimo įtampos per ištraukiamą rezistorių, kuris turi būti nutrauktas.
Naudodami „ZIO“modulius, visos mūsų pertraukimo plokštės turi reikiamą traukiamąjį rezistorių.
„I²C“laikosi pranešimo protokolo, kad galėtų perduoti pagrindinį kompiuterį su vergais. Dvi linijos (SCL ir SDA) yra bendros visuose I²C verguose, visi vergai autobuse klausosi pranešimo.
Pranešimų protokolas atitinka formatą, parodytą pridedamame paveikslėlyje:
Iš pirmo žvilgsnio tai gali atrodyti sudėtinga, tačiau turime šiek tiek gerų naujienų. Naudojant „Arduino IDE“, yra biblioteka „Wire.h“, kad būtų supaprastinti visi „I²C“pranešimų protokolo nustatymai.
Pradžios sąlyga sukuriama, kai duomenų linija (SDA) nukrenta žemai, o laikrodžio linija (SCL) vis dar yra aukšta. Kurdami projektą „Arduino“sąsajoje, mums tikrai nereikia jaudintis dėl pradžios sąlygos sukūrimo, jis bus inicijuotas naudojant konkrečią funkciją (Wire.beginTransmission (slaveAddress)).
Be to, ši funkcija taip pat inicijuoja perdavimą konkrečiu vergo adresu. Norėdami pasirinkti vergą bendrauti bendroje magistralėje, šeimininkas perduoda adresą vergui bendrauti. Nustačius, kad adresas perduotų ryšį su atitinkamu vergu, pranešimas atsižvelgia į skaitymo arba rašymo bitą, priklausomai nuo pasirinkto režimo.
Tepalas duoda atsakymą patvirtindamas (ACK arba NACK), o kiti pavarų įrenginiai, esantys magistralėje, atleidžia likusius duomenis, kol pranešimas bus baigtas ir magistralė bus nemokama. Po ACK perdavimas tęsiamas vergų vidinio adresavimo registro seka.
Kai duomenys siunčiami, perdavimo pranešimas baigiasi sustabdymo sąlyga. Norėdami baigti perdavimą, duomenų linija pasikeičia į aukštą, o laikrodžio linija išlieka aukšta.
3 žingsnis: I²C ir ZIO
Mes supratome, kad geriausia būtų suplanuoti visą aukščiau pateiktą informaciją pokalbyje tarp šeimininko (dar žinomas kaip Zuino, mūsų mikro) ir vergų (dar žinomas kaip ZIO pertraukimo lentos).
Šiame pagrindiniame pavyzdyje mes naudojame ZIO TOF atstumo jutiklį ir ZIO OLED ekraną. TOF pateikia informaciją apie atstumą, o „ZIO Oled“rodo duomenis. Naudojami komponentai ir prietaisai:
- ZUINO M UNO - meistras
- „ZIO OLED“ekranas - „Slave_01“
- ZIO TOF atstumo jutiklis - vergas_02
- „Qwiic“kabelis - lengvas prijungimas prie „I²C“įrenginių
Štai kaip paprasta prijungti plokštes viena prie kitos naudojant „Qwiic“, nereikia duonos lentos, papildomų kabelių arba ZUINO kaiščių. ZUINO serijinis laikrodis ir duomenų linija automatiškai prijungiama prie atstumo jutiklio ir OLED naudojant „Qwiic“jungtį. Kiti du kabeliai yra 3V3 ir GND.
Pirmiausia pažvelkime į reikalingą informaciją, kad galėtume bendrauti su šeimininku su vergais, kuriuos mums reikia žinoti unikaliais adresais.
Įrenginys: ZIO atstumo jutiklis
- Dalies numeris: RFD77402
- I2C adresas: 0x4C
- Duomenų lapo nuoroda
Įrenginys: ZIO OLED ekranas
- Dalies numeris: SSD1306
- Adresas: 0x3C
- Duomenų lapo nuoroda
Norėdami rasti unikalų pavaldžių įrenginių adresą, atidarykite pateiktą duomenų lapą. Atstumo jutiklio adresas nurodomas modulio sąsajos skyriuje. Kiekvienas jutiklis ar komponentas turi skirtingą duomenų lapą su skirtinga informacija. Kartais gali būti sudėtinga jį rasti 30 puslapių duomenų lape (užuomina: atidarykite paieškos įrankį PDF peržiūros priemonėje ir įveskite „adresas“arba „įrenginio ID“, kad galėtumėte greitai ieškoti).
Dabar, kai žinomas kiekvieno įrenginio unikalus adresas, norint skaityti/ rašyti duomenis, reikia nustatyti vidinio registro adresą (taip pat iš duomenų lapo). Pažvelgus į ZIO atstumo jutiklio duomenų lapą, adresas, skirtas atstumui gauti, atitinka 0x7FF.
Šiuo konkrečiu atveju mums tikrai nereikia šios informacijos, kad galėtume naudoti jutiklį, kaip tai jau daro biblioteka.
Kitas žingsnis - padėkite kodą. „ZUINO M UNO“yra suderinamas su „Arduino IDE“, o tai labai palengvina sąranką. Šiam projektui reikalingos bibliotekos:
- Viela.h
- Adafruit_GFX.h
- Adafruit_SSD1306.h
- SparkFun_RFD77402_Arduino_Library.h
„Wire.h“yra „arduino“biblioteka, dvi „Adafruit“bibliotekos naudojamos OLED, o paskutinės - atstumo jutikliui. Peržiūrėkite šią pamoką, kaip susieti *.zip bibliotekas su „Arduino IDE“.
Žvelgiant į kodą, pirmiausia reikia deklaruoti bibliotekas ir OLED adresą.
Sąrankoje () prasideda perdavimas ir rodomas atstumo jutiklio funkcijos tekstas.
Ciklas () matuoja atstumą, o OLED jį spausdina.
Patikrinkite šaltinio kodo pavyzdį „github“nuorodoje.
Naudoti abi pertraukimo plokštes yra gana paprasta visomis prasmėmis. Aparatinės įrangos pusėje „Qwiic“jungtis pagreitina aparatūros sąranką ir yra daug mažiau netvarkinga nei turint duonos lentą ir trumpiklius. O programinės įrangos atveju, naudojant atitinkamas I2C ryšio bibliotekas, jutiklį ir ekraną, kodas tampa daug paprastesnis.
4 žingsnis: koks yra maksimalus kabelio ilgis?
Maksimalus ilgis priklauso nuo traukimo varžų, naudojamų SDA ir SCL, ir kabelio talpos. Rezistoriai taip pat nustato magistralės greitį, kuo mažesnis magistralės greitis, tuo ilgesnė kabelio riba. Kabelio talpa riboja magistralėje esančių įrenginių skaičių ir kabelio ilgį. Įprastos programos riboja laido ilgį iki 2,5–3,5 m (9–12 pėdų), tačiau gali skirtis priklausomai nuo naudojamo kabelio. Pavyzdžiui, maksimalus ilgis I2C programose, kuriose naudojami ekranuoti 22 AWG vytos poros kabeliai, yra apie 1 m (3 pėdos) esant 100 kbaund, 10 m (30 pėdų) esant 10 kbaud.
Yra keletas svetainių, tokių kaip „mogami“ar „WolframAlpha“, kurios leidžia įvertinti kabelio ilgį.
5 žingsnis: Kaip prijungti kelis įrenginius toje pačioje magistralėje?
I2C yra nuoseklioji magistralė, kurioje visi įrenginiai yra prijungti prie bendros magistralės. Naudojant „Qwiic“jungtį, skirtingos pertraukimo plokštės gali būti sujungtos viena po kitos naudojant „Qwiic“jungtį. Kiekviena plokštė turi mažiausiai 2 „Qwiic“jungtis.
Mes sukūrėme skirtingas plokštes, kad išspręstume kai kuriuos „Qwiic“ir „I2C“apribojimus. „Zio Qwiic“adapterio plokštė naudojama prijungti per „Qwiic“įrenginius be „Qwiic“jungties, naudojant „Qwiic“prie duonos lentos vyriškojo antraštės kabelio. Šis paprastas triukas sukuria neribotas galimybes.
Norėdami prijungti įvairius įrenginius autobusų ar medžių tinkle, mes sukūrėme „Zio Qwiic Hub“.
Paskutinis, bet ne mažiau svarbus dalykas - „Zio Qwiic MUX“leidžia prijungti du ar daugiau įrenginių tuo pačiu adresu.
6 žingsnis: kas yra I2C nutraukimas?
I2C turi būti nutrauktas, todėl linija gali laisvai pridėti kitų įrenginių. Tai gali būti šiek tiek painu, nes nutraukimo terminas dažniausiai naudojamas apibūdinti magistralės traukimo rezistorius (kad būtų suteikta numatytoji būsena, šiuo atveju-tiekti srovę į grandinę). „Zuino“plokštėms rezistoriaus vertė yra 4,7 kΩ.
Jei nutraukimas bus praleistas, magistralėje nebus jokio ryšio- kapitonas negalės sukurti pradžios sąlygos, todėl pranešimas nebus perduotas vergams.
Norėdami gauti daugiau informacijos ir „Zio“galimybių, patikrinkite naujausius „Zio“produktus. Šio straipsnio tikslas yra paaiškinti I²C ryšio pagrindus ir kaip jis veikia su „Zio“ir „Qwiic“jungtimi. Sekite naujienas.
Rekomenduojamas:
Pasidaryk pats „Walkie-Talkie“su bendrais 433MHz RF moduliais: 4 žingsniai
Pasidaryk pats „Walkie-Talkie“su bendrais 433MHz RF moduliais: Šiame projekte parodysiu, kaip naudoti bendrus „Ebay“433 MHz RF modulius, kad būtų sukurtas funkcionalus „Walkie-Talkie“. Tai reiškia, kad palyginsime skirtingus RF modulius, šiek tiek sužinosime apie d klasės stiprintuvą ir galiausiai sukursime „Walkie-Talkie“
Robotinė ranka su „Zio“moduliais 3 dalis: 4 žingsniai
Robotų ranka su „Zio“moduliais 3 dalis. Šis tinklaraščio įrašas yra „Zio Robotics“serijos dalis. Įvadas Ankstesniame tinklaraštyje paskelbėme 1 ir 2 dalių vadovėlį, kaip valdyti robotinę ranką naudojant „Zio“modulius. 1 dalis daugiausia skirta automatiniam jūsų robotų rankos letenos valdymui
Robotų ranka su „Zio“moduliais 2 dalis: 11 žingsnių
Robotinė ranka su „Zio“moduliais 2 dalis. Šiandienos pamokoje mes naudosime visas 4 servo sistemas ir PS2 belaidį valdiklį, kad valdytume robotą. Šis tinklaraščio įrašas yra „Zio Robotics“serijos dalis. Įvadas Ankstesniame tinklaraštyje paskelbėme 1 dalį pamoka, kaip valdyti robotą
Pristatome „Deodorino“- infraraudonųjų spindulių valdomą „Arduino“tuščioje dezodoranto lazdelėje. Spustelėkite 1 -ą nuotrauką: 7 žingsniai
Pristatome „Deodorino“- infraraudonųjų spindulių valdomą „Arduino“tuščioje dezodoranto lazdelėje. Spustelėkite 1 -ą nuotrauką: dabar pereikite prie detalių
Užšifruokite savo asmeninius duomenis. Pristatome „Truecrypt“!: 8 žingsniai
Užšifruokite savo asmeninius duomenis .. Pristatome „Truecrypt“!: Na, jums gali kilti klausimas, kas, po velnių, yra „Truecrypt“? Na, „Truecrypt“yra programa, leidžianti užšifruoti daugybę duomenų ir tai padaryti labai paprasta. Taigi sekite. Šifravimo metodai apima AES-256, „Serpent“ir „Twofish“(kombinaciją