Popeth am fws Arduino I2C

Bws Arduino I2C

gyda Gall Arduino greu nifer fawr o brosiectau fel y gwelsoch a ydych yn darllen Hwlibre, rhaglennu'r microcontroller mewn ffordd syml. Ond ymhlith cysylltiadau analog a digidol y bwrdd caledwedd rhad ac am ddim hwn, mae yna rai sy'n dal i fod ychydig yn anhysbys i lawer o ddechreuwyr, megis gwir botensial y cysylltiadau PWM, yr SPI, pinnau RX a TX y porthladd cyfresol, neu'r bws I2C ei hun. Felly, gyda'r cofnod hwn gallwch o leiaf wybod popeth sydd ei angen arnoch o'r I2C.

gyda y bws I2C gallwch gysylltu a defnyddio llawer o ddyfeisiau trydydd parti sydd â'r math hwn o brotocol i gyfathrebu â bwrdd Arduino. Rhyngddynt, gallwch gysylltu cyflymromedrau, arddangosfeydd, cownter, cwmpawdau, a llawer mwy o gylchedau integredig diolch i'r ddyfais Philips hon.

Beth yw I2C?

Mae I2C yn cyfeirio at Gylchdaith Ryng-Integredig, hynny yw, cylched rhyng-integredig. Mae'n fws cyfathrebu data cyfresol a ddatblygwyd ym 1982 gan gwmni Philips Semiconductors, sydd heddiw yn NXP Semiconductors ar ôl cael gwared ar yr adran hon. Ar y dechrau fe'i crëwyd ar gyfer setiau teledu o'r brand hwn, i gyfathrebu sawl sglodyn mewnol mewn ffordd syml. Ond er 1990 mae'r I2C wedi lledu ac yn cael ei ddefnyddio gan lawer o weithgynhyrchwyr.

Yn cael ei ddefnyddio ar hyn o bryd gan ddwsinau o wneuthurwyr sglodion ar gyfer sawl swyddogaeth. Cyflwynodd Atmel, crëwr y microcontrolwyr ar gyfer byrddau Arduino, ddynodiad TWI (Rhyngwyneb Dau Wired) at ddibenion trwyddedu, er ei fod yn union yr un fath ag I2C. Ond yn 2006, daeth y patent gwreiddiol i ben ac nid yw bellach yn destun hawlfraint, felly mae'r term I2C wedi'i ailddefnyddio (dim ond y logo sy'n parhau i gael ei warchod, ond nid yw ei weithrediad na'i ddefnydd o'r term wedi'i gyfyngu).

Manylion technegol bysiau I2C

Bws I2C

El Mae bws I2C wedi dod yn safon diwydiant, ac mae Arduino wedi ei weithredu ar gyfer cyfathrebu â pherifferolion sydd ei angen. Dim ond dwy linell neu geblau sydd eu hangen arno ar gyfer ei weithrediad, un ar gyfer signal y cloc (CLK) a'r llall ar gyfer anfon data cyfresol (SDA). Mae hyn yn fanteisiol o'i gymharu â chyfathrebiadau eraill o'i gymharu â'r bws SPI, er bod ei weithrediad ychydig yn fwy cymhleth oherwydd y cylchedwaith ychwanegol sy'n ofynnol.

Ar y bws hwn mae gan bob dyfais sy'n gysylltiedig â hi gyfeiriad a ddefnyddir i gyrchu'r dyfeisiau hyn yn unigol. Mae'r cyfeiriad hwn yn sefydlog gan galedwedd, gan addasu'r 3 darn olaf trwy siwmperi neu switsh DIPs, er y gall meddalwedd ei wneud hefyd. Bydd gan bob dyfais gyfeiriad unigryw, er y gallai fod gan sawl un ohonynt yr un cyfeiriad ac efallai y bydd angen defnyddio bws eilaidd i osgoi gwrthdaro neu ei newid os yn bosibl.

Yn ogystal, mae gan y bws I2C a Pensaernïaeth math Master-Slave, hynny yw, meistr-gaethwas. Mae hyn yn golygu pan fydd cyfathrebu yn cael ei gychwyn gan brif ddyfais, bydd yn gallu anfon neu dderbyn data gan ei gaethweision. Ni fydd y caethweision yn gallu cychwyn cyfathrebu, dim ond y meistr all ei wneud, ac ni all y caethweision siarad â'i gilydd yn uniongyrchol heb ymyrraeth y meistr.

Os oes gennych chi sawl athro ar y bws, dim ond un all weithredu fel athro ar yr un pryd. Ond nid yw'n werth chweil, gan fod newid athro yn gofyn am gymhlethdod uchel, felly nid yw'n aml.

Cadwch mewn cof bod y meistr yn darparu signal y cloc i gydamseru pob dyfais ar y bws. Mae hynny'n dileu'r angen i bob caethwas gael ei oriawr ei hun.

Mae protocol bysiau I2C hefyd yn rhagweld defnyddio gwrthyddion tynnu i fyny yn y llinellau foltedd cyflenwi (Vcc), er nad yw'r gwrthyddion hyn fel arfer yn cael eu defnyddio gydag Arduino tynnu i fyny oherwydd llyfrgelloedd rhaglennu gan fod Wire yn actifadu'r rhai mewnol gyda gwerthoedd o 20-30 k. Gall hyn fod yn rhy feddal i rai prosiectau, felly bydd ymylon cynyddol y signal yn arafach, felly gellir defnyddio cyflymderau is a phellteroedd cyfathrebu byrrach. I gywiro efallai y bydd angen i chi osod gwrthyddion tynnu i fyny allanol o 1k i 4k7.

