- Шта је И2Ц комуникацијски протокол?
- Како И2Ц комуникација функционише?
- Где користити И2Ц комуникацију?
- И2Ц на Нувотон Н76Е003 - Захтеви за хардвер
- Повезивање АТ24ЛЦ64 са Нувотон Н76Е003 - дијаграм кола
- И2Ц пинови на Нувотон Н76Е003
- И2Ц комуникација у Н76Е003
- Програмирање Н76Е003 за И2Ц комуникацију
- Трептање кода и резултата
У огромном систему уграђених апликација ниједан микроконтролер не може сам да обавља све активности. У некој фази времена мора да комуницира са другим уређајима ради размене информација, постоји много различитих врста комуникационих протокола за дељење ових информација, али најчешће коришћени су УСАРТ, ИИЦ, СПИ и ЦАН. Сваки комуникацијски протокол има своју предност и недостатак. За сада се фокусирајмо на ИИЦ део, јер ћемо то научити у овом упутству. Ако сте нови овде, погледајте туторијале за Нувотон у којима смо разговарали о свим периферним уређајима микроконтролера Н76Е003 од самог основног водича за почетак рада. Ако желите да научите како да користите И2Ц са другим микроконтролерима, можете погледати доње везе.
- Како се користи И2Ц у Ардуину: Комуникација између две Ардуино плоче
- И2Ц комуникација са ПИЦ микроконтролером ПИЦ16Ф877
- Повезивање 16Кс2 ЛЦД-а са ЕСП32 помоћу И2Ц
- И2Ц комуникација са МСП430 Лаунцхпад
- Повезивање ЛЦД-а са НодеМЦУ без употребе И2Ц
- Како се рукује вишеструким комуникацијама (И2Ц СПИ УАРТ) у једном програму Ардуина
И2Ц је важан комуникацијски протокол који је развио Пхилипс (сада НКСП). Коришћењем овог И2Ц протокола, МЦУ се може повезати са више уређаја и започети комуникацију. И2Ц ради са само две жице, наиме СДА и СЦЛ. Тамо где СДА значи серијски подаци, а СЦЛ серијски сат. Међутим, ова два пина захтевају пулл-уп отпорнике до нивоа ВЦЦ напона и са одговарајућим пулл-уп отпорником, магистрала може да подржи 127 уређаја са јединственом адресом.
Шта је И2Ц комуникацијски протокол?
Термин ИИЦ означава „ Интер интегрисани кругови “. Обично се означава као И2Ц или И на квадрат Ц или чак као протокол двожичног интерфејса (ТВИ) на неким местима, али све то значи исто. И2Ц је синхрони комуникацијски протокол, што значи да оба уређаја који деле информације морају да деле заједнички сигнал сата. Има само две жице за размену информација од којих се једна користи за сигнал сата, а друга за слање и примање података.
Како И2Ц комуникација функционише?
И2Ц комуникацију је први представио Пхиллипс. Као што је раније речено, има две жице, ове две жице ће бити повезане преко два уређаја. Овде се један уређај назива мастер, а други уређај славе. Комуникација треба и увек ће се одвијати између двоје, господара и роба. Предност И2Ц комуникације је у томе што се на Мастер може повезати више подређених уређаја.
Комплетна комуникација одвија се кроз ове две жице, наиме, серијски сат (СЦЛ) и серијски подаци (СДА).
Серијски сат (СЦЛ): Дијели сигнал такта који генерира мастер са подређеним уређајем
Серијски подаци (СДА): шаље податке главном и подређеном између и између њих.
У било ком тренутку, само ће мастер моћи да започне комуникацију. Будући да је у магистрали више од једног подређеног уређаја, мастер мора да се односи на сваког подређеног користећи другу адресу. Када им се обратите, само ће салве са том адресом одговорити са информацијама, док ће остали ћутати. На овај начин можемо користити исту магистралу за комуникацију са више уређаја.
Где користити И2Ц комуникацију?
И2Ц комуникација се користи само за комуникацију на кратким удаљеностима. Свакако је поуздан у одређеној мери јер има синхронизовани тактни импулс који га чини паметним. Овај протокол се углавном користи за комуникацију са сензором или другим уређајима који морају да шаљу информације мастеру. Врло је згодно када микроконтролер мора да комуницира са многим другим помоћним модулима користећи најмање само жице. Ако тражите комуникацију са великим дометом, требало би да испробате РС232, а ако тражите поузданију комуникацију, требало би да испробате СПИ протокол.
И2Ц на Нувотон Н76Е003 - Захтеви за хардвер
Како је захтев овог пројекта научити И2Ц комуникацију помоћу Н76Е003, користићемо ЕЕПРОМ који ће бити повезан са И2Ц линијом података. Неке податке ћемо сачувати у ЕЕПРОМ-у, а такође ћемо их прочитати и приказати помоћу УАРТ екрана.
Како ће се сачувана вредност исписати у УАРТ-у, потребна је било која врста УСБ у УАРТ претварача. Такође можете погледати водич за УАРТ са Нувотоном ако сте нови у УАРТ комуникацији на Н76Е003. За нашу апликацију користићемо ЦП2102 УАРТ у УСБ претварач. Осим горе наведеног, потребне су и следеће компоненте -
- ЕЕПРОМ 24Ц02
- 2ком 4.7к отпорници
Да не помињемо, осим горе наведених компоненти, потребан нам је развојни одбор заснован на микроконтролеру Н76Е003, као и Ну-Линк програмер. Поред тога, за повезивање свих компоненти потребне су и жице за спајање и спојне жице.
Повезивање АТ24ЛЦ64 са Нувотон Н76Е003 - дијаграм кола
Као што можемо видети на доњој шеми, ЕЕПРОМ је повезан у И2Ц линију заједно са два отпорника на извлачење. Крајње лево приказана је веза са програмским интерфејсом.
Користио сам даску за АТ24ЛЦ64 ИЦ и спојио ИЦ на моју нувотон плочу програмера помоћу краткоспојних жица. Моје подешавање хардвера заједно са ну-инк програматором је приказано испод.
И2Ц пинови на Нувотон Н76Е003
Пин дијаграм Н76Е003 можете видети на доњој слици-
Као што видимо, сваки пин има различите спецификације и сваки пин се може користити у више сврха. Међутим, пин 1.4 се користи као И2Ц СДА пин, изгубиће ПВМ и друге функције. Али то није проблем, јер за овај пројекат није потребна друга функционалност. Иста ствар ће се догодити за П1.3 је СЦЛ пин И2Ц.
Будући да И2Ц пинови делују као ГПИО, потребно га је конфигурисати. Сви ГПИО пинови могу се конфигурисати у доле описаном режиму.
Према техничком листу, ПкМ1.н и ПкМ2. н су два регистра која се користе за одређивање контролног рада И / О порта. У техничком листу је наведено да се за употребу И2Ц функционалности И / О режими морају користити као отворени одвод за комуникације повезане са И2Ц.
И2Ц комуникација у Н76Е003
И2Ц периферна опрема је важна ствар за било коју јединицу микроконтролера која подржава И2Ц функције. Много типова различитих микроконтролера долази са уграђеном И2Ц периферном јединицом. Међутим, у неким случајевима, И2Ц се може ручно конфигурисати помоћу софтверске контроле где хардверска подршка повезана са И2Ц није доступна (на пример, многи 8051 микроконтролери). Међутим, нувотон Н76Е003 долази са И2Ц периферном подршком.
М76Е003 подржава четири врсте операција у И2Ц режимима - главни предајник, главни пријемник, подређени предајник и подређени пријемник. Такође подржава стандардне (100кбпс) и брзе (до 400кбпс) брзине за И2Ц линију. И2Ц ради са неколико општих правила у СЦЛ и СДА сигналним линијама.
Услови покретања и заустављања:
То је важна ствар у И2Ц комуникацији. Када се подаци пребаце на И2Ц линију, они почињу са почетним условом и завршавају са условом заустављања.
Услов старта је прелаз високог у најнижи ниво на СДА када је линија СЦЛ висока, а услов заустављања прелаз у ниски увис на СДА када је линија СЦЛ висока. Ова два услова генерише мастер (МЦУ или било шта друго што контролише остале помоћне уређаје). Аутобуска линија остаје заузета у овом стању када се покрене услов старта и остаје поново слободна када се покрене услов заустављања.
Услов Старт анд Стоп је одлично приказан у перспективи сигнала у листу података Н76Е003-
7-битна адреса са форматом података:
Н76Е003 подржава 7-битни формат адресе и података. Након покретања услова покретања, главни уређај треба да пошаље податке на И2Ц линију. Први податак је важан. Ако се ови подаци не креирају правилно или се не пренесу, повезани уређај неће бити идентификован и даље комуникације неће бити могуће.
Подаци се састоје од 7-битне дуге славе адресе, означене као СЛА. Ова 7-битна дуга адреса мора бити јединствена за сваки уређај ако је на магистралу повезано више уређаја. Након 7-битне адресе, осми бит је бит смера података. То значи, у зависности од 8. бита, мастер шаље помоћном уређају информације о томе да ли ће подаци бити записани у славе уређај или ће се подаци читати са славе уређаја. Осми бит је Р / В бит који се назива обавештеник за читање или писање. Као што сви знамо, 8-битне информације могу бити 128 типова, подржавајући на тај начин 128 уређаја, али И2Ц подржава 127 типова уређаја на истој магистрали, али не и 128. Будући да је адреса 0к00 резервисана адреса која се назива општом адресом позива. Ако мастер жели да пошаље информације на све уређаје,адреса ће бити 0к00 и сваки уређај ће се репродуковати на исти начин као у појединачним конфигурацијама софтвера.
Дакле, пренос података изгледа испод -
Признати:
На горњој слици адресе података, 9. бит после којег следи Р / В бит назива се потврдни бит. Важан је јер користећи овај бит главни или подређени реагује на предајник података повлачењем СДА линије ниско. Да би добио бит за потврду, предајник треба да отпусти СДА линију.
Програмирање Н76Е003 за И2Ц комуникацију
Комплетни програм коришћен у овом упутству налази се на дну ове странице. Објашњење важних сегмената кода је следеће -
Поставите чиоде као отворени одвод и конфигуришите их за И2Ц:
Почнимо прво са И2Ц одељком за игле. Као што је претходно описано, И2Ц СЦЛ и СДА портови морају бити конфигурисани и постављени као конфигурација отвореног одвода. Да би то урадили, користимо се И2Ц.х хеадер слику заједно са И2Ц.ц изворне датотеке . Фрагмент кода изгледа овако-
до {П13_ОпенДраин_Моде; П14_ОпенДраин_Моде; цлр_И2ЦПКС;} док (0)
Горњи код поставља П13 и П14 као пин са отвореним одводом, а цлр_И2ЦПКС се користи за одабир П13 и П14 као СЦЛ пин на П1.3 и СДА пин на П1.4.
Овај И2ЦПКС је 0-ти бит И2Ц контролног регистра И2ЦОН. Ако је овај И2Ц_ПКС постављен на 1, пинови се мењају у П0.2 као СЦЛ и П1.6 као СДА. Међутим, користићемо П13 и П14. Овде се не користе алтернативни клинови.
И2Ц контролни регистар И2ЦОН:
И2Ц контролни регистар И2ЦОН се користи за управљање И2Ц операцијама. Први бит је бит за избор И2Ц пина. Ако се постави на 0, И2Ц пин се конфигурише као П13 и П14.
АА бит је ознака потврде потврде, ако је постављена заставица АА, АЦК ће се вратити током импулса такта потврде линије СЦЛ. Ако је обрисан, вратит ће се НАЦК (високи ниво на СДА) током потврђеног импулса сата СЦЛ линије.
Следећи бит је СИ што је прекид статуса И2Ц. Ако је И2Ц Статус Интеррупт омогућен, корисник треба да провери И2СТАТ регистар да утврди који је корак прошао и да предузме радњу.
СТО је СТОП застава која се поставља у главном режиму. СТО се аутоматски уклања хардвером када се открије стање СТОП .
Следећи бит је СТА бит. Ако је ова заставица постављена, онда И2Ц генерише стање СТАРТ ако је магистрала слободна. Ако је аутобус заузет, И2Ц чека стање СТОП и генерише СТАРТ стање које следи. Ако је СТА постављен док је И2Ц већ у главном режиму и један или више бајтова је преношен или примљен, И2Ц генерише поновљени СТАРТ. Софтвер мора ручно да очисти СТА.
Последњи, И2ЦЕН је бит за омогућавање или онемогућавање И2Ц магистрале.
ЕЕПРОМ 24Ц02:
Сада долазимо до 24Ц02. Пакет подршке плоче Н76Е003 има И2Ц код за 24ЛЦ64 и може се лако изменити. Међутим, користићемо једноставну методу за разумевање функције И2Ц.
Ако неко жели да користи детаљно повезивање са ЕЕПРОМ 24Ц02, тада се може користити ЕЕПРОМ програм у БСП-у.
Повезаћемо само 24Ц02 у И2Ц где ће Н76Е003 бити главни, а ЕЕПРОМ ће бити славе. Тако ћемо уписати све податке на ЕЕПРОМ адресу и прочитати исте.
24Ц02 ЕЕПРОМ пиноут је приказан испод -
А0, А1 и А2 су три пина за одабир адресе. ВП пинови су пинови за заштиту од писања и морају бити повезани са ВСС-ом да би омогућили уписивање у ЕЕПРОМ.
Функција Бите Врите приказана је на доњој слици-
Пуни циклус писања догађа се са почетним битом. Након тога треба предати контролни бајт. У контролном бајту потребне су следеће ствари -
Након почетног бита, састоји се од помоћне адресе. 1010 је статичка, а А0, А1 и А2 адреса заснована на хардверској вези. Ако су три пина повезана са ГНД или ВСС напајањем, читаће се као 0. У супротном, ако су повезана са ВЦЦ, читаће се као 1. У нашем случају, сви А0, А1 и А2 су повезани са ВСС. Тако ће све ово бити 0.
Трошење на услове читања или писања. Вредност адресе са битом Реад или Врите биће - 0кА0 за Врите и 0кА1 за читање. Следи бит потврде и након тога ће се пренети 8-битна адреса на којој треба чувати податке и на крају подаци који ће бити ускладиштени на одговарајућем месту. Ове ствари се раде у формату корак по корак у главној функцији.
Главна функција и вхиле петља:
воид маин (воид) {цхар ц = 0к00; ИнитиалУАРТ0_Тимер3 (115200); ТИ = 1; // Важно, употреба функције принфт мора поставити ТИ = 1; И2Ц_инит (); вхиле (1) {ЕЕПРОМ_врите (1,0к55); ц = ЕЕПРОМ_реад (1); принтф ("\ н Очитана вредност је% к", ц & 0кфф); }; }
Главна функција је једноставна, непрекидно уписује вредности у ЕЕПРОМ на адресу 1 и чита податке. Подаци се затим штампају помоћу функције принтф. Принтф исписује вредност у хек-у.
ЕЕПРОМ функција писања састоји се од следећих ствари које су описане у одељку ЕЕПРОМ-
воид ЕЕПРОМ_врите (непотписана адреса знака, непотписана вредност знака) {И2Ц_старт (); И2Ц_врите (0кА0); И2Ц_врите (адреса); И2Ц_врите (вредност); И2Ц_стоп (); }
Функција покретања И2Ц састоји се од следећих ствари-
воид И2Ц_старт (воид) {потписано инт тиме = тимеоут; сет_СТА; цлр_СИ; вхиле ((СИ == 0) && (тиме> 0)) {тиме--; }; }
У овој функцији, статус СИ се проверава заједно са унапред дефинисаним временским ограничењем (дефинисано у И2Ц.х где је унапред дефинисано време постављено на 1000). Функција покретања започиње подешавањем СТА и брисањем СИ.
воид И2Ц_стоп (воид) {потписано инт тиме = тимеоут; цлр_СИ; сет_СТО; вхиле ((СТО == 1) && (тиме> 0)) {тиме--; }; }
Исто као и функција Старт, стоп се користи. Функција заустављања покреће се подешавањем СТО након чега слиједи брисање СИ. Испод функције је функција читања И2Ц-
непотписани знак И2Ц_реад (непотписани знак ацк_моде) {потписан инт тиме = тимеоут; непотписана вредност знака = 0к00; сет_АА; цлр_СИ; вхиле ((СИ == 0) && (т> 0)) {тиме--; }; вредност = И2ДАТ; иф (ацк_моде == И2Ц_НАЦК) {т = тимеоут_цоунт; цлр_АА; цлр_СИ; вхиле ((СИ == 0) && (т> 0)) {тиме--; }; } повратна вредност; }
Ацк_моде и И2Ц_НАЦК , како су дефинисани у заглављу датотеку И2Ц као 0 и 1, респективно.
Слично томе, креира се функција писања-
воид И2Ц_врите (непотписана вредност знака) {потписано инт тиме = тимеоут; И2ДАТ = вредност; цлр_СТА; цлр_СИ; вхиле ((СИ == 0) && (тиме> 0)) {тиме--; }; }
Трептање кода и резултата
Код је вратио 0 упозорења и 0 грешака, а Кеил га је трептао користећи подразумевани начин трептања. Ако сте нови, погледајте упутство за почетак рада са Нувотон упутством да бисте разумели како да отпремите код. Информације о компајлирању кода налазе се у наставку.
Изградите циљ 'И2Ц_ЕЕПРОМ' компајлирајући И2Ц_ЕЕПРОМ.ц… компајлирање И2Ц.ц… повезивање… Величина програма: дата = 59,2 кдата = 0 цоде = 2409 стварање хек датотеке из ". \ Оутпут \ И2Ц_ЕЕПРОМ"… ". \ Излаз \ И2Ц_ЕЕПРОМ "- 0 Грешка, 0 Упозорење. Време израде протекло: 00:00:04 Сажетак групне израде: 1 успело, 0 није успело, 0 прескочено - Време протекло: 00:00:04
Хардвер се поставља на плочу и ради како се очекивало. Као што видите на доњој слици, успели смо да запишемо вредност на ЕЕПРОМ и очитамо је из меморије и прикажемо на серијском монитору.
Погледајте доњи видео снимак за потпуну демонстрацију рада плоче за овај код. Надам се да сте уживали у водичу и научили нешто корисно ако имате питања, оставите их у одељку за коментаре испод. Наше форуме такође можете користити за постављање других техничких питања.