2015-11-02 8 views
0

У меня есть пользовательская клавиатура ps2 (матрица 8x8) сопряжена с AT89C51ED2 микроконтроллер, теперь мне нужно сменить его на USB-интерфейс. Я изучаю основы интерфейса USB HID (спецификации класса USB HID, USB complete, Beyond logic) и немного узнали о теории, стоящей за ней.Как написать прошивку для пользовательской клавиатуры USB?

Но я не могу понять часть прошивки, я прочитал приложение для демонстрационной клавиатуры Microchip, которое предоставило образец исходного кода, но я не могу понять в коде, как данные (нажатие клавиши) отправляется на конечная точка IN и то, как хост читает это путем опроса. Я знаю, что конечная точка - это буфер, из которого данные отправляются на хост, но является ли он одним из регистров микроконтроллера и как его использовать в моем коде?.

И я искал подходящий микро-контроллер с поддержкой USB, но не поддерживаются демо доступны, любые предложения будут полезно

+0

Зависит * высоко * от выбранного вами варианта MCU. Поставщики используют множество различных реализаций USB в своих микроконтроллерах. –

ответ

1

AT89C51ED2 datasheet не упоминает поддержку аппаратного обеспечения для USB, так что ответ нет: конечная точка не соответствует аппаратным регистрам. Вместо этого конечная точка будет ссылаться на некоторые программные буферы в ОЗУ чипа и некоторые данные, чтобы отслеживать состояние конечной точки. Каждый бит каждого USB-пакета должен обрабатываться прошивкой устройства, а конечные точки - это абстракция, полностью живущая в прошивке вашего устройства.

Примечание: Я предполагаю, что клавиатура не имеет своего рода чипа интерфейса USB и что линии передачи данных кабеля USB подключаются к микроконтроллеру напрямую или напрямую.

Если вы не можете найти исходный код для клавиатуры, вы можете изучить использование программного обеспечения USB с открытым исходным кодом AVR. Вот некоторые полезные ссылки:

Пожалуйста, обратите внимание, что вы предпринимаете продвинутый проект, и если вы не знакомы с АРНАМИ, USB, микроконтроллерами, обратным проектирование и встроенная разработка/отладка, может быть полезно начать сначала с чего-то более простого.