Kollox dwar ix-xarabank Arduino I2C

Xarabank Arduino I2C

ma Arduino jista 'joħloq numru kbir ta' proġetti kif rajt jekk taqra Hwlibre, l-ipprogrammar tal-mikrokontrollur b'mod sempliċi. Iżda fost il-konnessjonijiet analogi u diġitali ta 'dan il-bord tal-hardware b'xejn, hemm xi wħud li għadhom kemmxejn mhux magħrufa għal ħafna jibdew, bħall-potenzjal veru tal-konnessjonijiet PWM, l-SPI, il-pinnijiet RX u TX tal-port serjali, jew il- xarabank I2C stess. Għalhekk, b'din l-entrata tista 'mill-inqas tkun taf dak kollu li għandek bżonn mill-I2C.

ma ix-xarabank I2C tista 'tikkonnettja u tuża ħafna apparati ta' partijiet terzi li għandhom dan it-tip ta 'protokoll biex jikkomunikaw mal-bord Arduino. Bejniethom, tista 'tqabbad aċċellerometri, wirjiet, counter, kumpassi, u ħafna aktar ċirkwiti integrati grazzi għal din l-invenzjoni ta' Philips.

X'inhu I2C?

I2C jirreferi għal Inter-Integated Circuit, jiġifieri, ċirkwit inter-integrat. Huwa xarabank ta 'komunikazzjoni ta' dejta serjali żviluppat fl-1982 mill-kumpanija Philips Semiconductors, li llum hija NXP Semiconductors wara li teħles minn din it-taqsima. Għall-ewwel inħoloq għat-televixins ta 'din il-marka, biex jikkomunikaw diversi ċipep interni b'mod sempliċi. Iżda mill-1990 l-I2C infirex u jintuża minn bosta manifatturi.

Bħalissa jintuża minn għexieren ta 'produtturi taċ-ċipep għal funzjonijiet multipli. Atmel, il-kreatur tal-mikrokontrolluri għal bordijiet Arduino, introduċa d-denominazzjoni TWI (Żewġ Interfatti bil-Wajers) għal raġunijiet ta 'liċenzjar, għalkemm hija identika għall-I2C. Iżda fl-2006, il-privattiva oriġinali skadiet u m'għadhiex suġġetta għad-drittijiet tal-awtur, u għalhekk it-terminu I2C reġa 'ntuża (il-logo biss ikompli jiġi protett, iżda l-implimentazzjoni jew l-użu tiegħu tat-terminu mhuwiex ristrett).

Dettalji tekniċi tal-karozza tal-linja I2C

Xarabank I2C

El I2C bus saret standard tal-industrija, u Arduino implimentaha għal komunikazzjoni ma ’periferali li għandhom bżonnha. Jeħtieġ biss żewġ linji jew kejbils għat-tħaddim tiegħu, waħda għas-sinjal tal-arloġġ (CLK) u l-oħra biex tibgħat dejta serjali (SDA). Dan huwa ta 'vantaġġ meta mqabbel ma' komunikazzjonijiet oħra meta mqabbel max-xarabank SPI, għalkemm it-tħaddim tiegħu huwa kemmxejn aktar kumpless minħabba ċ-ċirkwiti addizzjonali meħtieġa.

Fuq din ix-xarabank kull apparat konness miegħu għandu indirizz użati biex jaċċessaw dawn l-apparati individwalment. Dan l-indirizz huwa ffissat permezz ta 'hardware, u jimmodifika l-aħħar 3 bits permezz ta' jumpers jew switch DIPs, għalkemm jista 'jsir ukoll permezz ta' softwer. Kull apparat ikollu indirizz uniku, għalkemm bosta minnhom jista 'jkollhom l-istess indirizz u xarabank sekondarja jista' jkollha bżonn tintuża biex tevita kunflitti jew tibdilha jekk possibbli.

Barra minn hekk, ix-xarabank I2C għandha Arkitettura tat-tip Master-Slave, jiġifieri, kaptan-skjav. Dan ifisser li meta l-komunikazzjoni tinbeda minn apparat ewlieni, tkun tista 'tibgħat jew tirċievi dejta mill-iskjavi tagħha. L-iskjavi ma jkunux jistgħu jibdew komunikazzjoni, il-kaptan biss jista 'jagħmel dan, u l-iskjavi lanqas ma jistgħu jitkellmu ma' xulxin direttament mingħajr l-intervent tal-kaptan.

Jekk għandek diversi għalliema fuq ix-xarabank, wieħed biss jista 'jaġixxi bħala għalliem simultanjament. Iżda mhux ta 'siwi, peress li l-bidla ta' għalliem titlob kumplessità għolja, u għalhekk mhix frekwenti.

Żomm f'moħħok li master jipprovdi s-sinjal tal-arloġġ biex jissinkronizza l-apparat kollu fuq ix-xarabank. Dan jelimina l-ħtieġa li kull skjav ikollu l-għassa tiegħu stess.

Il-protokoll tal-bus I2C jipprevedi wkoll l-użu ta 'pull-up resistors fil-linji tal-vultaġġ tal-provvista (Vcc), għalkemm dawn ir-resistors normalment ma jintużawx ma' Arduino pull-up minħabba li l-ipprogrammar ta 'libreriji billi Wire jattiva dawk interni b’valuri ta ’20-30 k. Dan jista 'jkun artab wisq għal xi proġetti, għalhekk it-truf li jogħlew tas-sinjal ikunu aktar bil-mod, u għalhekk jistgħu jintużaw veloċitajiet aktar baxxi u distanzi iqsar ta' komunikazzjoni. Biex tikkoreġi dak jista 'jkollok bżonn tissettja resistors pull-up esterni minn 1k sa 4k7.

