Yote kuhusu basi ya Arduino I2C

Basi ya Arduino I2C

na Arduino inaweza kuunda idadi kubwa ya miradi kama ulivyoona ukisoma Hwlibre, kupanga microcontroller kwa njia rahisi. Lakini kati ya uhusiano wa analog na dijiti wa bodi hii ya vifaa vya bure, kuna zingine ambazo bado hazijulikani kwa Kompyuta nyingi, kama uwezo wa kweli wa unganisho la PWM, SPI, pini za RX na TX za bandari ya serial, au mwenyewe I2C basi. Kwa hivyo, kwa kuingia hii unaweza angalau kujua kila kitu unachohitaji kutoka kwa I2C.

na basi la I2C unaweza kuunganisha na kutumia vifaa vingi vya mtu wa tatu ambavyo vina aina hii ya itifaki ya kuwasiliana na bodi ya Arduino. Kati yao, unaweza kuunganisha accelerometers, maonyesho, kaunta, dira, na mizunguko mingi iliyojumuishwa shukrani kwa uvumbuzi huu wa Philips.

I2C ni nini?

I2C inahusu Mzunguko ulioingiliana, ambayo ni, mzunguko uliounganishwa. Ni basi ya mawasiliano ya data ya serial iliyotengenezwa mnamo 1982 na kampuni ya Philips Semiconductors, ambayo leo ni Wasimamizi wa NXP baada ya kuondoa sehemu hii. Mwanzoni iliundwa kwa runinga za chapa hii, kuwasiliana na vidonge kadhaa vya ndani kwa njia rahisi. Lakini tangu 1990 I2C imeenea na inatumiwa na wazalishaji wengi.

Hivi sasa hutumiwa na watengenezaji kadhaa wa chip kwa kazi nyingi. Atmel, muundaji wa watawala wadogo wa bodi za Arduino, alianzisha jina la TWI (Wired Interface) kwa madhumuni ya kutoa leseni, ingawa ni sawa na I2C. Lakini mnamo 2006, hati miliki ya asili ilimalizika na haiko chini ya hakimiliki, kwa hivyo neno I2C limetumika tena (nembo tu inaendelea kulindwa, lakini utekelezaji wake au matumizi ya neno hilo hayazuiliwi).

Maelezo ya kiufundi ya basi ya I2C

Basi la I2C

El Basi ya I2C imekuwa kiwango cha tasnia, na Arduino ameitekeleza kwa mawasiliano na vifaa vya pembeni ambavyo vinahitaji. Inahitaji tu mistari miwili au nyaya kwa operesheni yake, moja kwa ishara ya saa (CLK) na nyingine kwa kutuma data ya serial (SDA). Hii ni faida ikilinganishwa na mawasiliano mengine ikilinganishwa na basi ya SPI, ingawa operesheni yake ni ngumu zaidi kwa sababu ya mizunguko ya ziada inayohitajika.

Kwenye basi hii kila kifaa kilichounganishwa nayo kina anwani kutumika kufikia vifaa hivi kivyake. Anwani hii imewekwa na vifaa, ikibadilisha bits 3 za mwisho kwa njia ya kuruka au kubadili DIP, ingawa inaweza pia kufanywa na programu. Kila kifaa kitakuwa na anwani ya kipekee, ingawa kadhaa zinaweza kuwa na anwani sawa na inaweza kuwa muhimu kutumia basi ya pili ili kuepusha mizozo au kuibadilisha ikiwezekana.

Kwa kuongeza, basi ya I2C ina Usanifu wa aina ya Master-Slave, Hiyo ni bwana mtumwa. Hii inamaanisha kuwa mawasiliano yanapoanzishwa na kifaa bora, itaweza kutuma au kupokea data kutoka kwa watumwa wake. Watumwa hawataweza kuanzisha mawasiliano, ni bwana tu anayeweza kuifanya, na wala watumwa hawawezi kuzungumza kwa moja kwa moja bila bwana kuingilia kati.

Ikiwa una walimu kadhaa kwenye basi, ni mmoja tu anayeweza kutenda kama mwalimu wakati huo huo. Lakini sio thamani, kwani mabadiliko ya mwalimu hudai ugumu wa hali ya juu, kwa hivyo sio mara kwa mara.

Kumbuka kwamba bwana hutoa ishara ya saa kulandanisha vifaa vyote kwenye basi. Hiyo inaondoa hitaji la kila mtumwa kuwa na saa yake mwenyewe.

Itifaki ya basi ya I2C pia hutabiri utumiaji wa vizuizi vya kuvuta kwenye laini za usambazaji wa umeme (Vcc), ingawa vipingaji hivi kawaida hazitumiwi na Arduino vuta-up kwa sababu maktaba za programu kwani waya huamsha zile za ndani na maadili ya 20-30 k. Hii inaweza kuwa laini sana kwa miradi mingine, kwa hivyo kingo zinazoongezeka za ishara zitakua polepole, kwa hivyo kasi ya chini na umbali mfupi wa mawasiliano zinaweza kutumika. Ili kurekebisha hiyo unaweza kuhitaji kuweka vipinga nje kutoka 1k hadi 4k7.

