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

 
 
 
Reply to this topicStart new topic
> CY7C68013A ПОДВИСАЕТ
alevnew
сообщение Mar 17 2009, 04:50
Сообщение #1


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

Группа: Участник
Сообщений: 90
Регистрация: 17-05-07
Пользователь №: 27 775



Суть проблемы:
Имеем CY7C68013A в режиме SLAVEFIFO, EP2 - 2x, AUTOOUT, EP4 - 2x AUTOIN, EP6 - 4x AUTOIN.
Indexed mode. Шина 16 бит. Синхронный режим.
Это все привязано к FPGA с управляющим процем и памятью.
Проц через FPGA управляет потоками данных между CY и FPGA.
Итак через EP2 устройство принимает небольшие пакеты данных, через EP4 отправляет пакеты, все пакеты защищены контрольными суммами.
Через EP6 устройство отправляет на комп данные, размер несколько мегабайт.
Драйвер CyUSB.sys, использую функции IOCTL.

Ситуция такая:
1. передаем малые пакеты по EP2 и EP4 - передаем поочередно туда-сюда, долго, "часами" - все работает.
2. Теперь начинаем передавть мегабайты по EP6. Если передаем разом 32 мегабайта, они проходят в норме, без единой ошибки.
Но вот после этой успешной передачи у меня проходит в направлении к девайсу через EP2 пакет, девайс отвечает пакетом через EP4.
И вот этот пакет EP4 уже НЕ ПРОХОДИТ. После этого не проходит уже совсем ничего ни по одной EP!
Девайс можно отключить от компа (питание у него свое), подключить снова, как устройство он будет видется, но уже ни одна EP2,4,6 не работает!
Все EP висят намертво!.
3. Та же ситуация, но дробим пакет 32 мегабайта на 2 по 16 МБ и добавляем к каждому по 2 байта, чтоб проходил PKTEND.
Шлем пакеты по всем EP ПООЧЕРЕДНО (то есть дожидаемся, пока прошли все данные по одной EP, потом переключаемся на другую).
Все работает ОК, очень долго тестировал непрерывно, без сбоев.
4. Все вроде бы ОК в пункте 3, но хотелось бы, пока идут пакеты через EP6 общаться еще и по Ep2+EP4.
Делаю так - в моменты, когда EP6 ставит флаг FULL, переключаюсь на другие EP, и считываю и отправляю пакетик данных, потом снова переключаюсь на Ep6.
Это работает некоторое время, но рано или поздно все EP на CY виснут, причет точно также, как описано в п. 2.
Причем иногда достаточно сократить размер пакета, передаваемого через EP6 на 1 килобайт, как вроде все начинает работать до некоторого момента, потом все снова виснет.

Уже голову сломал. Сделал задержки по нескольку тактов между сигналами WR (RD) и преключениями адреса EP - как мертвому припарки.
Уже так сделал - сигнал WR (RD) становится неактивным, ждем 8 тактов IFCLK, переключаем адрес, ждем 8 тактов, производим операции с выбранной EP - все равно виснет. А вот если дождаться окончания передачи всех данных по текущей EP, тогда все работает.

Сообщение отредактировал alevnew - Mar 17 2009, 04:51
Go to the top of the page
 
+Quote Post
kimstik
сообщение Mar 17 2009, 14:15
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 46
Регистрация: 4-02-05
Из: Москва
Пользователь №: 2 430



Посмотри эрраты на FX2.
У них с FIFO стробированием были парочка тонких моментов.
Go to the top of the page
 
+Quote Post
alevnew
сообщение Mar 17 2009, 14:22
Сообщение #3


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

Группа: Участник
Сообщений: 90
Регистрация: 17-05-07
Пользователь №: 27 775



Цитата(kimstik @ Mar 17 2009, 19:15) *
Посмотри эрраты на FX2.
У них с FIFO стробированием были парочка тонких моментов.

Да я скачл эррату с их сайта - написано No errata items. biggrin.gif
Может есть ссылка какая еще ?
Go to the top of the page
 
+Quote Post
kimstik
сообщение Mar 18 2009, 14:28
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 46
Регистрация: 4-02-05
Из: Москва
Пользователь №: 2 430



Цитата(alevnew @ Mar 17 2009, 17:22) *
Да я скачл эррату с их сайта - написано No errata items. biggrin.gif
Может есть ссылка какая еще ?


Или это аппликуха была. Помню что нарвался на подобное.
Go to the top of the page
 
+Quote Post
alevnew
сообщение Mar 19 2009, 05:06
Сообщение #5


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

Группа: Участник
Сообщений: 90
Регистрация: 17-05-07
Пользователь №: 27 775



В общем после почти недельной борьбы все-таки удалось одержать победу над сим девайсом !
Долго не мог понять толком закономерность подвисания - то вроде часами работает, а то виснет с первого раза.
В конце концов заметил, что если передавать "сгусток" байт 0xFF, то практически всегда подвисает, а если 0 - то никогда.
Пришел к выводу, что это "ground bounce" - звон земли, проложил дополнительную землю между FPGA и CY7C68013A, и все нормализовалось.
(Плату на опытный образец сделал 2-хстороннюю, вот и вылезла проблема).
Кстати, по поводу подвисания при передаче 0xFF вроде где-то мелькали сообщения, видимо та же проблема.
Так что вот так...
Go to the top of the page
 
+Quote Post

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

 


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


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