Интерфейсы периферийных устройств. Параллельный интерфейс ввода-вывода. Принципы построения параллельных портов ввода/вывода микроконтроллеров, страница 5

Для понимания этой команды необходимо, чтобы перед глазами кроме исходного текста программы находилась принципиальная схема устройства. Схема приведена на рисунке 5. Из этой схемы видно, что если ни одна из кнопок не будет нажата, то код 111111102, записанный в порт клавиатуры не изменится и при считывании этого порта мы получим этот же код.

Если же будет нажата кнопка на пересечении нулевой колонки и нулевого ряда клавиатуры, то нулевой потенциал с выхода порта вывода через замкнутые контакты этой кнопки поступит на нулевой ряд порта ввода. То есть считанный код примет значение 111011102.

При нажатии кнопки на пересечении нулевой колонки и второго ряда клавиатуры через порт ввода будет считан код 101111102.

Коды, которые считываются из входного порта клавиатуры называются кодами сканирования клавиатуры или скан-код клавиатуры.

Для анализа состояния кнопок клавиатуры можно воспользоваться кодом, считываемым с входного порта клавиатуры. Однако намного лучше сначала скопировать содержимое порта ввода во внутреннюю переменную, а только потом анализировать её содержимое. Это позволяет обеспечить одновременность считывания всех выводов порта (или портов) и тем самым избежать неоднозначности работы микроконтроллера при, казалось бы, одинаковых внешних условиях.

4.3.5. Интерфейс I2C

Это двунаправленная шина, соединяющая между собой различные интегральные микросхемы и модули (например, микроконтроллер и часы).

Разработан фирмой Philips.

I2C – Inter Integrated Circuit.

Интерфейс содержит 2 линии:

  • SDA (SDATA) – линия передачи данных
  • SCL (SCLOCK) – линия синхронизации

Линии подключены к плюсу источника через нагрузочный резистор. Передача данных возможна, если линия не занята. Исходное состояние шины – логическая 1. За время каждого импульса синхронизации передается 1 бит данных. Уровень сигнала на линии SDA должен оставаться постоянным в течение того времени, когда по линии синхронизации передается импульс высокого уровня. Любое изменение сигнала SDA в этот период будет воспринят как сигнал СТОП или СТАРТ.

СТАРТ- и СТОП-состояния

  • СТАРТ-состояние характеризуется переходом от 1 к 0 на линии данных SDA при наличии 1 на линии синхронизации SCL.

·  СТОП-состояние – переход от 0 к 1 на линии SDA при наличии сигнала на SCL.

I2C

master – ведущее устройство. Управляет процессом приёма/передачи.

slave – ведомое ПУ, под управлением ведущего.

Без резисторов, которые подключены к шине источника питания, устройство работать не будет.

Подтверждение приёма сообщения

Количество байт данных от передатчика между стартовым и стоповым состояниями  может быть любым. После передачи каждого байта происходит передача бита подтверждения – сигнала уровня 1, выставляемого передатчиком на шине данных в течение синхроимпульса. Подчиненное устройство в ответ должно генерировать бит подтверждения после приема каждого байта.

Устройство, подтверждающее приём/передачу, должно выставить 0 на линии SDA в течение синхроимпульса.

Протокол передачи данных по шине I2C

Адресация

До того, как на шину I2C будут переданы какие-либо данные, передается адрес. Адресация осуществляется при передаче первого байта после процедуры СТАРТ.

Пример    Часы реального времени PCF583

Можно подключить 2 устройства.

Для того, чтобы часы подключились, необходимо им передать адрес следующим образом:

 


AO – 1 или 0 в зависимости от номера часов.

R/W – направление передачи – передача от часов или передача часам (со старшего 7 бита).

Цикл записи/чтения на примере часов

После старта передается 8-разрядный адрес, потом master формирует 9й импульс. Ведомое устройство распознает адрес.

9й бит – сигнал подтверждения/ответа устройства (ACK), которое имеет соответствующий адрес.

Реализация интерфейса I2C на ADuC812

Интерфейс конфигурируется в 2 режима:

  • Программный ведущий
  • Аппаратный ведомый

Используется 2 контакта:

  • SDATA (ножка 27)
  • SCLOCK (ножка 26)

Для управления интерфейсом используется 3 режима SFR.

  1. I2CCONF (SFR адрес E8h – регистр управления)