Муфты электромонтажные от производителя Fucon

Многокнопочная клавиатура с интерфейсом 1-Wire

Bernhard Linke, Maxim Integrated Products Inc, Dallas

Как известно, клавиатуры используются в устройствах на микроконтроллерах для ввода пользовательской информации и управления. В общем случае, многокнопочная клавиатура организуется как матрица кнопок объединенных в столбцы и строки. Таким образом, интерфейс такой клавиатуры потребует определенного минимального количества линий ввода/вывода микроконтроллера. Например, 12-кнопочная клавиатура организуется в формат 4×3 и потребует 7 линий ввода/вывода. Для определения нажатой кнопки на такой клавиатуре микроконтроллер должен просканировать все столбцы и строки. В сети Интернет много информации относительно этой технологии. Кроме того, применяются и другие методы организации клавиатуры.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Здесь мы рассмотрим организацию клавиатуры с интерфейсом 1-Wire, требующей всего лишь две линии (Data, GND) и, соответственно, от микроконтроллера потребуется лишь одна линия ввода/вывода. Основа нашей многокнопочной клавиатуры – 8-канальный адресуемый ключ с интерфейсом 1-Wire DS2408 от компании Maxim Integrated Products.

Микросхема DS2408 – двунаправленный порт с 8 каналами ввода/вывода, управляемый по одной сигнальной линии интерфейса 1-Wire. Выходы 8 каналов выполнены по схеме с открытым коллектором и имеют максимальное сопротивление 100 Ом. В новой микросхеме реализован вывод строба достоверных данных, который может использоваться для защелкивания входных/выходных данных, управлять преобразованием данных во внешней схеме или работать с шиной данных микроконтроллера. Состояние выводов может быть сохранено во внутренней защелке для фиксирования мгновенных значений. Эта функция полезна для поддержки работы клавиатуры или опроса кнопок. Каждый DS2408 содержит 64-разрядный номер, который записан в ПЗУ лазером на этапе производства микросхемы, что гарантирует уникальность каждого прибора и абсолютную идентификацию в сети. Большое число микросхем DS2408 может быть подключено на одну шину 1-Wire независимо друг от друга. Управление DS2408 выполняется по стандартному интерфейсу Dallas Semiconductor 1-Wire.

Принципиальная схема организации клавиатуры на базе DS2408

Схема многокнопочной клавиатуры на DS2408
Кликните для увеличения

8-канальный адресуемый ключ предоставляет порт ввода/вывода (P0-P7), который в нашем случае используется как входы. Резисторы RPD номиналом 1 МОм подключают входные линии на землю, что обеспечивает наличие низкого логического уровня на входах (P0-P7). Цепь D1C1 обеспечивает питание микросхемы от сигнальной линии (паразитное питание). Нажатие какой-либо кнопки ведет к появлению высокого логического уровня на соответствующем порту. Это изменение состояния устанавливает значение во внутренней защелке микросхемы.

Так как 1-Wire устройство является ведомым, то IC1 не инициирует коммуникацию. Инициализацию и опрос шины 1-Wire производит управляющее устройство – микроконтроллер. Чтобы минимизировать нагрузку на контроллер, устройство поддерживает функцию условного поиска, функция 1-Wire сети. Перед использованием данной функции необходимо настроить DS2408 в соответствии с нуждами приложения.

Конфигурирование включает в себя:

  • команду выбора канала, которая определяет отбор входных портов для функции условного поиска;
  • команду выбора полярности канала, которая определяет полярность выбранных портов для функции условного поиска.
  • команду выбора пина или защелки активности порта;
  • установку условия: ответит ли устройство при активности на единственном входе (ИЛИ) или при активности на всех портах (И).

Полагаем, например, что IC1 должна ответить на команду условного поиска, если определена активность на любом из 8 входных портов. Тогда для поиска нам необходимо отправить маску выбора канала 11111111b по адресу 008Bh. Единицы в разрядах байта маски означают, что устройство выбирает соответствующий канал. Далее, для поиска, необходимо выбрать полярность канала: маска 11111111b отправляется по адресу 008Ch, где единички в разрядах означают активный «высокий уровень» для соответствующего канала. В регистр статуса/управления DS2408 по адресу 008Dh необходимо отправить байт 00000001b, что означает выбор защелки активности порта в качестве источника, и устанавить условие ответа устройства при определении активности на единственном канале.

После подачи питания конфигурационные данные необходимо загрузить в 8-канальный адресуемый ключ DS2408 с использованием команды Write Conditional Search Register [CCh]. Далее следует команда Channel-Access Write [5Ah] с данными, определяющими, что порт используется как вход – FFh. Завершает конфигурацию команда Reset Activity Latches [C3h], после этого устройство переходит в рабочий режим и готово отслеживать состояние кнопок.

После конфигурирования, программное обеспечение управляющего микроконтроллера должно реализовать бесконечный цикл, в котором ведомому устройству посылается команда условного поиска Conditional Search [ECh] после импульса сброса. Если нажатия кнопок не определено, то ведомое устройство DS2408 не отвечает на команду условного поиска, о чем говорит высокий уровень на шине, немедленно после команды условного поиска (на протяжении временного интервала, соотвтетствующего чтению двух первых бит по шине). В этом случае микроконтроллер отменяет условный поиск и начинает цикл снова.

Если микросхема отвечает на команду условного поиска, то первые два бита будут 1 и 0, представляя младшие значащие биты кода семейства, 29h, в прямой и инверсной форме. В этом случае, микроконтроллер должен завершить выполнение команды условного поиска, приняв ответ от ведомого – последовательность из 192 бит. Далее микроконтроллер считывает данные от IC1 при помощи команды Read PIO Registers [F0h] с использованием адреса регистра защелки активности порта 008Ah. После этого по шине от ведущего подается команда сброса, затем команда Resume Command [A5h], команда Reset Activity Latches [C3h] и переход в начало цикла для определения следующего нажатия кнопки клавиатуры.

Данные, считанные с регистра состояния защелки активности порта (Activity Latch State Register), говорят нам, какая кнопка была нажата. Если была нажата кнопка S1, то мы получим 00000001b, если нажата S2 – то получим 00000010b, и так далее. По крайней мере один из битов буде равен 1. Если были нажаты несколько кнопок после последней команды Reset Activity Latches [C3h], то несколько бит будут равны 1. Однако в программе микроконтроллера должна решаться такая ситуация – действительно ли были нажаты несколько кнопок.

Следует заметить, что при организации клавиатуры на базе DS2408 возможно разработать клавиатуру с более чем 8 кнопками. В стандартном решении для одной кнопки резервируется один порт (P0-P7), итого – 8 кнопок. Дополнительные кнопки можно связать с двумя одновременно активированными портами. Схема такого решения показана на рисунке ниже.

Если активируется кнопка SN, а следовательно активируются линии Px и Py, то диоды не допускают распространения высокого уровня на другие порты. Теоретический лимит количества кнопок при таком подключении – 255 и такое решение требует сочетания двух, трех, четырех, пяти, шести, семи и восьми диодов и, заметим, в некоторых случаях эффективнее использовать несколько DS2408 на одной шине.

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Sense multiple pushbuttons using only two wires

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя