I2c інтерфейс: опис російською
Відео: Підключаємо текстовий LCD 16x2 до arduino по I2C
В сучасній побутовій техніці, промисловій електроніці і різному телекомунікаційному обладнанні досить часто можна зустріти аналогічні рішення, хоча вироби можуть бути практично не пов`язані між собою. Наприклад, практично кожна система включає в себе наступне:
- певний «розумний» вузол управління, який в переважній більшості випадків є однокрісталльную мікроЕОМ;
- вузли загального призначення на зразок буферів ЖК, ОЗУ, портів введення / виводу, ЕСПЗУ або ж спеціалізовані перетворювачі даних;
- специфічні вузли, що включають в себе схеми цифрового настроювання і оброблення сигналів для відео- і радіосистем.
Як оптимізувати їх застосування?
Щоб забезпечити максимально ефективне використання таких загальних рішень для вигоди конструкторів і самих виробників, а також для підвищення загальної ступеня продуктивності різної апаратури і спрощення застосовуваних схемотехнических вузлів, компанія Philips поставила собі за мету розробити гранично просту двухпроводную двосторонню шину, що забезпечує найбільш продуктивне межмікросхемное управління. Дана шина забезпечує передачу даних через інтерфейс I2C.
На сьогоднішній день асортимент зазначеного виробника включає в себе більше 150 КМОП, а також біполярних пристроїв, сумісних з I2C і призначених для ведення роботи в будь-яких перерахованих категоріях. При цьому варто відзначити, що інтерфейс I2C є спочатку вбудованим в усі сумісні пристрої, за рахунок чого вони і можуть без жодних складнощів підтримувати зв`язок між собою при використанні спеціальної шини. За рахунок застосування такого конструкторського рішення вийшло вирішити досить велика кількість проблем сполучення різного устаткування, що є досить характерним для сфери розробки цифрових систем.
основні переваги
Навіть якщо подивитися коротко опис інтерфейсів UART, SPI, I2C, можна виділити наступні переваги останнього:
- Для роботи потрібно всього дві лінії - синхронізації і даних. Будь-який пристрій, який підключається до такої шині, в подальшому може програмно адресуватися по абсолютно унікальному адресою. У будь-який момент існує просте ставлення, що дозволяє провідним працювати в якості ведучого-передавача або ведучого-приймача.
- Дана шина передбачає можливість мати одразу кілька провідних, надаючи всі необхідні засоби для визначення колізій, а також арбітраж, що дозволяє запобігти пошкодженню даних в тому випадку, якщо два або більшу кількість провідних починає одночасно передавати інформацію. У стандартному режимі передбачається тільки передача послідовних восьмибітних даних при швидкості не більше 100 кбіт / с, а в швидкому режимі цей поріг може бути збільшений в чотири рази.
- У мікросхемах використовується спеціальний вбудований фільтр, який досить ефективно пригнічує сплески і забезпечує максимальну цілісність даних.
- Гранично можлива кількість мікросхем, які можуть бути приєднані до однієї шині, обмежується тільки її гранично можливої ємністю, що становить 400 пФ.
Переваги для конструкторів
Інтерфейс I2C, а також всі сумісні мікросхеми дозволяють істотно прискорити процедуру розробки, від функціональної схеми до її кінцевого прототипу. При цьому варто відзначити, що за рахунок можливості підключення таких мікросхем безпосередньо до шини без використання всіляких додаткових ланцюгів забезпечується простір для подальшої модернізації і модифікації системи прототипу за допомогою відключення і підключення від шини різних пристроїв.
Є маса переваг, які виділяють інтерфейс I2C. Опис, зокрема, дозволяє побачити такі переваги для конструкторів:
- блоки на функціональної схемою цілком відповідають мікросхем, і при цьому забезпечується досить швидкий перехід від функціональних до принципових.
- Немає ніякої необхідності займатися розробкою шинних інтерфейсів, тому що шина вже спочатку інтегрована в спеціальні мікросхеми.
- Інтегровані протоколи передачі інформації і адресація пристроїв надають системі можливість бути повністю програмно визначається.
- Однакові типи мікросхем при необхідності можна використовувати в абсолютно різних додатках.
- Загальний час розробки істотно знижується за рахунок того, що конструктори досить швидко можуть ознайомитися з найбільш часто використовуваними функціональними блоками, а також всілякими мікросхемами.
- При бажанні можна додавати або прибирати з системи мікросхеми, і при цьому не чинити особливого впливу на інше обладнання, підключене до однієї шині.
- Загальний час розробки програмного забезпечення можна значно знизити за рахунок того, що тут допускається застосування бібліотеки повторно застосовуваних програмних модулів.
Крім усього іншого, варто відзначити гранично просту процедуру діагностики виникли збоїв і подальшу налагодження, яким характеризується інтерфейс I2C. Опис говорить про те, що при необхідності можна без жодних зусиль моментально відстежувати навіть незначні відхилення в роботі такого обладнання і, відповідно, приймати відповідні заходи. Також варто відзначити, що конструктори отримують спеціальні рішення, які, зокрема, є досить привабливими для різного портативного обладнання і систем, які передбачають батарейное харчування, використовуючи I2C інтерфейс. Опис російською також вказує на те, що його застосування дозволяє забезпечити такі важливі переваги:
- Досить високий ступінь стійкості до будь-яких виникаючих перешкод.
- Гранично низьке споживання енергії.
- Найширший діапазон напруги живлення.
- Широкий температурний діапазон.
Переваги для технологів
Варто відзначити, що не тільки конструктори, а й технологи досить часто останнім часом почали використовувати спеціалізований I2C інтерфейс. Опис російською вказує досить широкий діапазон переваг, які забезпечуються цієї категорії фахівців:
- Стандартна двопровідна послідовна шина з таким інтерфейсом дозволяє мінімізувати з`єднання між мікросхемами, тобто в них присутня менше контактів і потрібна менша кількість доріжок, завдяки чому друковані плати стають не такими дорогими і мають набагато менші габарити.
- Повністю інтегрований I2C інтерфейс LCD1602 або якийсь інший варіант повністю усуває необхідність у використанні дешифраторів адреси, а також іншої зовнішньої дрібної логіці.
- Передбачається можливість використання одночасно декількох провідних на такій шині, завдяки чому істотно прискорюється тестування і подальша настройка обладнання, так як шина може бути підключена до комп`ютера складальної лінії.
- Доступність сумісних з цим інтерфейсом мікросхем в VSO, SO і спеціалізованому DIL-корпусі дозволяє істотно знизити вимоги до розміру пристрою.
Це тільки короткий список переваг, якими відрізняється I2C інтерфейс LCD1602 і інші. Крім того, сумісні мікросхеми дозволяють значно збільшити гнучкість використовуваної системи, забезпечуючи гранично просте конструювання різних варіантів обладнання, а також щодо легку модернізацію для подальшої підтримки розробки на сучасному рівні. Таким чином, можна розробити ціле сімейство різного устаткування, використовуючи в якості основи певну базову модель.
Подальша модернізація обладнання і розширення його функцій можуть здійснюватися за допомогою стандартного підключення до шини відповідної мікросхеми, що використовує 2C інтерфейс Arduino або який-небудь інший з доступного переліку. Якщо потрібне забезпечення більшої ПЗУ, то в такому випадку досить буде лише вибрати інший мікроконтролер, що має збільшений обсяг ПЗУ. Так як оновлені мікросхеми при необхідності здатні повністю замістити старі, можна запросто додавати нові властивості в обладнання або підвищувати його загальну продуктивність за допомогою звичайного від`єднання вже застарілих мікросхем і подальшої заміни їх на більш нове обладнання.
ACCESS.bus
За рахунок того, що шина має двухпроводную природу, а також можливість програмної адресації, для ACCESS.bus однією з найбільш ідеальних платформ є саме I2C інтерфейс. Специфікація (опис російською представлено в статті) даного пристрою робить його набагато більш дешевою альтернативою активно що використовується раніше інтерфейсу RS-232C для підключення різної периферії для комп`ютерів, використовуючи стандартний чотирьохконтактний коннектор.
Введення в специфікацію
Для сучасних додатків 8-бітного управління, в яких використовуються мікроконтролери, передбачається можливість установки деяких конструкторських критеріїв:
- повна система в переважній більшості випадку включає в себе один мікроконтролер та інші периферійні пристрої, в тому числі пам`ять та всілякі порти введення / виводу;
- загальна вартість об`єднання різних пристроїв всередині однієї системи повинна бути гранично мінімізована;
- система, на яку покладаються функції управління, не передбачає необхідність в забезпеченні високошвидкісної передачі інформації;
- загальна ефективність безпосередньо залежить від обраного обладнання, а також від природи з`єднує шини.
Для розробки системи, що повністю відповідає перерахованим критеріям, потрібно використовувати шину, у якій буде використовуватися послідовний інтерфейс I2C. Незважаючи на те що в послідовній шині немає пропускної здатності паралельних, їй потрібна менша кількість з`єднань, а також менше контактів мікросхем. При цьому не варто забувати про те, що шина включає в себе не тільки з`єднують дроти, але ще і різні процедури і формати, необхідні для забезпечення зв`язку всередині системи.
Пристрої, для зв`язку яких використовується програмна емуляція інтерфейсу I2C або відповідна шина, повинні мати певний протокол, який дозволяє попередити різні можливості зіткнень, втрати або ж блокування інформації. У швидких пристроїв повинна бути можливість зв`язатися з повільними, і при цьому система не повинна залежати від підключеного до неї обладнання, так як в противному випадку всі поліпшення і модифікації не зможуть бути використані. Також потрібно розробляти процедуру, за допомогою якої реально встановити, яке конкретно пристрій на даний момент забезпечує управління шиною і в який момент часу. Крім цього, якщо різні пристрої, що мають різні тактові частоти, підключені до однієї шині, потрібно визначитися з джерелом її синхронізації. Усім цим критеріям відповідає I2C інтерфейс для AVR і будь-які інші з цього переліку.
Основна концепція
Шина I2C може підтримувати будь-які використовуються технології виготовлення мікросхем. Інтерфейс I2C LabVIEW і інші аналогічні йому передбачають використання двох ліній для перенесення інформації - даних і синхронізації. Будь-який пристрій, підключений таким чином, розпізнається за рахунок унікального адреси незалежно від того, чи йде мова про РКІ-буфері, микроконтроллере, пам`яті або інтерфейсі клавіатури, і при цьому може працювати в якості приймача або передавача в залежності від того, для чого конкретно призначається дане обладнання.
У переважній більшості випадків РКІ-буфер представляє собою стандартний приймач, а пам`ять може не тільки приймати, але і передавати різні дані. Крім усього іншого, по процесу переміщення інформації прилади можна класифікувати як ведені і ведучі.
В даному випадку провідним називається пристрій, яким ініціюється передача даних, а також виробляються сигнали синхронізації. При цьому будь-які адресовані прилади будуть вважатися по відношенню до нього веденими.
Інтерфейс зв`язку I2C передбачає наявність відразу кількох провідних, тобто більш ніж один пристрій, здатне здійснювати управління шиною, здатне до неї підключатися. Можливість використання більш одного мікроконтролера в одній шині говорить про те, що більш ніж від одного ведучого може здійснюватися пересилання в певний момент часу. Щоб усунути потенційний хаос, який ризикує з`явитися при виникненні такої ситуації, розроблена спеціалізована процедура арбітражу, яку використовує I2C інтерфейс. Розширювачі і інші прилади передбачають підключення пристроїв до шини за так званим правилом монтажного І.
Генерація синхросигналу є обов`язок ведучого, і кожен з них виробляє власний сигнал в процесі пересилання даних, і в подальшому він може змінюватися тільки в тому випадку, якщо його «витягує» повільне ведене пристрій або інше провідне при виникненні зіткнення.
Загальні параметри
Як SCL, так і SDA є двонаправлені лінії, які підключаються до позитивного джерела живлення за допомогою підтягує резистора. Коли шина виявляється абсолютно вільної, кожна лінія перебуває в високому положенні. Вихідні каскади пристроїв, які підключені до шини, повинні бути з відкритим стоком або відкритим колектором, щоб могла забезпечуватися функція монтажного І. Інформація через I2C інтерфейс може передаватися при швидкості не більше 400 кбіт / с в швидкому режимі, в той час як в стандартному швидкість не перевищує 100 кбіт / с. Загальна ж кількість пристроїв, які можуть бути одночасно підключені до шини, залежить тільки від одного параметра. Це ємність лінії, яка становить не більше 400 пф.
підтвердження
Підтвердження є обов`язкову процедуру в процесі передачі даних. Ведучий генерує відповідний імпульс синхронізації, в той час як передавач відпускає лінію SDA протягом даного синхроимпульса як підтвердження. Після цього приймач повинен забезпечити стабільне утримання лінії SDA протягом високого стану синхроимпульса в стабільно низькому стані. В даному випадку потрібно обов`язково брати до уваги час установки і утримання.
У переважній більшості випадків адресований приймач повинен в обов`язковому порядку згенерувати підтвердження після кожного отриманого байта, і єдиним винятком тут є тільки ті ситуації, коли початок посилки включає в себе адресу CBUS.
Якщо у веденого-приймача немає можливості відправити підтвердження власної адреси, потрібно залишати лінію даних у високому стані, і після цього у ведучого буде можливість видачі сигналу "стоп", Який перерве відправку всієї інформації. Якщо ж адреса був підтверджений, але при цьому ведений не може протягом тривалого часу більше приймати будь-які дані, які ведуть також повинна бути перервана посилка. Щоб це зробити, ведений не підтверджує наступний отриманий байт і просто залишає лінію даних у високому стані, внаслідок чого провідним генерується сигнал "стоп".
Якщо ж в процедурі пересилання передбачається наявність ведучого-приймача, то в такому випадку він повинен повідомляти відомому про закінчення проведеної передачі, і робиться це за допомогою непідтвердження останнього отриманого байта. При цьому ведений-передавач відразу звільняє лінію даних, щоб ведучий міг видати сигнал "стоп" або знову повторити сигнал "старт".
Відео: Найкращий Arduino дисплей OLED LCD Display I2C 0.96 IIC Serial 128X64
Щоб перевірити працездатність обладнання, можна спробувати ввести стандартні приклади скетчів для інтерфейсу I2C в Arduino, як на фото вище.
арбітраж
Провідним може починатися пересилання інформації тільки після повного звільнення шини, але при цьому два і більше провідних можуть провести генерування сигналу про старт при часу мінімального утримування. Це в кінцевому підсумку призводить до певного сигналу "старт" на шині.
Робота арбітражу здійснюється на шині SDA в ті моменти, поки SCL-шина перебуває в високому стані. Якщо один з провідних починає передавати на лінію даних низький рівень, але при цьому інший - високий, то останній повністю відключається від неї, тому що стан SDL є не відповідним високому станом його внутрішньої лінії.
Відео: Popular Videos - Display device & Tutorial
Продовження арбітражу може здійснюватися протягом кількох біт. За рахунок того, що спочатку здійснюється передача адреси, а потім даних, арбітраж може мати тривалість до закінчення адреси, а якщо провідними буде адресуватися одне і те ж пристрій, то в такому випадку в арбітражі братимуть участь і різні дані. Внаслідок такої схеми арбітражу при виникненні будь-яких сутичок дані не загубляться.
Якщо ведучий програє арбітраж, то в такому випадку він може видавати імпульси синхронізації в SCL до кінця байта, протягом якого і був втрачений доступ.