Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cypress FX3 (CYUSB3014) не корректно работает сигнал PktEnd
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
Manfred
Здравствуйте, может быть что-нибудь подскажите

Использую CYUSB3014 с ПЛИС 32 бит шина, 50МГц, не корректно работает Bulk In EndPoint, т.е. данные из ПЛИС в компьютер.

Все хорошо работает, если я передаю пакетами 1-255 DWORDs (4 - 1020 байт) и коммичу их у последнего данного сигналом EndPoint, но при попытке передать 1 кбайт или больше USB монитор пишет 'USB device surprisingly removed'. Временные диаграммы ни чем не отличаются от тех когда работа идет корректно. Пробывал использовать ZLP для отправки пакета, ситуация аналогичная.

Если я не использую PktEnd сигнал, то данные передаются только порциями по 16384 байт. Если данные не кратны 16к, то они остаются в буфере CYUSB3014, а моя программа ждет их до TimeOut.

Удается передать по 512к данных (больше не надо), пакетами по 1020 байт или без сигнала PktEnd, т.е. дело не в питание.
dima32rus
Была такая проблема. Передача по USB глючила. Оказалось, неправильно выдавал PktEnd. Там есть тонкости, PktEnd щелкаете только тогда, когда передаете неполный пакет данных. Например, если весь массив данных занимает целое число пакетов, т.е. размер всего массива кратен размеру одного пакета, то PktEnd трогать нельзя. Иначе он лишнюю передачу сделает. Я уже тонкостей всех не помню, могу ошибаться. Если что, смогу завтра подробнее копнуть эту тему, когда будет доступ к проекту.
Manfred
Цитата(dima32rus @ Dec 23 2015, 16:54) *
Была такая проблема. Передача по USB глючила. Оказалось, неправильно выдавал PktEnd. Там есть тонкости, PktEnd щелкаете только тогда, когда передаете неполный пакет данных. Например, если весь массив данных занимает целое число пакетов, т.е. размер всего массива кратен размеру одного пакета, то PktEnd трогать нельзя. Иначе он лишнюю передачу сделает. Я уже тонкостей всех не помню, могу ошибаться. Если что, смогу завтра подробнее копнуть эту тему, когда будет доступ к проекту.


Спасибо, за ответ - очень похоже на то что есть волшебные размеры пакетов, когда PktEnd сигналы в конце пакетов игнорируется (1024 байта одно из них)

Проблема оказалась в том, что в режиме BULK похоже есть таймаут между BulkOut (PC to FPGA) и BulkIn (FPGA to PC) пакетами, если пингануть USB устройство любым BulkOut пакетом, то оно выбрасывает все буфера наружу, не в зависимости от размера записываемых пакетов.

А если между запросом и ответом прошло времени больше некоторого, то пакеты данных записанные в FX3 не отправляются. Со стороны ПК я их ждал по 10 сек.

Т.е. когда я записывал данных больше 1k наступал таймаут на отправление BulkIn данных.

Правильно ли я понимаю, что если хочется пользуясь режимом Bulk гнать прерывистный поток без потери данных и без управления с ПК, то надо все время пинговать USB устройство BulkOut пакетами?

Частота пачек из пакетов у меня где-то 400 Гц, как я понимают на компьютере обеспечить такую минимальную частоту пингования не получиться. Т.е. надо асинхронный режим с потерей данных использовать
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.