Перейти к содержанию
    

Добрый день

Возник трабл. Пока глубоко не копал, но с понедельника прийдется этим заняться.

 

Имеем CY7C68013 FX2

в нем 6EP - IN

1EP - OUT

 

Столкнулся с тем что из 100 штук систем (система это чип плюс комп) несколько подвисают в процессе приема данных.

 

Происходит следующее. При передачи данных в комп поток неперерывной вычитки данных из ezusb.sys (драйверок free от кипресса хрен знает какой даты, но он у них не менялся и не обновлялся давно) иногда по непонтяным причинам тупо останавливается в драйвере. В железке заведен таймер, который контроллирует прерывание USb в случае, если более нескольких сек (4 сек) не происходит вычитки считаем что компа нет и перезагружаемся. Соответственно как только железка это засекает и перезагружается, то драйвер отлипает и вываливается с данными.

Вопрос.

У кого-нибудь подобное происходило??? Повторюсь, что данный трабл происходит всего на нескольких машинах.

 

С понедельника начну копать свою прошивку на предмет зависона, может конечно и прошивка подвисает, но раньше такого небыло. Проявилось на PC с пнем 4 и двойным ядром. На долбаных целеронах все пашет уже нескольок лет и без проблем. По сему и грешу на связку пень 4 Хрюн 2 и драйвер.

 

ПОМОГИТЕ!!

 

Добрый день.

 

Есть что сообщить по данному вопросу.

 

Поясню некоторые моменты.

Первое, весь обмен реализован в FX2 софтварно (т.е. не использую FIFO или GPIF).

Для ускорения использую AUTOPOINTER.

Вот именно с этим и связана была проблемма.

Быть может это кому-то поможет.

Иногда значение AUTOPTRSETUP изменяется.

Это происходит как при перезагрузке (причем цепочка RESET отрабатывает отлично. Все тайминги по сбросу соблюдены). В рабочем режиме я просто установил инициализацию регистра перед использованием соответствующего указателя.

Т.е. при запуске значение AUTOPTRSETUP не устанавливается дефолтным. И просто разрешение работы указателей недостаточно (но тут как говорится сам дурак, надо было жестко эту ячейку переинитить со всеми битами).

Есть подозрение что и в рабочем режиме это тоже происходит. Так как инициализация ячейки перед использованием соответствующего указателя еще лучше помогла.

 

Вывод таков. Быстро ухожу на FIFO :) Просто реализовал данное чудо 3 года назад и небыло желания что-то координально менять.

 

Удачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте!

 

Распаял тут cy7c68013a-56pvxc с минмумом необходимого обвеса: резисторы н VCC вместо EEPROM, кварц с двумя конденсаторами по 20pF, WAKEUP - резистор к VCC, RESET - RC цепь, VCC и AVCC - +3.3V, GND и AGND - земля. Все остальное в воздухе.

 

Питание берется с USB и понижается до 3.3 посредством LM2937 (10 мкф электролит на выходе).

Тестером мерил - в норме.

 

Девайс подключается и определяется всегда с первого раза, работает пример bulkloop.

 

Но подключается всегда на FULL SPEED (сразу и после перподключения после загрузки bulkloop). Так показавает USBView, а при подключении (и после загрузки примера) винда орет, что устройство может работать быстрее.

 

Пробовал на разных компах, менял кабель.

Пробовал подавать питаие от внешнего БП.

 