Ishara

Ishara ya I2C

 

La sura ya mawasiliano ambayo ishara ya basi ya I2C ina bits au majimbo (zile zinazotumiwa huko Arduino, kwani kiwango cha I2C kinaruhusu wengine):

  • Biti 8, 7 kati yao anuani ya kifaa cha watumwa ambacho unataka kufikia kutuma au kupokea data kutoka kwake. Na bits 7, hadi anwani 128 tofauti zinaweza kuundwa, kwa hivyo vifaa 128 vinaweza kupatikana kinadharia, lakini ni 112 tu zinaweza kupatikana, kwani 16 zimehifadhiwa kwa matumizi maalum. Na nyongeza ambayo inaonyesha ikiwa unataka tuma au pokea habari ya kifaa cha watumwa.
  • Kuna pia uthibitisho kidogo, ikiwa haifanyi kazi mawasiliano hayatakuwa halali.
  • Halafu data ka kwamba wanataka kutuma au kupokea na watumwa. Kila ka, kama unavyojua, imeundwa na bits-8. Kumbuka kuwa kwa kila 8-bit au 1 baiti ya data iliyotumwa au kupokea, nyongeza ya 18 ya uthibitishaji, anwani, n.k inahitajika, ambayo inamaanisha kuwa basi ni mdogo sana kwa kasi.
  • Kidogo cha mwisho cha uthibitisho ya mawasiliano.

Kwa kuongeza, mzunguko wa saa kwa maambukizi ni 100 Mhz kama kawaida, ingawa kuna hali ya haraka zaidi ya 400 Mhz.

Faida na hasara za basi ya I2C

the faida sauti:

  • Urahisi kwa kutumia tu mistari miwili.
  • Inayo njia za kujua ikiwa ishara imefika ikilinganishwa na itifaki zingine za mawasiliano.

the hasara sauti:

  • Kasi maambukizi ya chini kabisa.
  • Sio duplex kamiliHiyo ni, huwezi kutuma na kupokea wakati huo huo.
  • Haitumii usawa wala aina nyingine yoyote ya utaratibu wa uthibitishaji kujua ikiwa data zilizopokelewa ni sahihi.

 

 

I2C juu ya Arduino

Basi ya Arduino I2C

En Arduino, kulingana na mfanopini ambazo zinaweza kuwezeshwa kutumia basi hii ya I2C zinatofautiana. Kwa mfano:

  • Arduino UNO, Nano, MiniPro: A4 hutumiwa kwa SDA (data) na A5 kwa SCK (saa).
  • Mega Arduino: pini 20 kwa SDA na 21 kwa SCK.

Kumbuka kwamba kuitumia lazima tumia maktaba Waya.h kwa nambari zako za Arduino IDE, ingawa kuna zingine kama I2C y I2Cdevlib. Unaweza kusoma hati za maktaba hizi au nakala zetu kwenye miradi inayokuvutia kupata nambari za jinsi itakavyopangwa.

Jinsi ya kujua anwani ya kifaa kuitumia na I2C?

Onyo moja tu la mwisho, na hiyo ni kwamba unaponunua IC kutoka kwa wazalishaji wa Uropa, Kijapani au Amerika, wewe onyesha mwelekeo unapaswa kutumia kwa kifaa. Kwa upande mwingine, Wachina wakati mwingine hawaifafanulii kwa undani au sio sahihi, kwa hivyo haitafanya kazi. Hiyo inaweza kutatuliwa kwa urahisi na skana ya anwani ili kujua ni mwelekeo upi unapaswa kurejelea kwenye mchoro wako.

La jamii ya arduino imeunda hii nambari ya kukagua anwani na kuitambua Kwa njia rahisi. Ingawa ninakuonyesha nambari hapa:

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


Yaliyomo kwenye kifungu hicho yanazingatia kanuni zetu za maadili ya uhariri. Kuripoti kosa bonyeza hapa.

Kuwa wa kwanza kutoa maoni

Acha maoni yako

Anwani yako ya barua si kuchapishwa. Mashamba required ni alama na *

*

*

  1. Kuwajibika kwa data: Miguel Ángel Gatón
  2. Kusudi la data: Kudhibiti SpAM, usimamizi wa maoni.
  3. Uhalali: Idhini yako
  4. Mawasiliano ya data: Takwimu hazitawasilishwa kwa watu wengine isipokuwa kwa wajibu wa kisheria.
  5. Uhifadhi wa data: Hifadhidata iliyohifadhiwa na Mitandao ya Occentus (EU)
  6. Haki: Wakati wowote unaweza kupunguza, kuokoa na kufuta habari yako.