|
|
  |
Хочу понять принцип работы USB устройств, Как сделать простейшее устройство и управлять им через USB |
|
|
|
Jul 2 2011, 14:57
|
Группа: Новичок
Сообщений: 2
Регистрация: 2-07-11
Пользователь №: 66 025

|
Здравствуйте все! Господа, помогите научиться управлять внешним устройством через USB порт. К примеру, USB кабель, две кнопки и два светодиода. Как научить комп видеть нажатие кнопок и включать/выключать светодиоды? Не переделывая готовые устройства, а именно сделать с нуля. Т.е. спаять контроллер и написать прогу. В элекронике немного разбираюсь. Программирование знаю (С++, ассемблер). С чего начать, что почитать? Спасибо.
|
|
|
|
|
Jul 2 2011, 14:59
|
Местный
  
Группа: Свой
Сообщений: 294
Регистрация: 11-11-04
Из: Москва
Пользователь №: 1 109

|
Цитата(DrMcSheen @ Jul 2 2011, 18:57)  С чего начать, что почитать? Агуров "Интерфейс USB" например
|
|
|
|
|
Jul 2 2011, 17:36
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(Asb @ Jul 2 2011, 17:59)  Агуров "Интерфейс USB" например Сюда также добавлю Гука "Шины PCI, USB и FireWire", а также книги по USB от Jan Axelson: http://www.lvr.com/index.htmlИ еще вот это: http://www.beyondlogic.org/usbnutshell/usb-in-a-nutshell.pdfИ еще спецификацию, без нее никуда. Начинать рекомендую с AT89C5131, там очень простой и понятный USB - движок. Он и описан в книге Агурова, изобилующей неточностями и откровенными ошибками, но при всем при этом все же достаточно удачной и полезной (только не начинайте с Агурова, вы в этих ошибках и неточностях просто утонете) ...
|
|
|
|
|
Jul 2 2011, 18:25
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(DrMcSheen @ Jul 2 2011, 18:57)  Господа, помогите научиться управлять внешним устройством через USB порт. Самое простое и быстрое - взять пример CDC-устройства, а по-проcтому USB/COM-конвертера, построенного на выбранном вами МК. Приложения такого рода легко найти на сайте компании-производителя МК, имеющего на борту USB-интерфейс. Обычно в таком приложении бывают реализованы функции передачи и приема байт USB- и UART-интерфейсами. Например: USB_TX( char B ) - передача байта b по USB. USB_RX( char B ) - прием байта b по USB, эта функция сама вызывается, при каждом принятом байте. иногда последняя функция выдает сразу строку принятых байт: USB_RX( char *str, int len), т.к. по USB обычно передают блоками. Аналогично выглядят и функции приема/передачи по UART: UART_TX( char B ) - передача байта b по UART. UART_RX( char B ) - прием байта b по UART, эта функция сама вызывается, при каждом принятом байте. Фунция конвертора программируется как-то так: UART_RX( B ) { USB_TX( B ); } - передавливает принятые по UART байты в USB. USB_RX( B ) { UART_TX( B ); } - передавливает принятые по USB байты в UART. или USB_RX( str, len) { for(int i=0;i<len;i++) UART_TX( str[i]); } Так вот это место разламываешь и пишешь в тело функции USB_RX() свой код, который использует принятые по USB байты по назначению, т.е. рассматривая их, как команды.
|
|
|
|
|
Jul 2 2011, 21:13
|

Практикующий маг
     
Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576

|
Цитата(DrMcSheen @ Jul 2 2011, 18:57)  Господа, помогите научиться управлять внешним устройством через USB порт. К примеру, USB кабель, две кнопки и два светодиода. Сначала решите на чем Вы будете это делать -какой фирмы контроллер (обычно выбирают то к чему душа лежит), какие требования к производительности, объему ОЗУ и т.д. Или Вам все равно? Потом могут быть варианты. Например берете преобразователь UART-USB, подключаете...и все...знаний о работе USB вообще не требуется. Ну а если совсем с нуля...такое умение как написание драйверов под Windows, обработчиков прерываний для протокола USB и прочая хрень конечно может быть полезная в освоении железа и С++, но очень утомительна.
|
|
|
|
|
Jul 4 2011, 16:17
|
Группа: Участник
Сообщений: 13
Регистрация: 23-07-09
Пользователь №: 51 509

|
|
|
|
|
|
Jul 4 2011, 16:49
|
self made
   
Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795

|
Цитата(Xenia @ Jul 2 2011, 14:25)  Самое простое и быстрое - взять пример CDC-устройства, Издеваетесь. самое простое, это взять готовый модуль на базе FT245. Вот там уж точно проще некуда. Разбираться в ЮСБ не советую даже начинать, если вы не знакомы хотя бы с парой других серийных протоколов. Но и то, разница в сложности между UART и USB - 1:100, так что не ожидайте все понять сразу.
|
|
|
|
|
Jul 4 2011, 20:38
|

unexpected token
   
Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987

|
DrMcSheenВы уже имеете опыт работы с микрокотроллерами? Если нет, то сначала определитесь МК какого семейства вы хотели бы изучить и наберитесь определенного опыта программирования этих МК. Практически все семейства имеют поддержку USB. Как любитель старого и доброго 8051, не могу не посоветовать Cypress и Silabs. В обоих случаях есть удобные средства разработки, хорошая тех. документация и множество примеров программирования.
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Jul 5 2011, 11:08
|
Группа: Новичок
Сообщений: 2
Регистрация: 2-07-11
Пользователь №: 66 025

|
Вроде ставил галку на уведомление по мылу про новые ответы, но тишина, думал тема никому не интересна. А тут вон чего. Всем спасибо, получил представление о работе USB. Честно говоря, изначально я представлял себе плату с парой транзисторов и резисторов, наивный ))) Побродив по вашим ссылкам, нашёл ещё интересный сайт, мож кто позже заинтересуется темой. http://www.efo.ru/doc/Ftdi/Ftdi.pl?778А сам отложу дело на потом, очень сложно.
|
|
|
|
|
Aug 8 2011, 20:05
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 16-09-05
Пользователь №: 8 645

|
Цитата(DrMcSheen @ Jul 2 2011, 18:57)  Здравствуйте все! Господа, помогите научиться управлять внешним устройством через USB порт. К примеру, USB кабель, две кнопки и два светодиода. Как научить комп видеть нажатие кнопок и включать/выключать светодиоды? Не переделывая готовые устройства, а именно сделать с нуля. Т.е. спаять контроллер и написать прогу. В элекронике немного разбираюсь. Программирование знаю (С++, ассемблер). С чего начать, что почитать? Спасибо. http://www.instructables.com/id/10-minute-...-control/#step1в ссылочке описано то, что Вы хотите. Но без конвертера USB-serial все равно не обойтись, как уже говорилось к в других комментах.
|
|
|
|
|
Aug 9 2011, 08:13
|
Группа: Участник
Сообщений: 12
Регистрация: 2-07-11
Из: Россия
Пользователь №: 66 026

|
Я бы тоже хотел знать, как они работают... или хотя бы их устройство)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|