Информация & документация

Подключение клавиатуры к микроконтроллеру

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

Физическое соединение между клавиатурой и ее ведущим показано на рисунке 1. Используется две линии ввода-вывода. В клавиатуре выходы этих линий сделаны по схеме с открытым коллектором, а резисторы подтягивают линии к напряжению питания. Если мастер будет посылать команды клавиатуре, он также должен использовать только открытый коллектор (для исключения конфликтов). В микроконтроллере для линии A удобнее использовать вывод, способный вызывать прерывание при изменении сигнала на входе. Существует два вида соединителей: 5-выводный разъем DIN типа "5D", и меньших размеров 6-выводный mini-DIN. Распиновка показана в таблице 1.

Таблица 1. Назначение выводов разъема AT-клавиатуры.
Компьютер AT
Сигналы DIN41524, мама со стороны компьютера 5-выводный DIN 180° 6-выводный Mini DIN тип PS2, мама со стороны компьютера
Clock (тактирование) 1 5
Data (данные) 2 1
не подключен 3 2, 6
GND 4 3
+5V 5 4
Shield (экран) Shell Shell

Временная диаграмма

Временная диаграмма передачи данных ведущему из клавиатуры показана на рисунке 2. Протокол следующий: один стартовый бит (всегда 0), восемь битов данных, один бит нечетного паритета и один стоповый бит (всегда 1). Данные верны во время низкого уровня сигнала тактирования. Клавиатура генерирует сигнал тактирования. Импульсы тактирования имеют длительность 30-50 мкс в состоянии низкого уровня и 30-50 мкс в состоянии высокого уровня.

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

Скан-коды

Каждая клавиша в AT-клавиатуре имеет собственный скан-код. Когда происходит нажатие клавиши, этот код передается. Если клавиша нажата какое-то время, передача начинает повторяться. Стандартная скорость повторения - 10 раз в секунду. Когда клавиша отпускается, клавиатура следом за скан-кодом клавиши посылает код "break" ($F0). Для большинства клавиш скан-код имеет размер 1 байт. Некоторые клавиши, например Home, Insert и Delete имеют расширенный скан-код. Размер расширенных скан-кодов - от 2 до 5 байт. Первый байт всегда содержит $E0. Это также верно и для последовательности "break", т.е. E0 F0 xx...

AT-клавиатуры способны работать с тремя наборами скан-кодов. Набор 2 используется по умолчанию.

Ошибки

Если ведущий рассинхронизируется с клавиатурой, все принимаемые данные будут неправильными. Единственный способ решения этой проблемы - использование тайм-аута. Если 11 битов не приняты за 1.5 мс, значит произошла ошибка. Счетчик битов должен быть сброшен.



Hosted by uCoz