I2C шина — присвояване, устройство, пренос на данни, адресиране

При създаването на електронна схема много разработчици са изправени пред необходимостта да използват голям брой междинни микросхеми за съвпадение, вземане на проби и адресиране на отделните му блокове. За да сведе до минимум броя на спомагателните чипове, Филипс предложи двужичен двупосочен I2C сериен мрежов интерфейс още през 80-те години на миналия век, създаден специално за управление на множество чипове в рамките на едно устройство.

I2C шина - присвояване, устройство, пренос на данни, адресиране

Днес само Philips произвежда повече от сто I2C-съвместими устройства за електронно оборудване с голямо разнообразие от цели: памет, системи за видеопроцесори, аналогово-цифрови и цифрово-аналогови преобразуватели, драйвери на дисплея и др.

I2C автобус

I2C шината е модификация на протокола за сериен обмен на данни, способна да предава серийни 8-битови данни в обичайния „бърз“ режим при скорости от 100 до 400 kbps. Процесът на обмен на данни се реализира тук само по два проводника (без да се брои общия проводник): SDA линия за данни и SCL линия за синхронизация.

Шината става двупосочна поради факта, че каскадите от изходи на устройства, свързани към шината, имат отворени колектори или канали, като по този начин се възпроизвежда окабеляването „И“. В резултат на това шината минимизира броя на връзките между микросхемите, оставяйки по -малко необходими щифтове и следи на платката. В резултат на това самата дъска се оказва по -проста, по -компактна и технологично по -напреднала в производството.

Този протокол ви позволява да изключите декодерите на адреси и друга външна логика на договаряне. Броят на микросхемите, които могат да работят едновременно с шината I2C, е ограничен от нейния капацитет — максимум 400 pF.

I2C протокол

Съвместимите с I2C интегрални схеми имат хардуерен алгоритъм за потискане на шума, за да гарантират целостта на данните дори при наличие на силни смущения. Такива устройства имат интерфейс, който позволява на микросхемите да комуникират помежду си дори когато захранващите им напрежения са различни. На фигурата по -долу можете да се запознаете с принципа на свързване на няколко микросхеми през една обща шина.

Всяко от устройствата, свързани към шината, има свой собствен уникален адрес, определя се от него и в съответствие с предназначението на устройството може да работи като приемник или като предавател. При предаване на данни тези устройства могат да бъдат главни (главни) или подчинени (подчинени). Капитанът е устройството, което стартира прехвърлянето на данни и генерира часовникови сигнали по SCL линията. Подчиненият, по отношение на главния, е дестинационното устройство.

Схема на свързване на устройството

Във всеки момент на работа на I2C шината само едно устройство може да действа като главно; то генерира сигнал по SCL линията. Главният може да бъде или главен приемник, или главен предавател.

По принцип шината позволява няколко различни капитана, но налага ограничения върху характеристиките на формиране на управляващи сигнали и наблюдение на състоянието на шината; това означава, че няколко главни устройства могат да започнат да предават едновременно, но конфликти от този вид се елиминират благодарение на арбитража, тоест начина, по който капитанът се държи, когато открие, че автобусът е зает от друг главен.

Синхронизацията на двойка устройства се осигурява от факта, че всички устройства са свързани към шината, образувайки окабеляване „И“. Първоначално SDA и SCL сигналите са високи.

СТАРТ и СТОП

Обменът започва с главното, генериращо състоянието «START»: по линията SDA, сигналът преминава от високо към ниско състояние, докато SCL линията има стабилно високо ниво. Всички устройства, свързани към шината, възприемат тази ситуация като команда за стартиране на обмена.


Старт и стоп - синхронизиращ сигнал

Всеки главен генерира индивидуален тактов сигнал по SCL линията при предаване на данни по шината.

Обменът завършва с образуването на състоянието STOP от капитана: по линията SDA сигналът се променя от ниско към високо състояние, докато SCL линията има стабилно високо ниво.

Водещият винаги действа като източник на сигналите START и STOP. Веднага след като сигналът «START» бъде фиксиран, това означава, че линията е заета. Линията е свободна, когато бъде открит сигнал STOP.

Трансфер на данни

Веднага след деклариране на състоянието START, капитанът превключва SCL линията на ниско ниво и изпраща най -значимия бит от първия байт на съобщението до линията SDA. Броят на байтовете в едно съобщение не е ограничен. Промените в линията SDA са разрешени само когато нивото на сигнала в SCL линията е ниско. Данните са валидни и не трябва да се променят само когато синхронизиращият импулс е висок.

Потвърждението, че байтът от главния предавател е приет от подчинения приемник, се извършва чрез задаване на специален бит за потвърждение на линията SDA след завършване на приемането на осмия бит данни.

ПОТВЪРЖДЕНИЕТО

И така, изпращането на 8 бита данни от предавателя към приемника завършва с образуването на допълнителен импулс по SCL линията, когато приемащото устройство подава сигнал на ниско ниво по линията SDA, което показва, че е приело целия байт.

Синхронизиращ импулс за потвърждение

Потвърждението е неразделна част от процеса на прехвърляне на данни. Капитанът генерира синхронизиращ импулс. Предавателят изпраща ниско състояние до SDA, докато часовникът за потвърждение е активен. Докато синхронизиращият импулс е висок, приемникът трябва да поддържа ниско ниво на SDA.

