мови START і STOP. Умова START визначається як перехід SDA з високого рівня в низький при високому рівні SCL, а умова STOP - як перехід SDA з низького рівня високий при високому рівні SCL (див. нижче малюнок 3.4.1). Ведучий генерує ці умови на початку і кінці передачі даних. Зважаючи такого способу визначення START і STOP при передачі даних лінія SDA може змінювати свій стан тільки при низькому рівні SCL.
Рис. 2.8 - Ініціалізація і припинення передачі даних
Адресація на шині I2C
Існують два формати адреси. Найпростіший 7-бітний формат з бітом R /-W. Адреса - це 7 старших бітів байта. Наприклад, при вказівці адреси для PIC17C756 при записі в SSPADD молодший біт не важливий. Більш складним є 10-бітний формат з бітом R /-W, де перші п'ять бітів визначають, що це 10-бітний адресу.
Підтвердження передачі
Дані повинні передаватися побайтно, без обмеження кількості байтів за сеанс. Після кожного байта ведений видає біт підтвердження ACK. Коли ведений не підтверджує отримання адреси чи даних, ведучий повинен перервати передачу. Ведений залишає на SDA високий рівень, щоб ведучий виставив STOP.
Якщо дані отримує провідний, він видає підтвердження для кожного прийнятого байта даних, крім останнього. Щоб завершити веденого про завершення прийому даних, ведучий не посилає підтвердження. Після цього ведений звільняє SDA, щоб ведучий виставив STOP.
При необхідності, ведений може затримати передачу наступного байта, утримуючи низький рівень на SCL, що змусить провідний перейти в стан очікування. Коли ведений відпустить SCL, передача даних продовжиться. Це дозволяє веденого відкласти прийом даних, або вибрати дані для передачі до того, як продовжать надходити тактові імпульси. На малюнку 2.9 показана послідовність передачі даних ведучим і веденим.
Рис. 2.9 - Послідовність передачі даних ведучим і веденим
Коли ведучий не бажає звільняти шину (виставивши STOP), він повинен виставити повторний старт, який ідентичний START (перехід SDA з з високого рівня в низький при високому рівні SCL), але видається слідом за підтвердженням, т . е. шина не звільнена. Це дозволяє ведучому посилати команди веденого і потім приймати запитану інформацію або адресувати різні ведені пристрої. Подібний механізм показаний на малюнку 2.10.
Рис. 2.10 - Робота при конкуренції
Протокол I2C допускає наявність більше одного провідного в системі. Це називається конкуренцією. Коли два або більше провідних намагаються передати дані одночасно, необхідні арбітраж і синхронізація.
Арбітраж. Арбітраж здійснюється на шині даних SDA, поки на SCL високий рівень. Ведучий, який видає високий рівень, коли інший ведучий видає низький рівень, втрачає арбітраж і відключає свою лінію даних, але може продовжувати видавати тактовий сигнал до кінця байта, при спробі передачі якого ведучий втратив арбітраж. Коли кілька провідних звертаються до одного веденого, арбітраж відбувається при передачі даних.
Ведучі, які включають функції ведених і втратили арбітраж, повинні відразу ж перемкнутися в режим веденого, оскільки виграв арбітраж ведучий може звернутися до одного з них.
Арбітраж не допускається між повторними START-ми, STOP і бітом даних і повторним START і STOP. Ведучий повинен забезпечити неможливість в...