реклама на сайте
подробности

 
 
> А если из двух ендпойнтов одновременно принимать?, Одна - High Speed, вторая - можно Full Speed
jur
сообщение Apr 20 2006, 21:05
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704



Привет!

Соорудил я устройство на CY7C68001. В составе имеется микросхема USB CY7C68001, простенький управляющий микроконтроллер и ПЛИС. Это устройство по одной односторонней ендпойнте гонит поток данных в компьютер на High Speed, на скорости (в пике) 12.5 MHz. По другой вдухсторонней ендпойнте я хотел изредка передавать управляющие команды (изменить режим, изменить интенсивность и т.п.). Получилось, что вторая ендпойнта всегда получает нормальную команду от PC, но когда она отвечает, что мол "Все прекрасно, интенсивность изменена!", ее ответ теряется на очень продолжительное время. Для иллюстрации приведу ситуацию "в лицах":

1. Компьютер передает команду изменить интенсивность и ждет подтверждения.
2. Подтверждения нет в течении нескольких сотен миллисекунд.
3. Компьютер не понимает молчания и передает команду повторно.
4. Подтверждения нет в течении нескольких сотен миллисекунд.
...

Это продолжается несколько раз (я задал до 5 попыток) и потом, вдруг, приходит два подтверждения на первые две команды (видимо потому, что в микросхеме USB имеется буффер на два пакета). Смотрел осциллографом, смотрел по последовательному каналу - всегда имею подтверждение со стороны устройства, что команда получена, обработана и выполнена. Но до приборной программы в компьютере эта команда доходит с очень большим опозданием. Опозданием гораздо большим, чем обычный уровень задержки на вытесняющую многозадачность Windows.

Система: Win XP, драйвер CyUSB.sys из их Девелопер Студии.

В чем могут быть грабли?


--------------------
MPEG-4 - в массы!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
lehho
сообщение Apr 21 2006, 10:16
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 3-05-05
Пользователь №: 4 704



Скажите, а есть ли такая необходимость подтверждать приём команды? Режим BULK гарантирует доставку пакета по назначению. Не очень понятно зачем нужно подтверждение от контроллера. Или Вам нужно обязательно убедиться, что контроллер выгреб данные из FIFO? Он, что может по каким-то причинам это не сделать?
Go to the top of the page
 
+Quote Post
jur
сообщение Apr 21 2006, 17:39
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704



Цитата(lehho @ Apr 21 2006, 13:16) *
Скажите, а есть ли такая необходимость подтверждать приём команды? Режим BULK гарантирует доставку пакета по назначению. Не очень понятно зачем нужно подтверждение от контроллера.
Мысль очень верная! Я тоже начал склоняться к варианту без получения подтверждения. Просто у меня уже очень давно используется простой протокол для такого взаимодействия приборов с компьютером по RS-232C (он сделан с подтверждением). Вот я его с небольшими упрощениями и применил :-)

Однако, такое решение = сдаться без боя :-) Хотелось бы еще повоевать... Но если все-таки не получится - откажусь от подтверждения и, надеюсь, все будет нормально работать.


Цитата(al333 @ Apr 21 2006, 14:31) *
Похоже CY7C68001 или CyUSB.sys пресует твои данные в один фрейм,
Вообще-то очень на это похоже... Причем, не CY7C68001, а именно CyUSB.sys, т.к. я проверил, в CY7C68001 помещается только два ответа (в ендпойнте двойной FIFO). Но как это дело побороть - ума не приложу, т.к. CyUSB.sys - черный ящик...

Цитата(al333 @ Apr 21 2006, 14:31) *
попробуй 8 раз передать одно и тоже или уменьши скорость приема данных по High Speed или засинхронизируй программы в ХР. Но у BULK нет точной задержки по времени.
Еще попробую, как ты говоришь, засинхронизировать программы, точнее, обработку обеих каналов передачи скомбинирую в одной функции. Черт его знает, может этот класс API к CyUSB.sys на самом деле нереентрантный?...


--------------------
MPEG-4 - в массы!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 00:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.013 секунд с 7
ELECTRONIX ©2004-2016