Arwydd

Signal I2C

 

La ffrâm gyfathrebu y mae signal bws I2C yn cynnwys y darnau neu'r taleithiau (y rhai a ddefnyddir yn Arduino, gan fod y safon I2C yn caniatáu i eraill):

  • 8 darn, 7 ohonyn nhw o cyfeiriad o'r ddyfais gaethweision yr ydych am gael mynediad ati i anfon neu dderbyn data ohoni. Gyda 7 darn, gellir creu hyd at 128 o gyfeiriadau gwahanol, felly yn ddamcaniaethol gellid cyrchu 128 o ddyfeisiau, ond dim ond 112 y gellir eu cyrchu, gan fod 16 wedi'u cadw at ddefnydd arbennig. A'r darn ychwanegol sy'n nodi os ydych chi eisiau anfon neu dderbyn gwybodaeth am ddyfais caethweision.
  • Mae yna hefyd darn dilysu, os nad yw'n weithredol ni fydd y cyfathrebiad yn ddilys.
  • Yna y beitiau data eu bod am anfon neu dderbyn gan y caethweision. Mae pob beit, fel y gwyddoch, yn cynnwys 8 darn. Sylwch, ar gyfer pob 8-did neu 1 beit o ddata a anfonir neu a dderbynnir, mae angen 18 darn ychwanegol o ddilysu, cyfeiriad, ac ati, sy'n golygu bod y bws yn gyfyngedig iawn o ran cyflymder.
  • Tip olaf o dilysu o'r comunication.

Yn ogystal, amledd y cloc ar gyfer mae trosglwyddiadau yn 100 Mhz fel safon, er bod modd cyflymach yn 400 Mhz.

Manteision ac anfanteision y bws I2C

y ventajas sain:

  • Symlrwydd trwy ddefnyddio dwy linell yn unig.
  • Mae wedi mecanweithiau i wybod a yw'r signal wedi cyrraedd o'i gymharu â phrotocolau cyfathrebu eraill.

y anfanteision sain:

  • Cyflymder trosglwyddiad eithaf isel.
  • Nid yw'n ddeublyg llawnhynny yw, ni allwch anfon a derbyn ar yr un pryd.
  • Nid yw'n defnyddio cydraddoldeb nac unrhyw fath arall o fecanwaith gwirio i wybod a yw'r darnau data a dderbyniwyd yn gywir.

 

 

I2C ar Arduino

Bws Arduino I2C

En Arduino, yn dibynnu ar y model, mae'r pinnau y gellir eu galluogi i ddefnyddio'r bws I2C hwn yn amrywio. Er enghraifft:

  • Arduino UNO, Nano, MiniPro: Defnyddir A4 ar gyfer SDA (data) ac A5 ar gyfer SCK (cloc).
  • Arduino Mega: pin 20 ar gyfer SDA a 21 ar gyfer SCK.

Cofiwch fod yn rhaid i chi ei ddefnyddio defnyddio'r llyfrgell Gwifren.h ar gyfer eich codau IDG Arduino, er bod eraill fel I2C y I2Cdevlib. Gallwch ddarllen dogfennau'r llyfrgelloedd hyn neu ein herthyglau ar y prosiectau sydd o ddiddordeb ichi gael codau o sut y byddai'n cael ei raglennu.

Sut i wybod cyfeiriad dyfais i'w ddefnyddio gydag I2C?

Un rhybudd olaf yn unig, a dyna pryd rydych chi'n prynu ICs gan wneuthurwyr Ewropeaidd, Japaneaidd neu Americanaidd, chi nodwch y cyfeiriad y dylech ei ddefnyddio ar gyfer y ddyfais. Ar y llaw arall, weithiau nid yw'r Tsieineaid yn ei fanylu neu nid yw'n gywir, felly ni fydd yn gweithio. Gellir datrys hynny'n hawdd gyda sganiwr cyfeiriad i wybod i ba gyfeiriad y dylech chi gyfeirio at eich braslun.

La cymuned arduino wedi creu hyn cod i sganio'r cyfeiriad a'i adnabod Mewn ffordd syml. Er fy mod yn dangos y cod i chi yma:

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


Mae cynnwys yr erthygl yn cadw at ein hegwyddorion moeseg olygyddol. I riportio gwall cliciwch yma.

Bod y cyntaf i wneud sylwadau

Gadewch eich sylw

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. Meysydd gofynnol yn cael eu marcio â *

*

*

  1. Yn gyfrifol am y data: Miguel Ángel Gatón
  2. Pwrpas y data: Rheoli SPAM, rheoli sylwadau.
  3. Cyfreithlondeb: Eich caniatâd
  4. Cyfathrebu'r data: Ni fydd y data'n cael ei gyfleu i drydydd partïon ac eithrio trwy rwymedigaeth gyfreithiol.
  5. Storio data: Cronfa ddata wedi'i chynnal gan Occentus Networks (EU)
  6. Hawliau: Ar unrhyw adeg gallwch gyfyngu, adfer a dileu eich gwybodaeth.