Сразу скажу: плата в принципе ужасная (не соответствует требоаниям cypress - представляет из себя просто расходящиеся паучком дорожки (~5 см).

 

Пробовал подпаивать USB кабель (обрезал разъем с одной стороны) непосредствеено кдорожкам D+, D- в непосредствеенной близости от ножек чипа и подключать к компу через него (вместо установленного на плте разъема), тем амым изключив 5-сантиметровые отрезки дорожек на плате. Не помогло.

 

Что можно предпринять еще, кроме передеки PCB? Занятие это требуюее некоторого времени и дорогостоящее. Была взята имеющаяся в наличии плата под данный шаг.

 

P.S.: на FULL speed подсоединяется устойчиво и без споев.

Изменено пользователем SancheSZ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте!

 

Распаял тут cy7c68013a-56pvxc с минмумом необходимого обвеса: резисторы н VCC вместо EEPROM, кварц с двумя конденсаторами по 20pF, WAKEUP - резистор к VCC, RESET - RC цепь, VCC и AVCC - +3.3V, GND и AGND - земля. Все остальное в воздухе.

Надо бы еще Reserved подключить к GND.

 

Девайс подключается и определяется всегда с первого раза, работает пример bulkloop.

 

Но подключается всегда на FULL SPEED (сразу и после перподключения после загрузки bulkloop). Так показавает USBView, а при подключении (и после загрузки примера) винда орет, что устройство может работать быстрее.

Проверьте частоту кварцевого резонатора на выходе CLKOUT после подключения. Должно быть 12 МГц±100 ppm.

Вообще, требования к кварцевому резонатору, изложенные в "Migrating From EZ-USB FX2™ to EZ-USB FX2LP™" (fx2_to_fx2lp.pdf):

• 24 MHz ±100 ppm

• Parallel resonant

• Fundamental mode

• 500 μW drive level

• 12-pF (5% tolerance) load cap

 

Ну и перечитайте разделы "2.2 Minimum Reset Time" и "2.3 VCC Ramp Up Time" из этого документа.

 

Если есть возможность, сразу замените кварцевый резонатор на кварцевый генератор, а вместо RC цепи для RESET используйте микросхему монитора питания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, вроде бы проблема снята....

 

Reserved был подключен изначально (забыл написать).

 

Решил зашунтировать электролит по питанию несолькими керамическими кондюками по 0,1 мкф (пвесил в нескольких частях платы, но с учетом моего паучка все они далеко от чипа).

 

Не помогло. Тогда повесил еще один кондюк непосредствеено к дорожкам побиже к чипу на AVCC и AGND. После этого стал определяться как High Speed.

 

Самое забавное, что когда повесил этот кондюк, обнаружил, что AGND на землю я не припаял :). В итоге так оно и работает :) Невероятно - но факт. (конечно припаю позже).

 

На данный момент по крайней мере нормально все определяется в винде. Посмотрим, что будет, когда начну подключать к нему АЦП...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

День добрый!

Вопрос более от аппаратчика, чем от программера - есть плата, на котрой распаян CY7C68013A-56LFXC. Для проверки качества разводки проводников на плате необходимо убедиться что он безглючно работает в high-speed режиме (т.е. на 480 мбитах). Можно ли это сделать используя только штатные программы от Cypress'а вроде USB Console? Подойдут ли для этой цели уже упоминавшиеся здесь скомпилированные примеры типа bulkloop, streamer и т.п. Не хочется вникать в несвойственну тему - программирование под винду :)

В комплекте "USB Dev Studio" нашёл программулину, которая по идее выполняет все эти действия - Streamer.exe (Streaming Demo). Я понимаю, что для её работы в чип необходимо загрузить что-то. А вот что - пока не пойму :)

 

Заранее благодарен.

(P.S. Прошу не счесть это рекламой, приаттачена схема и фото печатной платы)

post-25127-1212439339_thumb.jpg

cxema.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

День добрый!

Вопрос более от аппаратчика, чем от программера - есть плата, на котрой распаян CY7C68013A-56LFXC. Для проверки качества разводки проводников на плате необходимо убедиться что он безглючно работает в high-speed режиме (т.е. на 480 мбитах). Можно ли это сделать используя только штатные программы от Cypress'а вроде USB Console?...

Да, именно с помощью CyConsole (Cypress USB Console) можно проверить работу контроллера. В теме прием данных из АЦП в ПК по USB я выложил Archive.rar. Из папки "\Archive\Firmware" загрузите в Ваш контроллер файл "ADC_to_USB.hex" с помощью CyConsole. А затем проверьте скорость обмена с помощью программы "Test_Exch_VS.exe" из папки "\Archive\Software\Debug". Если будут вопросы, запустите "GPIF Designer_demo.htm" из папки "Archive\GPIF Designer_demo". В этой демонстрации для Вас много лишнего. Но загрузка *.hex файла в контроллер и проверка скорости обмена там есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, именно с помощью CyConsole (Cypress USB Console) можно проверить работу контроллера....

Большое спасибо за ваш пример и тьюториал по работе с GPIF!

Всё сразу получилось, 33 метра принимаются за 1.5 секунды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему то не получается отредактировать предыдущее сообщение.

Что хотел сказать - USB View всё равно показывает, что устройство находится не в High Speed режиме, а в Full.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему то не получается отредактировать предыдущее сообщение.

Что хотел сказать - USB View всё равно показывает, что устройство находится не в High Speed режиме, а в Full.

Где-то на форуме уже было сообщение, что "usbview.exe" неправильно показывает режим работы устройств USB. У Microsoft есть программа "UVCView.x86.exe" (USB Video Class descriptor viewer), которая правильно отображает режим работы устройства USB.

 

Для определения в каком режиме находится контроллер FX2LP можно использовать CyConsole. При отключенной (незапрограммированной) EEPROM контроллер будет определяться, как устройство с VID=0x04B4 и PID=0x8613. И, если для установки драйвера Вы использовали "CyUSB.inf" из "Archive.rar", то CyConsole отобразит FX2LP как "Cypress FX2 - No EEPROM (0x8613)". И вот теперь, если в диалоговом окне программы CyConsole в списке "Configuration Interfaces (4)" выбрать строку с "Alt Setting" равным 1, то в списке "Interface Endpoints (6)" будут отображены конфигурации EndPoint-ов для текущего режима работы FX2LP. Если значение "Max Pkt Size" равно 512, то FX2LP работает в режиме High Speed, если 64 - то в режиме Full Speed.

post-5644-1212681237_thumb.jpg

post-5644-1212681246_thumb.jpg

UVCView.x86.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

может не по теме, но мне надо прочитать и перешить cy7c68013-100ac внутрисхемно.

где взять программу и схему подключения. я не программист не понял что

скачивать с Cypress а старые ссылки не работают

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто какую скорость выжал из 68013а ? А то у меня никак больше 15 мегов в секунду не выходит и не могу понять то ли винда не тянет больше то ли устройство. Кстати если разводка не очень грамотная, скорость может падать, и как определить в чем проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто какую скорость выжал из 68013а ? А то у меня никак больше 15 мегов в секунду не выходит и не могу понять то ли винда не тянет больше то ли устройство. Кстати если разводка не очень грамотная, скорость может падать, и как определить в чем проблема?

Этот вопрос обсуждается на форуме достаточно часто:

и так далее.

 

FX2LP содержит регистры ERRCNTLIM (USB Error Counter Limit), CLRERRCNT (Clear Error Count), USBERRIE (USB Error Interrupt Enables), USBERRIRQ(USB Error Interrupt Request). Эти регистры можно использовать для организации мониторинга ошибок на шине USB.

 

Можно использовать firmware из Archive.rar как Speed Test Bench. Для этого нужно:

  • заменить файл GPIF.c в папке "\Firmware" на одноименный из архива "GPIF.rar", присоединенного к этому сообщению;
  • перекомпилировать firmware и загрузить новый вариант в FX2LP;
  • измерить скорость обмена с помощью утилиты "\Software\Debug\Test_Exch_VS.exe"
У меня получилась такая скорость обмена:

post-5644-1218270897_thumb.jpg

GPIF.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вашу прошивку не смог запустить, у меня вообще не работает ни одна прошивка на основе фреймворка fx2, что то не так с перечислением, устройство отвечает неправильно или совсем не отвечает. Написал свою тестовую прогу, проверил счетчик ошибок юсб, он все время равен 0, после 600 мегабайт трансфера тоже не изменился. Сделал в программе две точки 2 out и 6 in Прграмма на компе в паралельных потоках читает и пишет в эти точки, скорость получил по 14 мегабайт в секунду, суммарная соотв. 28 мб\сек вроде и неплохо но хочется чтобы такая же была в одну сторону. На днях попробую разобратся почему не работает перечисление и попробую изохронную передачу там и скорость выше должна быть и ошибки, если есть, все вылезут. Если у кого есть мысли по поводу моих проблем, напишите пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вашу прошивку не смог запустить, у меня вообще не работает ни одна прошивка на основе фреймворка fx2, что то не так с перечислением, устройство отвечает неправильно или совсем не отвечает. Написал свою тестовую прогу, проверил счетчик ошибок юсб, он все время равен 0, после 600 мегабайт трансфера тоже не изменился. Сделал в программе две точки 2 out и 6 in Прграмма на компе в паралельных потоках читает и пишет в эти точки, скорость получил по 14 мегабайт в секунду, суммарная соотв. 28 мб\сек вроде и неплохо но хочется чтобы такая же была в одну сторону....

...

Если у кого есть мысли по поводу моих проблем, напишите пожалуйста.

Тогда, если есть желание, выложите исходники Вашей тестовой программы и схему Вашего устройства.

 

... На днях попробую разобратся почему не работает перечисление и попробую изохронную передачу там и скорость выше должна быть и ошибки, если есть, все вылезут...

Максимальная скорость изохронного обмена для одной конечной точки (Endpoint) не превышает 24 МБайт/сек. ("Universal Serial Bus Specification" раздел "5.6.4 Isochronous Transfer Bus Access Constraints"). Это более, чем в два раза меньше по сравнению с Bulk обменом (53 МБайт/сек).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сегодня испробовал все 4 точки в булк режиме две на вход две на выход, получил суммарную скорость около 34 мегабайт в секунду, такое чувство что на одну конечную точку виндовс ограничивает количество запросов в секунду. Такое возможно? Выложил схемку, прошивку, софт (возможна проблема при запуске, после прошивки через cyConsole необходимо выбрать первую альтернативную конфигурацию)

FX2.rar

Изменено пользователем DR.FAUST

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...