Sinjal

Sinjal I2C

 

La qafas ta ’komunikazzjoni li minnhom sinjal tal-bus I2C jikkonsisti fil-bits jew stati (dawk użati f'Arduino, peress li l-istandard I2C jippermetti lil oħrajn):

  • 8 bits, 7 minnhom ta ' direzzjoni tat-tagħmir skjav li trid taċċessa biex tibgħat jew tirċievi dejta minnu. B’7 bits, jistgħu jinħolqu sa 128 indirizz differenti, allura 128 apparat jista ’teoretikament jiġi aċċessat, iżda 112 biss jista’ jiġi aċċessat, peress li 16 huma riservati għal użi speċjali. U l-bit addizzjonali li jindika jekk tridx tibgħat jew tirċievi informazzjoni dwar apparat skjav.
  • Hemm ukoll bit ta 'validazzjoni, jekk ma tkunx attiva l-komunikazzjoni ma tkunx valida.
  • Imbagħad il - bytes tad-dejta li jridu jibagħtu jew jirċievu mill-iskjavi. Kull byte, kif tafu, huwa magħmul minn 8-bits. Innota li għal kull 8-bit jew 1 byte ta 'dejta mibgħuta jew riċevuta, huma meħtieġa 18-il bit addizzjonali ta' validazzjoni, indirizz, eċċ, li jfisser li l-karozza tal-linja hija limitata ħafna fil-veloċità.
  • A bit finali ta ' validazzjoni tal-komunikazzjoni.

Barra minn hekk, il-frekwenza tal-arloġġ għal trasmissjonijiet hija 100 Mhz bħala standard, għalkemm hemm modalità aktar mgħaġġla f'400 Mhz.

Vantaġġi u żvantaġġi tax-xarabank I2C

il vantaġġi ħoss:

  • Sempliċità billi tuża biss żewġ linji.
  • Għandha mekkaniżmi biex tkun taf jekk wasalx is-sinjal meta mqabbla ma ’protokolli ta’ komunikazzjoni oħra.

il żvantaġġi ħoss:

  • Veloċità trasmissjoni pjuttost baxxa.
  • Mhuwiex duplex sħiħ, jiġifieri, ma tistax tibgħat u tirċievi simultanjament.
  • Ma jużax parità u lanqas xi tip ieħor ta 'mekkaniżmu ta' verifika biex tkun taf jekk il-bits tad-dejta riċevuti humiex korretti.

 

 

I2C fuq Arduino

Xarabank Arduino I2C

En Arduino, skont il-mudell, il-pinnijiet li jistgħu jiġu attivati ​​biex jużaw din ix-xarabank I2C ivarjaw. Pereżempju:

  • Arduino UNO, Nano, MiniPro: A4 jintuża għal SDA (dejta) u A5 għal SCK (arloġġ).
  • Mega Arduino: pin 20 għal SDA u 21 għal SCK.

Ftakar li biex tużah trid tagħmel użu mill-librerija Wajer.h għall-kodiċijiet Arduino IDE tiegħek, għalkemm hemm oħrajn bħal dawn I2C y I2Cdevlib. Tista 'taqra d-dokumenti ta' dawn il-libreriji jew l-artikli tagħna dwar il-proġetti li jinteressawk biex tikseb kodiċi ta 'kif tkun ipprogrammata.

Kif tkun taf l-indirizz ta 'apparat biex tużah ma' I2C?

Aħħar twissija biss, u li meta tixtri ICs minn manifatturi Ewropej, Ġappuniżi jew Amerikani, int indika d-direzzjoni għandek tuża għall-apparat. Min-naħa l-oħra, iċ-Ċiniżi kultant ma jiddettaljawhx jew mhuwiex korrett, allura mhux se jaħdem. Dik tista 'tissolva faċilment bi skaner tal-indirizzi biex tkun taf liema direzzjoni għandek tirreferi għaliha fl-iskeċċ tiegħek.

La komunità arduino ħoloq dan kodiċi biex tiskannja l-indirizz u tidentifikah B’mod sempliċi. Għalkemm jurik il-kodiċi eżatt hawn:

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


Il-kontenut tal-artikolu jaderixxi mal-prinċipji tagħna ta ' etika editorjali. Biex tirrapporta żball ikklikkja hawn.

Kun l-ewwel li tikkummenta

Ħalli l-kumment tiegħek

Your email address mhux se jkun ippubblikat. oqsma meħtieġa huma mmarkati bl *

*

*

  1. Responsabbli għad-dejta: Miguel Ángel Gatón
  2. Għan tad-dejta: Kontroll SPAM, ġestjoni tal-kummenti.
  3. Leġittimazzjoni: Il-kunsens tiegħek
  4. Komunikazzjoni tad-dejta: Id-dejta ma tiġix ikkomunikata lil partijiet terzi ħlief b'obbligu legali.
  5. Ħażna tad-dejta: Bażi tad-dejta ospitata minn Occentus Networks (UE)
  6. Drittijiet: Fi kwalunkwe ħin tista 'tillimita, tirkupra u tħassar l-informazzjoni tiegħek.