Краткие теоретические сведения. Интерфейс I2C (шина TWI)предназначен для организации двунаправленной передачи данных по принципу ведущий/ведомый

Интерфейс I2C (шина TWI)предназначен для организации двунаправленной передачи данных по принципу ведущий/ведомый. Для обмена данными используются две линии: SDA, SCL.

Максимальное количество ведомых устройств может быть до 128. Длина линий достигает 3 м., т.е. ведущий может располагаться от ведомого на расстояние не более 3 метров. скорость передачи информации до 100кБит/сек. При ускоренном режиме работы устройств может достигать 400кБит/сек. Это зависит от качества линий связи и длины линии. В системе где используется интерфейс I2C могут быть включены несколько ведущих устройств, однако в каждый момент времени в режиме ведущего может работать только один. Тактовый сигнал SCL всегда формирует ведущий.

Основные особенности интерфейса:

1. Двунаправленный обмен данными

2. Высокая скорость обмена (до 100кБит/сек.)

3. Возможность адресации до 128 устройств

4. Простота программной реализации

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

При формирование бита «старт» на линии SCL должен быть высокий уровень, а на линии SDA перепад напряжения с высокого на низкий. Через некоторое время после старта ведущее устройство формирует первый байт разряды 1-7 определяют адрес ведомого, а нулевой признак передачи или приема данных. После приема этого байта ведомое устройство сравнивает семя старших разрядов со своим адресом и если они совпадают формирует бит подтверждения приема данных. Это означает что в дальнейшем обмен будет происходить между выбранным ведомым и ведущим. Направление передачи определяется нулевым байтом. По окончанию передачи ведущее устройство формирует сигнал «стоп».

Управление портом производится с помощью регистров: TWBR, TWAR, TWCR, Регистр бод генератора.

Регистр скорости передачи TWBR.Скорость передачи определяется по следующей формуле:

Fscl=Fclk/(16+2TWBR), где

Fscl - частота импульсов на линии SCL

Fclk – частота задающего генератора микроконтроллера

TWBR=0-255

Регистр адреса TWAR.Предназначен для хранения адреса ведомого устройства.

Назначение битов регистра:

· D7-D1 – адрес ведомого устройтсва

· D0-TWGCE –если бит установлен в единичное состояние ведомое устройство принимает адрес от ведущего и активируется.

Регистр управления TWCR.Предназначен для хранения управляющих слов организующих работу порта.

Назначение битов регистра:

· D7-TWINT – бит разрешения прерывания от интерфейса. Этот бит устанавливается аппаратно в единичное состояние по окончание выполняемой портом. Сброс этого бита производится при записи единицы в этот разряд. Модуль интерфейса будет обрабатывать программу программу прерывания по единичному признаку этого бита.

· D6-TWEA – бит разрешения формирования признака подтверждения приема данных. Если бит установлен приемник формирует подтверждение приема данных для передатчика. При нулевом значение данного бита приемник отключается от линии.

· D5-TWSTA – флаг состояния старта. При установленном бите модуля интерфейса проверяет линии SDA и SCL, если они свободны, то формирует условие старта. Флаг очищается аппаратно по окончанию условия старта.

· D4-TWST0 – флаг состояния стоп. В режиме ведущего установление данного флага приводит к формированию условия стоп.

· D3-TWWC – флаг ошибки. Бит устанавливается если была сделана попытка записи данных в регистр данных интерфейса до сброса флага TWINT.

· D2-TWEN – разрешение работы модулей интерфейса.

· D1-зарезервированно.

· D0-TWIE – Разрешение прерывания модуля интерфейса.

Регистр статуса TWSR.Назначение битов регистра:

· D7-D3-TWS7-TWS3 – проводя анализ этих битов можно контролировать процесс обмена данными.

· D2-зарезервированно.

· D1-D0-TWPB1-TWPB0 – коэффициент деления частоты предделителя.

Более подробную информацию вы можете найти в разделе 2.11 «Последовательный двухпроводной интерфейс (TWI) I2C».

В стенде интерфейс I2C объедини с часами реального времени, обмен информацией с которыми производится именно по этому интерфейсу. Помимо этого предусмотрены три кнопки «+», «-», «позиция», необходимые для настройки часов. Применение часов как реального устройства для обмена данными по I2C существенно повышает наглядность процесса изучения интерфейса.

Наши рекомендации