Електроний посібник з
дисципліни "Мікропроцесорні системи"
 
Дипломный проект
                                               9.3.3.4. Адресація користувачів шини ( I2C - блоки)
  Загальні поняття
  Кожен з блоків, що мають зв’язок з шиною, повинен мати певну адресу (адреса підлеглого пристрою), щоб його можна було відрізнити від інших блоків. Блоки, котрі виконують функції тільки ведучих пристроїв, не
I2C передбачав 7-бітові адреси. За допомогою 7 бітів максимально можна підключити 128 різноманітних блоків. Певні адреси цього адресного простору зарезервовані, таким чином кількість блоків ще більше скорочується. Philips специфікував розширення адресного простору, при якому довжина адреси складає 10 біт. Але, до моменту видання цієї книги ще не було таких інтегральних мікросхем, котрі можуть працювати на 10-бітовій адресації. Таку адресацію використовують тільки мікроконтролери з певним програмним забезпеченням. Оскільки 7- та 10-бітову адресу можна використовувати одночасно, 10-бітовий режим здається трохи перенавантаженим. Відповідні правила протоколу через це виглядають дуже складними. Далі адресація ускладнюється за допомогою спеціального  метода - Start  Byte Procedure. Ідея  цього  методу  полягає в спрощенні програмного забезпечення підлеглого блока без використання спеціальної апаратної частини шини I2C завдяки відповідному заголовку для бажаної транзакції. Однак на практиці цей метод не застосовується.
  7-бітова адресація
  Якщо ведучий пристрій хоче з’єднатися з веденим, спочатку він має отримати за допомогою умови старту передачі доступ до шини (арбітраж). Потім він надсилає перший байт, 7 перших бітів якого мають адресу бажаного веденого пристрою. Останній біт має необхідний напрям передачі (0 = запис, 1 = зчитування). Формат такого байта показано на рис. 9.12.



Рис. 9.12. Формат бітів адресації
 



  Після видання умови початку передачі всі підключені ведені пристрої мають контролювати шину, щоб прочитати цей байт. При цьому повільно функціонуючі, підпорядковані пристрої можуть примусити ведучий пристрій чекати. Після того, як всі 8 бітів отримано, ведені пристрої порівнюють отриману адресу з власною. Вона або попередньо задана для певного блоку, або встановлюється DIP-перемикачами, перемичками або спаяними містками. Часто ці варіанти комбінуються. Блоки, котрим адреса не підходить, відмикаються від шини до наступного сигналу початку передачі даних. Якщо адреса підійшла, блок, що зреагував, генерує підтвердження приймання інформації (див. розділ «Передача байтів»). Тепер ведучий пристрій знає, що ведений з адресою, що запитується, готовий до передачі. Якщо підтвердження не надійшло, то або даний блок зайнятий, або блока з заданою адресою не існує.
  Розподіл адресних байтів
  У посібнику вже розглядалось, що початкові сім бітів першого байта мають адресу блока, який  підключений  до  шини I2C, з котрим потрібно з’єднатися. Адреса 0 необхідна для особливих випадків. Якщо надсилається нульова адреса разом з бітом напряму передачі 0 (для запису), це називають «загальним  викликом»  («General  Call»).  Тому  адреса  0  також  називається «адресою  загального  виклику»  («General  Call Address»). За допомогою  цієї адреси розпочинається широкомовлена розсилка, тобто розсилаються пакети даних, призначених для групи користувачів шиною I 2C. І звісно, цей пакет даних може пересилатись тільки від ведучого пристрою до веденого, але не навпаки.