Битные данные, содержащие скан-код клавиши в порядке от младших к старшим битам.
Во время передачи данных из устройства PS/2 происходит следующее:
Устройство PS/2 проверяет, что линии синхронизации и клавиатуры являются неактивными. Неактивность указывается состоянием сигнала High. Если обе линии неактивны, клавиатура готовит 'стартовый бит', делая состояние линии данных Low.
Устройство PS/2 затем переводит линию синхронизации в состояние Low примерно на 35 мкс.
Устройство PS/2 затем пересылает остальные 10 битов на скорости около 70 мкс за такт. Устройство PS/2 управляет данными и линией синхронизации.
Компьютер распознает ‘старт’ бит и такты в последовательных данных. За 8-битами последовательных данных следует бит контроля нечетности, и наконец High стоп-бит. Если устройство PS/2 хочет послать еще данные, то сразу за 11-тым битом следует следующий ‘старт’ бит. Эта схема повторяется пока клавиатура не закончит посылать данные, и тогда линии синхронизации и данных вернуться в свое неактивное состояние High.
Рис. 3.3.Передача PS/2 скан-кода клавиатуры
На рисунке 3.3 клавиатура посылает скан-код 16 для клавиши "1", и он имеет нулевой бит четности.
Клавиатура PS/2 и мышь PS/2 используют один и тот же протокол синхронной последовательной коммуникации. Внутренне первоначальная мышь содержала шарик, который вращал два колесика с прорезями. Колесики были соединены с двумя оптическими датчиками положения. Два оптических датчика сообщали о движении по осям x и y, подсчитывая импульсы при движении колесиков. Она содержала также две или три кнопки для нажатия, которые могут считываться системой и однокристальным микроконтроллером. После включения питания посылается команда PS/2, приказывающая мыши начать посылать специальные пакеты данных. Встроенная в микроконтроллер программа в мыши затем начинает периодически посылать в компьютер 3-байтные пакеты данных по сигнальным линиям PS/2. Трехбайтные пакеты данных мыши сообщают относительные движения XY и статус кнопок.
Программное обеспечение интерфейса PS/2 клавиатуры и мыши
Операционные системы обычно включают стандартные драйверы устройств клавиатуры и мыши PS/2. Драйвер клавиатуры преобразует последовательности скан-кодов клавиш в символы, а драйвер мыши использует информацию об относительном перемещении, содержащуюся в пакетах данных мыши, для вычисления положения выводимого указателя мыши и для мониторинга статуса кнопок мыши.
В настольной ОС Windows и в Windows Embedded CE, активность ввода клавиатуры и мыши автоматически создают посылаемое событие Windows, которое обрабатывается функцией обратного вызова приложения окна. Приложение обрабатывает сообщения, которые ему посланы. Он не читает непосредственно ввод клавиатуры и мыши.
Интерфейс шины SPI
Шина последовательного периферийного интерфейса (SPI) была создана в 1980-е годы. SPI использовалась для последовательной коммуникации между микропроцессором и его периферийными ИС. SPI имеет следующие четыре сигнальные линии: Serial Clock (SCLK), Chip Enable or Select (CS), Serial Data Input (SDI), Serial Data Output (SDO). Микропроцессор управляет сигнальными линиями CS и SCLK. Подчиненные устройства SPI получают сигналы синхронизации и выбора элемента памяти из микропроцессора. Когда устройство SPI не является выбранным (элементом памяти), его линия выхода SDO будет иметь три состояния (состояние высокого импеданса). Число битов последовательных данных может варьироваться в зависимости от устройства. Оборудование интерфейса SPI содержит сдвиговые регистры. Один сдвиговый регистр используется для отправки данных, а другой сдвиговый регистр используется для получения данных. Все генераторы являются синхронными и используют SCLK.
Несколько устройств SPI могут соединяться в одно двумя способами. При каскадном соединении используется только один сигнал выбора элемента памяти. Микропроцессор выводит SDO. SDO соединяется со входом SDI одного подчиненного устройства. Линия SDO каждого устройства соединяется с линий SDI другого устройства. Последнее устройство снова соединяется с микропроцессором, так что последовательные данные смещаются через один большой сдвиговый регистр. Это упрощает оборудование и хорошо работает в системах, где все устройства всегда сэмплируются или обновляются одновременно. Но если требуются данные только одного устройства, то потребуется смещаться через другие устройства SPI в цепочке, чтобы добраться до его данных.
Рис. 3.4.Варианты конфигурации двух подчиненных устройств SPI
Во второй конфигурации SPI каждое устройство имеет свой собственный сигнал выбора элемента памяти, и все они функционируют как независимые сдвиговые регистры. Вспомните, что если устройство не выбрано, оно определяет для своего выхода третье состояние. Выходы можно соединить вместе, но только одно устройство в данный момент может быть активировано. Это обеспечивает независимое чтение и запись устройств SPI. Недостатком является то, что требуется больше линий выхода для сигналов выбора элементов памяти. SPI поддерживает также несколько ведущих устройств шины. Скорости генераторов устройств SPI могут изменяться от 30 kHz до 3 MHz. Обычно устройства SPI будут помещать новые данные на своих выходах во время падающего фронта такта, и данные будут поступать внутрь на растущем фронте такта. Внимательно проверяйте техническое описание устройства SPI, так как эта схема иногда различается.
SPI называют также Microwire в ИС компании National Semiconductor. Технические описания устройств SPI компании Motorola часто используют другие названия для сигналов SPI. CS может появиться как SS, SDI как MOSI, и SDO как MISO. Устройства SPI доступны также с несколькими другими уровнями напряжения питания в диапазоне от 2.3 до 5 вольт. SPI использует обычный генератор и стандартные уровни напряжения логики. Это делает аппаратный интерфейс проще, чем последовательное устройство RS-232C, но он также спроектирован для более коротких расстояний, таких как одна монтажная печатная плата (PCB).
Интерфейс шины I2C
Чтобы соединять интегральные схемы на одной монтажной печатной плате также в 1980-е годы появилась шина Inter IC (I2C). Доступен широкий ассортимент ИС и микропроцессоров с интерфейсом I2C, используемым для последовательной передачи данных на другие ИС. Подобно SPI последовательный интерфейс имеет аппаратное преимущество в том, что требует меньше контактов и проводников на монтажной печатной плате, при условии достаточности полосы пропускания.
Шина I2C имеет только два сигнальных провода, SCL и SDA. SCL действует как линия синхронизации, а SDA может действовать как 1-битная последовательная линия данных или как 1-битная последовательная адресная линия. Также требуется, конечно, общая линия заземления. Линии сигналов I2C являются открытыми стоками. В данном случае это означает также, что они управляются только низким сигналом и единственный внешний нагрузочный резистор делает сигнал линии высоким (когда ни одно устройство не делает его низким).
С помощью дополнительных логических вентилей выход с тремя состояниями может моделировать выход со свободным стоком, делая его выходом с тремя состояниями, когда сигнал бита должен становиться высоким.
Устройства I2C являются либо ведущими, либо подчиненными. Подчиненные отвечают на запросы ведущего. Подчиненному устройству I2C присваивается уникальный 7-битный адрес шины I2C. Так как I2C имеет адресную информацию, то протокол этой шины более сложный, чем шины SPI. Вспомните, что SPI использует линии выбора элемента памяти и не имеет адресов.
Когда микропроцессору (контроллеру) необходимо соединиться с устройством I2C (подчиненным), он посылает стартовую последовательность. Чтобы остановить последовательность I2C, микропроцессор посылает стоп-последовательность.
На рисунке 3.5 отметим, что только во время старт-последовательности SDA изменятся из высокого низким при высоком SCL. Отметим также, что только во время стоп-последовательности SDA изменяется из низкого в высокий при высоком SCL. Это позволяет специальной логической схеме обнаружить старт и стоп.
Микропроцессор управляет линиями синхронизации SCL для передачи каждого последовательного бита SDA. Устройства I2C могут управлять низким сигналом SCL для создания ожидания состояния. Типичные скорости передачи лежат в интервале от 100 kHz до 400 kHz.
Проверяйте детали в техническом описании каждого устройства.
Каждая передача адреса и данных содержит всего девять битов. Восемь битов данных с битом подтверждения (ACK), который используется для квитирования. Биты посылаются в порядке от старших к младшим битам, по одному за такт. Используются семь битов адреса, и последний восьмой бит является битом чтения/записи (R/W).
Некоторые технические описания описывают это как восемь адресных битов, где четные адреса используются для чтения, а нечетные адреса для записи, исключая бит R/W.
Подчиненный посылает последний бит подтверждения (ACK) в каждый адрес, и данные пересылаются. Низкое состояние ACK указывает, что подчиненный готов. Когда состояние ACK не будет низким, микропроцессор может послать стоп-последовательность.
Когда микропроцессор хочет послать данные на устройство I2C, он должен выполнить следующие операции I2C, как показано на рисунке 3.5: