Све о аутобусу Ардуино И2Ц

Ардуино И2Ц аутобус

са Ардуино може створити велики број пројеката као што сте видели ако сте читали Хвлибре, програмирање микроконтролера на једноставан начин. Али између аналогне и дигиталне везе на овој плочи hardware libre, постоје неки који су још увек донекле непознати многим почетницима, као што је прави потенцијал ПВМ веза, СПИ, РКС и ТКС пинова серијског порта или сама И2Ц магистрала. Због тога ћете са овим уносом моћи барем да знате све што вам је потребно о И2Ц.

са аутобус И2Ц можете да повежете и користите многе независне уређаје који имају ову врсту протокола за комуникацију са Ардуино плочом. Између њих можете повезати акцелерометре, дисплеје, бројач, компасе и још много интегрисаних кола захваљујући овом Пхилипсовом изуму.

Шта је И2Ц?

И2Ц се односи на међусобно интегрисани круг, односно интер-интегрисано коло. То је серијска магистрала за комуникацију података коју је 1982. године развила компанија Пхилипс Семицондуцторс, а која је данас НКСП Семицондуцторс након што се решила овог одељка. У почетку је створен за телевизоре ове марке како би на једноставан начин комуницирали са неколико интерних чипова. Али од 1990. године И2Ц се шири и користе га многи произвођачи.

Тренутно их користе десетине произвођача чипова за више функција. Атмел, творац микроконтролера за Ардуино плоче, увео је ознаку ТВИ (Тво Виред Интерфаце) из разлога лиценцирања, иако је идентична са И2Ц. Али 2006. године, оригиналном патенту је истекао рок и више није предмет ауторских права, па је термин И2Ц поново употребљен (само логотип је и даље заштићен, али његова примена или употреба тог израза није ограничена).

Технички детаљи И2Ц сабирнице

И2Ц аутобус

El И2Ц магистрала постала је индустријски стандард, а Ардуино га је применио за комуникацију са периферним уређајима којима је то потребно. За рад су му потребне само две линије или каблови, један за сигнал сата (ЦЛК), а други за слање серијских података (СДА). Ово је повољно у поређењу са осталим комуникацијама у поређењу са СПИ магистралом, иако је његов рад нешто сложенији због потребних додатних кола.

У овом аутобусу сваки уређај повезан са њим има адресу користи се за појединачни приступ овим уређајима. Ова адреса је фиксирана хардвером, модификујући последња 3 бита помоћу џампера или преклопних ДИП-ова, мада то може учинити и софтвер. Сваки уређај ће имати јединствену адресу, мада неколико њих може имати исту адресу и можда ће бити потребно користити секундарну магистралу како би се избегли сукоби или ако је могуће промени.

Поред тога, И2Ц магистрала има и Архитектура типа Мастер-Славе, односно господар-роб. То значи да ће, када главни уређај започне комуникацију, моћи да шаље или прима податке од својих робова. Робови неће моћи да иницирају комуникацију, то може учинити само господар, а робови не могу директно да разговарају једни с другима без интервенције господара.

Ако јеси неколико наставника у аутобусу, само један може истовремено да делује као наставник. Али то не вреди, јер промена наставника захтева високу сложеност, па није честа.

Имајте на уму да мастер даје сигнал такта за синхронизацију свих уређаја на магистрали. То елиминише потребу да сваки роб има свој сат.

И2Ц протокол сабирнице такође предвиђа употребу пулл-уп отпорника у водовима напона напајања (Вцц), иако се ови отпорници обично не користе са Ардуином повлачење јер библиотеке за програмирање као што Жича активира унутрашње са вредностима од 20-30 к. Ово може бити премекано за неке пројекте, па ће растуће ивице сигнала бити спорије, па се могу користити ниже брзине и краћа комуникациона удаљеност. Да бисте то исправили, можда ће бити потребно поставити спољне натезне отпорнике од 1к до 4к7.

Сигнал

И2Ц сигнал

La комуникациони оквир од којих се И2Ц магистрални сигнал састоји од битова или стања (оних која се користе у Ардуину, јер И2Ц стандард дозвољава и друге):

  • 8 битова, од тога 7 адреса славе уређаја којем желите да приступите да бисте са њега слали или примали податке. Са 7 битова може се створити до 128 различитих адреса, тако да би теоретски могло да се приступи 128 уређајима, али само 112, јер је 16 резервисано за посебне намене. И додатни бит који означава ако желите послати или примити информације о помоћном уређају.
  • Ту је и бит провере, ако није активан, комуникација неће бити важећа.
  • Затим бајтови података које желе да пошаљу или приме робови. Као што знате, сваки бајт се састоји од 8 битова. Имајте на уму да је за сваки 8-битни или 1 бајт посланих или примљених података потребно додатних 18 битова валидације, адресе итд., Што значи да је магистрала врло ограничена у брзини.
  • Последњи део валидација комуникације.

Поред тога, фреквенција такта за пренос је стандардно 100 МХз, иако постоји бржи режим рада на 400 МХз.

Предности и недостаци И2Ц магистрале

Тхе предност звук:

  • Једноставност употребом само две линије.
  • Има механизми да се зна да ли је сигнал стигао у поређењу са осталим протоколима комуникације.

Тхе недостаци звук:

  • Брзина прилично низак пренос.
  • То није пуни дуплекс, односно не можете истовремено слати и примати.
  • Не користи паритет нити било који други тип верификационог механизма да би се знало да ли су примљени битови података тачни.

И2Ц на Ардуину

Ардуино И2Ц аутобус

En Ардуино, у зависности од модела, пинови који се могу омогућити за употребу ове И2Ц магистрале варирају. На пример:

  • Arduino UNO, Нано, Мини Про: А4 се користи за СДА (подаци), а А5 за СЦК (сат).
  • Ардуино Мега: пин 20 за СДА и 21 за СЦК.

Имајте на уму да за његово коришћење морате искористити библиотеку Жица.х за ваше Ардуино ИДЕ кодове, мада постоје и други ИКСНУМКСЦ y И2Цдевлиб. Можете прочитати документе ових библиотека или наше чланке о пројектима који вас занимају да бисте добили кодове како би се то могло програмирати.

Како знати адресу уређаја да бисте је користили са И2Ц?

Само последње упозорење, а то је да када купујете ИЦ од европских, јапанских или америчких произвођача, ви назначити правац требало би да користите за уређај. С друге стране, Кинези то понекад не детаљно описују или није тачно, па неће успети. То се лако може решити помоћу скенера адреса да бисте знали у ком правцу треба да се обратите на скици.

La ардуино заједница је створио ово код за скенирање адресе и идентификацију На једноставан начин. Иако вам овде показујем код:

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


Будите први који ће коментарисати

Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.