|
Работа с USBExpress от Silabs, детали использования USB-MCU серии C8051F32х |
|
|
|
 |
Ответов
|
Jan 24 2007, 21:25
|
Участник

Группа: Новичок
Сообщений: 57
Регистрация: 31-07-06
Пользователь №: 19 217

|
Цитата(vladec @ Jan 24 2007, 11:28)  1. По моему, USBExpress никаких таймеров при своей работе не использует. 2. Работа может быть организована только по инициативе ПК, путем подачи с ПК потока команд чтения и записи. 1 - полностью согласен. 2 - не совсем так. Действительно для начала работы с устройством его надо сначала открыть. Потом можно переслать один пакет со служебной информацией для устройства. После этого устройство в автоматическом режиме начинает передавать данные на компьютер. Компьютерная программа проверяет буфер приема и если есть данные для получения то считывает их. Когда работа с устройством закончена, от компьютера посылается пакет на прекращение передачи. Вот один из примеров алгоритма работы. 3 - отображается только та информация, которая записана в драйвере для соответствующих VID, PID. Классифицировать подключенное оборудование можно по серийному номеру, который берется из самого устройства.
|
|
|
|
|
Jan 25 2007, 09:56
|
Частый гость
 
Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874

|
Цитата(Dmitriy_V @ Jan 24 2007, 21:25)  2 - не совсем так. Действительно для начала работы с устройством его надо сначала открыть. Потом можно переслать один пакет со служебной информацией для устройства. После этого устройство в автоматическом режиме начинает передавать данные на компьютер. Компьютерная программа проверяет буфер приема и если есть данные для получения то считывает их. Когда работа с устройством закончена, от компьютера посылается пакет на прекращение передачи. Вот один из примеров алгоритма работы. Почему же не совсем, именно так, инициатором передачи пакета по usb может быть исключительно хост, т.е. комп. А железка в зависимости от алгоритма отвечает ему. И ни в каком "автоматическом режиме" устройство не будет "передавать данные на компьютер". Работа строится так: Комп шлет информационный пакет "начать передачу", девйас заполняет свою EP(IN) данными и ждет пока комп ее не считает. Комп посылает запрос на считывание, если в EP есть данные, то они пересылаются в буфер драйвера, а оттуда в аппликуху, если нет, то либо железяка отвечает STALL, и драйвер возвращает ошибку, либо ничего не отвечает и комп повторяет запрос, пока железка ему не ответит. Отсюда вывод, чтобы шла непрерываная передача потока на комп, аппликухе необходимо ПОСТОЯННО запрашивать очередную порцию данных. Обычно это дело выносится в отдельный поток.
|
|
|
|
|
Jan 25 2007, 12:12
|
Частый гость
 
Группа: Свой
Сообщений: 153
Регистрация: 15-05-06
Из: Николаев
Пользователь №: 17 119

|
Цитата(Warlord @ Jan 25 2007, 08:56)  инициатором передачи пакета по usb может быть исключительно хост, т.е. комп. А железка в зависимости от алгоритма отвечает ему а если контроллером просто шпарить на выдачу? у компютреа же есть буфер который просто нужно успевать вычитывать в отдельном потоке, там же после вычитывание можно узнать сколько вычиталось т.е. вычитывать постоянно независимо знаем мы о передачи с контроллера или нет?
|
|
|
|
|
Jan 25 2007, 12:46
|
Частый гость
 
Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874

|
Цитата(alvol @ Jan 25 2007, 12:12)  а если контроллером просто шпарить на выдачу? Шпарить нужно не просто, а только тогда, когда знаешь что предыдущая пачка забрана, иначе можешь потерять данные. Цитата(alvol @ Jan 25 2007, 12:12)  у компютреа же есть буфер который просто нужно успевать вычитывать в отдельном потоке, там же после вычитывание можно узнать сколько вычиталось т.е. вычитывать постоянно независимо знаем мы о передачи с контроллера или нет? Здесь все зависит от драйвера железки. Если он поддерживет асинхронный ввод/вывод, и таймауты, то можешь вычитывать, а если нет, то тогда ты рискуешь навсегда зависнуть в попытке чтения, если вдруг передачи с контроллера нет.
|
|
|
|
Сообщений в этой теме
alvol Работа с USBExpress от Silabs Jan 23 2007, 23:10  alvol Цитата(Dmitriy_V @ Jan 24 2007, 20:25) 1 ... Jan 24 2007, 23:58     alvol спасибо, попробуем на практике ) Jan 25 2007, 13:16   Dmitriy_V Цитата(Warlord @ Jan 25 2007, 09:56) Поче... Jan 30 2007, 11:33 alvol Интересно, что прерывание в контроллере по факту з... Feb 9 2007, 20:11 Dmitriy_V Цитата(alvol @ Feb 9 2007, 20:11) Интерес... Feb 10 2007, 01:28  alvol Почитал тут англоязычный форум, судя
по этой теме
... Feb 12 2007, 00:26   Dmitriy_V Цитата(alvol @ Feb 12 2007, 00:26) Почита... Feb 16 2007, 02:46    alvol Dmitriy_V
Вы задали в той теме мой вопрос немного... Feb 16 2007, 18:35     Dmitriy_V Цитата(alvol @ Feb 16 2007, 18:35) Dmitri... Feb 16 2007, 20:52      alvol ага, спасибо
есть и на русском и на ихнем родном (... Feb 16 2007, 22:44       alvol Решил проблему передачи написав другой вариант про... Feb 20 2007, 16:17 Tarkin зравствуйте!
назрела проблема: возможно ли изм... Jan 20 2009, 19:05 _Sam_ Цитатавозможно ли изменение размера пакета в USBXp... Jun 13 2012, 13:43
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|