Ако подчиненият дестинация не потвърди адреса си, например защото е зает в момента, редът за данни трябва да се държи високо. След това капитанът може да подаде сигнал STOP, за да прекъсне изпращането.

Ако приемането се осъществява от главния приемник, то той е длъжен да информира подчинения предавател след приключване на предаването-не чрез потвърждение на последния байт. Подчиненият предавател освобождава линията за данни, така че капитанът може да издаде сигнал STOP или повтарящ се сигнал START.

Синхронизирането на устройствата се осигурява от факта, че връзките към SCL линията се осъществяват съгласно принципа «И».

Капитанът няма право единствено да контролира прехода на SCL линията от ниско към високо. Ако подчиненият се нуждае от повече време за обработка на получен бит, той може независимо да държи SCL нисък, докато не е готов да получи следващия бит данни. SCL линията в такава ситуация ще бъде в ниско състояние, докато трае най -дългото ниско импулсно ниво на синхронизация.

Устройствата с най -ниско поддържано ниско ниво ще останат бездействащи, докато приключи дългият период. Когато всички устройства приключат с ниския период на синхронизация, SCL ще се повиши.

Всички устройства ще започнат да отбелязват часовника си високо и първото устройство, което ще завърши своя период, ще бъде първото, което ще постави SCL линията на ниска. В резултат на това продължителността на ниското състояние на SCL ще се определя от най -дългото ниско състояние на синхронизиращия импулс на едно от устройствата, а продължителността на високото състояние ще се определя от по -краткия период на синхронизация на едно от устройствата .

Синхронизиращите сигнали могат да се използват от приемниците като средство за управление на предаването на данни на ниво битове и байтове.

Ако устройството е в състояние да получава байтове с висока скорост, но за това му е необходимо определено време, за да съхрани получения или да се подготви да получи следващия байт, то може да продължи да държи SCL в ниско състояние след получаване и потвърждаване на байт, принудително задържайки предавателя в състояние на изчакване.

Микроконтролер без вградени хардуерни схеми, например на битово ниво, може да забави тактовата честота, като увеличи продължителността на тяхното ниско състояние.В резултат на това скоростта на предаване на главното устройство ще се определя от скоростта на по -бавното устройство.


I2C автобус

АДРЕСИРАНЕ

Всяко устройство, свързано към I2C шината, има уникален програмен адрес, на който капитанът се обръща към него, като изпраща определена команда. Микросхемите от същия тип се характеризират с селектор на адреси, реализиран или под формата на цифрови входове на селектора, или в аналогова форма. Адресите са разделени в адресното пространство на устройствата, свързани към шината.

Нормалният режим предполага седем-битово адресиране. Адресирането работи по следния начин: след командата «START» капитанът изпраща първия байт, който определя кое подчинено устройство е необходимо за комуникация с капитана. Има и общ адрес за повикване, който определя всички устройства в шината, всички устройства (теоретично) отговарят на него с потвърждение, но на практика това е рядкост.

И така, първите седем бита от първия байт са подчинения адрес. Най -малко значимият бит, осмият, показва посоката на изпращане на данни. Ако има «0», тогава информацията ще бъде записана от главния на този подчинен. Ако «1», информацията ще бъде прочетена от главния от този подчинен.

След като капитанът приключи изпращането на байта на адреса, всеки подчинен сравнява адреса си с него. Всеки, който има същия адрес, е подчинен и се определя като подчинен предавател или подчинен приемник, в зависимост от стойността на най-малкия бит от байта с адреса.

Подчиненият адрес може да включва фиксирани и програмируеми части. Доста често голям брой устройства от един и същи тип работят в една система, след това програмируемата част от адреса позволява използването на максимум от същия тип устройства в шината. Колко бита в адресния байт са програмируеми, зависи от броя на свободните щифтове на микросхемата.

Понякога един щифт с аналогова настройка на програмируемия диапазон на адресите е достатъчен, например SAA1064 — драйвер за LED индикатор, който има точно такава реализация. Потенциалът на конкретен щифт определя изместването на адресното пространство на микросхемата, така че микросхемите от същия тип да не противоречат, работещи на една и съща шина. Всички микросхеми, поддържащи шината I2C, съдържат набор от адреси, които производителят посочва в документацията.

Комбинацията «11110XX» е запазена за 10-битово адресиране. Ако си представим обмена на данни от командата «START» към командата «STOP», тя ще изглежда така:


Адресиране

Тук са разрешени прости и комбинирани формати за обмен на данни. Комбинираният формат означава, че между «СТАРТ» и «СТОП», главният и подчиненият могат да действат като приемници и предаватели, това е полезно например при управление на серийна памет.

Нека първият байт от данни прехвърли адрес в паметта. След това, при повторение на командата «START» и четене на подчинения адрес, данните от паметта ще работят. Решенията за автоматично увеличаване или намаляване на адреса, до който е бил направен предишният достъп, се вземат от разработчика на устройството, след като предварително са проучили документацията за микросхемата. По един или друг начин, след получаване на командата START, всички устройства трябва да възстановят логиката си и да се подготвят за факта, че адресът вече ще бъде именуван.

Съветваме ви да прочетете:

Защо електрическият ток е опасен