Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
686.docx
Скачиваний:
85
Добавлен:
24.04.2019
Размер:
6.68 Mб
Скачать

2.3.1.2 Принцип работы шины I²c

Вследствие

различных

технологий

микросхем

(КМОП,

НМОП,

биполярная), которые могут быть подключены к шине, уровни логического

нуля (НИЗКИЙ) и логической единицы (ВЫСОКИЙ) не фиксированы и зависят

от соответствующего уровня Vdd. Один синхроимпульс генерируется на

каждый пересылаемый бит [7, 18].

Данные на линии SDA должны быть стабильными в течение ВЫСОКОГО

периода синхроимпульса. ВЫСОКОЕ или НИЗКОЕ состояние линии данных

должно меняться, только если линия синхронизации в состоянии НИЗКОЕ.

Рисунок 50. Пересылка бита по шине I²C

Данные по линии SDA передаются байтами, при этом каждый байт должен

оканчиваться битом подтверждения. Количество байт, передаваемых за один

сеанс связи, не ограничено. Данные передаются, начиная со старшего бита.

Если приёмник не может принять еще один целый байт, пока он не выполнит

какую-либо другую функцию (например, обслужит внутреннее прерывание), он

может удерживать линию SCL в НИЗКОМ состоянии, переводя передатчик в

состояние ожидания. Пересылка данных продолжается, когда приёмник будет

готов к следующему байту и отпустит линию SCL (опять срабатывает правило

монтажного И).

Рисунок 51. Пересылка данных по шине I²C

2.3.1.3 Сигналы старт и стоп

Процедура обмена данными по шине I²C начинается с того, что ведущий

формирует состояние СТАРТ – ведущий генерирует переход сигнала линии

110

SDA из ВЫСОКОГО состояния в НИЗКОЕ при ВЫСОКОМ уровне на линии

SCL [7, 18].

Этот

переход

воспринимается

всеми

устройствами,

подключенными к шине как признак начала процедуры обмена. Процедура

обмена завершается тем, что ведущий формирует состояние СТОП – переход

состояния линии SDA из НИЗКОГО состояния в ВЫСОКОЕ при ВЫСОКОМ

состоянии линии SCL. Состояния СТАРТ и СТОП всегда вырабатываются

ведущим. Считается, что шина занята после фиксации состояния СТАРТ. Шина

считается освободившейся через некоторое время после фиксации состояния

СТОП.

Определение сигналов СТАРТ и СТОП устройствами, подключенными к

шине достаточно легко, если в них встроены необходимые цепи. Однако

микроконтроллеры без таковых цепей должны осуществлять считывание

значения линии SDA как минимум дважды за период синхронизации для того,

чтобы определить переход состояния.

Рисунок 52. СТАРТ и СТОП состояния

2.3.1.4 Подтверждение

Подтверждение при передаче данных обязательно, кроме случаев

окончания

передачи

ведомой

стороной.

Соответствующий

импульс

синхронизации генерируется ведущим. Передатчик отпускает (ВЫСОКОЕ)

линию SDA в течение синхроимпульса подтверждения. Приёмник должен

удерживать линию SDA в течение ВЫСОКОГО состояния синхроимпульса

подтверждения в стабильно НИЗКОМ состоянии [7, 18]. Конечно, время

установки

и

удержания

также

должны

быть

приняты

во

внимание

(электрические и временные параметры).

Таким образом передача 8 бит данных от передатчика к приемнику

завершаются

дополнительным

циклом

(формированием

9-го

тактового

импульса линии SCL), при котором приемник выставляет НИЗКИЙ уровень

сигнала на линии SDA, как признак успешного приема байта.

В том случае, когда ведомый-приёмник не может подтвердить свой адрес

(например, когда он выполняет в данный момент какие-либо функции

реального времени), линия данных должна быть оставлена в ВЫСОКОМ

состоянии. После этого ведущий может выдать сигнал СТОП для прерывания

пересылки данных. Если в пересылке участвует ведущий-приёмник, то он

должен сообщить об окончании передачи ведомому-передатчику путем не

подтверждения последнего байта. Ведомый-передатчик должен освободить

111

линию данных для того, чтобы позволить ведущему выдать сигнал СТОП или

повторить сигнал СТАРТ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]