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

 
 
> А если из двух ендпойнтов одновременно принимать?, Одна - 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
Ответов
jur
сообщение Jul 18 2006, 14:55
Сообщение #2


Местный
***

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



Всем привет!

Прошу меня простить, я на радостях забыл об этой моей теме. Исправляю свою досадную ошибку.

Микросхема CY7C68001 - рулез фарева! :-) Все в ней прекрасно работает, данные превосходно передаются по параллельным ендпойнтам и никаких проблем на самом деле нет. После длительных и трудных ковыряний в интерфейсе с этой микросхемой со стороны ПЛИС, выяснилась банальнейшая фигня! В автомате одновременного доступа к микросхеме (когда по одной ендпойнте валит поток данных, а по второй микроконтроллер изредка передает байтик/другой) содержалась ошибка, из-за которой иногда возникало небольшое сужение импульса записи (SLWR). Вместо положеных 80 ns, выдавалось 40 ns (при минимуме для асинхронного режима 70 ns). После исправления автомата все заработало как часы :-) И на компьютерной стороне все превосходно, никаких пауз не возникает, многократные передачи управляющих блоков туда/сюда идут быстро, без ожидания очередного кванта Винды.

Спасибо вам всем за ответы!

P.S. Теперь считаю себя готовым к освоению CY7C68013A :-) Она дороже на 60% (та, что на 128 ног), но зато содержит внутри микроконтроллер.


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



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

 


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


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