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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Помогите c Cypress CY7C68013, Изохронная IN точка и FIFO.
skyspark
сообщение Jan 28 2009, 19:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-02-08
Пользователь №: 35 238



Привет.
Начал разбиратся с сайпресом, столкнулся с проблемой, конфигурирую EP2 как ISOC IN AUTOIN=1. Выбираю нулевой адресс fifo. С ПЛИС дергаю лапкой SLWR и/или PKEND. Тактовую ПЛИС беру IFCLK = 48МГц.
Наблюдается следющее:
Если дергать лапкой SLWR, сигнал FULL = 0, тоже просходит если дернут PKEND 4 раза (по числу буфферов) ,EMPTY ведет себя адекватно после первого клока записи или окончания пакета EMPTY = 0.

Инитил так, больше ничего не делал:

CODE

REVCTL = 0x03; // REVCTL.0 and REVCTL.1 set to 1
SYNCDELAY;

CPUCS = 0x12;
SYNCDELAY;

IFCONFIG = 0xE3;
SYNCDELAY;

EP2CFG = 0xD0; // EP2 is DIR=IN, TYPE=ISO
SYNCDELAY;

FIFORESET = 0x82; // Reset the FIFO
SYNCDELAY;
FIFORESET = 0x82; // Reset the FIFO
SYNCDELAY;
FIFORESET = 0x82; // Reset the FIFO
SYNCDELAY;
FIFORESET = 0x82; // Reset the FIFO
SYNCDELAY;

EP2FIFOCFG = 0x0C; // EP2 is AUTOOUT=0, AUTOIN=1, ZEROLEN=1, WORDWIDE=0
SYNCDELAY;
EP2AUTOINLENH = 0x02; // Auto-commit 512-byte packets
SYNCDELAY;
EP2AUTOINLENL = 0x00;
SYNCDELAY;

PINFLAGSAB = 0x00;
SYNCDELAY;

PINFLAGSCD = 0x00;
SYNCDELAY;


Конечная точка сконфигурировал так:
CODE
;; Endpoint Descriptor
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 82H ;; Endpoint number, and direction
db ET_ISO ;; Endpoint type
db 00H ;; Maximun packet size (LSB)
db 02H ;; Max packect size (MSB)
db 01H ;; Polling interval



Не могу понять, почему он не отсылает пакеты. И достаточно ли USB Console что бы проконтролировать, она мне не зависимо состояния буффера говорит: Isoc IN failed.

Сообщение отредактировал skyspark - Jan 28 2009, 19:27
Go to the top of the page
 
+Quote Post
Мария Е
сообщение Feb 4 2009, 21:46
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 18-11-07
Из: Москва
Пользователь №: 32 424



Я сама тоже разбираюсь с этим МК, режим slave fifo. Но autoin у меня работает. Очень помогла статья: http://www.efo.ru/doc/Cypress/Cypress.pl?2524
Зато не работает autoout. Чтобы не плодить много похожих тем, опубликую свой вопрос здесь.
Сейчас пытаюсь сделать просто закольцовку данных в режиме slave fifo. Мастером служит ПЛИС. Интерфейс асинхронный, autoin, autoout. Данные должны передаваться с компа в 6кт, затем в ПЛИС, затем из ПЛИС в 2кт и в комп. Проблема в том, что при выставлении режима autoout при попытке послать данные из CyConsole в 6 кт, передача не проходит, CyConsole выдает следующее:
Bulk OUT Transfer
Bulk OUT failed

Если не делать autoout, то данные 2 раза отправляются (в силу того, что буферизация двойная), а потом затыкаются. При этом флаг empty на выходе МК не меняется, следовательно ПЛИС и не забирает с него данные.

Если делать только in передачу (из ПЛИС в МК и комп), то все нормально работает.
Для out передачи меняла кт, меняла ногу для флага, но никаких изменений после этого не последовало.
Вот код инициализации slave fifo:
void TD_Init (void)
{
REVCTL = 0x03; // MUST set REVCTL.0 and REVCTL.1 to 1
SYNCDELAY;
CPUCS = 0x10; // set 48MHz clk for CPU
SYNCDELAY;
// this defines the external interface to be the following:
// use slave FIFO interface pins driven async by external master
// enable slave fifo mode
IFCONFIG = 0xcb;
SYNCDELAY;
// sets EP2 valid for IN's
// and defines the endpoint for 512 byte packets, 2x buffered
EP2CFG = 0xe2;
SYNCDELAY;
// sets EP6 valid for OUT's
// and defines the endpoint for 512 byte packets, 2x buffered
EP6CFG = 0xa2;
SYNCDELAY;
FIFORESET = 0x80; // reset all FIFOs
SYNCDELAY;
FIFORESET = 0x02; //reset FIFO EP2
SYNCDELAY;
FIFORESET = 0x04; //reset FIFO EP4
SYNCDELAY;
FIFORESET = 0x06; //reset FIFO EP6
SYNCDELAY;
FIFORESET = 0x08; //reset FIFO EP8
SYNCDELAY;
FIFORESET = 0x00; //return to normal operation
SYNCDELAY;
EP2FIFOCFG = 0x04;
SYNCDELAY;
// this lets the FX2 auto commit IN packets, gives
// ability to send zero length packets,
// and sets the slave FIFO data interface to 8-bits
EP2FIFOCFG = 0x0c;
SYNCDELAY;
// this lets the FX2 auto receive out packets, gives no
// ability to send zero length packets,
// and sets the slave FIFO data interface to 8-bits */
EP6FIFOCFG = 0x10;
SYNCDELAY;
// defines FLAGB as full for 2ep
// FLAGA as empty for 6ep
PINFLAGSAB = 0xca;
SYNCDELAY;
// FLAGC as empty flag for 2ep
// won't generally need FLAGD (default)
PINFLAGSCD = 0x04;
PORTACFG = 0x40; // used PA7/FLAGD/SLCS as a SLCS
FIFOPINPOLAR = 0x00; // set all slave FIFO interface pins as active low
SYNCDELAY;
//set max in paket to 512 bytes
EP2AUTOINLENH = 0x02;
SYNCDELAY;
EP2AUTOINLENL = 0x00;
SYNCDELAY;
OUTPKTEND = 0x86; // arm first buffer by writing OUTPKTEND w/skip=1
SYNCDELAY;
OUTPKTEND = 0x86; // arm second buffer by writing OUTPKTEND w/skip=1
SYNCDELAY;
}

Если у кого-нибудь есть соображения, с чем может быть связано такое поведение МК, от поделитесь пожалуйста.
Go to the top of the page
 
+Quote Post
=AK=
сообщение Feb 6 2009, 11:26
Сообщение #3


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Мария Е @ Feb 5 2009, 08:16) *
Если у кого-нибудь есть соображения, с чем может быть связано такое поведение МК, от поделитесь пожалуйста.


Может, вы посылаете чанк размером, меньше чем оговоренный в конфиге? Скажем, если оговорены чанки по 64 байта, а вы послали меньше, то это будет признаком окончания сессии.

Вообще же чип работает ОК, но с докой, помнится, у нас тоже были какие-то похожие на ваши непонятки. В свое время помучались, методом проб и ошибок подобрали нужный режим, зашили в софт и давным-давно забыли, в чем была заморочка.
Go to the top of the page
 
+Quote Post
skyspark
сообщение Feb 6 2009, 14:26
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-02-08
Пользователь №: 35 238



Цитата(Мария Е @ Feb 5 2009, 00:46) *
Я сама тоже разбираюсь с этим МК, режим slave fifo. Но autoin у меня работает. Очень помогла статья: http://www.efo.ru/doc/Cypress/Cypress.pl?2524


Я разобрался с проблемой. Статья действительно помогла smile.gif Дело было в том, что если поднят флаг FULL, то необходимо запрещать запись в fifo, со стороны мастера. В противном случае КТ перестает работать.

Цитата(Мария Е @ Feb 5 2009, 00:46) *
Если не делать autoout, то данные 2 раза отправляются (в силу того, что буферизация двойная), а потом затыкаются. При этом флаг empty на выходе МК не меняется, следовательно ПЛИС и не забирает с него данные.


Было каким-то похожим образом, вечером посмотрю.
Go to the top of the page
 
+Quote Post
skyspark
сообщение Feb 7 2009, 22:47
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-02-08
Пользователь №: 35 238



Мария.
Не понятно, зачем дважды конфигурировать fifo на EP2, но это ни чего не меняет. А вот где EP6AUTOINLENх. Может по этому не взводит флаги.
А ассинхронный дизайн действительно так необходим? Синхронный выглядит понятнее и продолжает синхронный дизайн в ПЛИС.
Go to the top of the page
 
+Quote Post
Мария Е
сообщение Feb 15 2009, 20:12
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 18-11-07
Из: Москва
Пользователь №: 32 424



Цитата(skyspark @ Feb 8 2009, 01:47) *
Мария.
А вот где EP6AUTOINLENх. Может по этому не взводит флаги.
А ассинхронный дизайн действительно так необходим? Синхронный выглядит понятнее и продолжает синхронный дизайн в ПЛИС.

Ну насколько я понимаю, EP6AUTOINLENх конфигурируется, если ep6 работает в режиме IN, у меня она out, поэтому я EP6AUTOINLENх и не использую.
А про асинхронный интерфейс: человек, который разрабатывает прошивку для ПЛИС, сказал, что ему так удобнее, спорить не стала, мне-то особой разницы нет)

Честно говоря, уже работает. Не поняла толком в чем была ошибка, но помог код, который прислали в личку (Спасибо, alexkok a14.gif )
Go to the top of the page
 
+Quote Post
alevnew
сообщение Mar 4 2009, 13:49
Сообщение #7


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

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



Цитата(Мария Е @ Feb 16 2009, 01:12) *
Ну насколько я понимаю, EP6AUTOINLENх конфигурируется, если ep6 работает в режиме IN, у меня она out, поэтому я EP6AUTOINLENх и не использую.
А про асинхронный интерфейс: человек, который разрабатывает прошивку для ПЛИС, сказал, что ему так удобнее, спорить не стала, мне-то особой разницы нет)

Честно говоря, уже работает. Не поняла толком в чем была ошибка, но помог код, который прислали в личку (Спасибо, alexkok a14.gif )


Мария, или alexok - не поделитесь кодом инициализации? Беда 1 в 1 как Мария описала - если автоаут - не передаются данные, иначе передаются, пока буффер не заполнится. Не могу понять, все по доке и по примеру из ссылки - не работает.

Цитата(Мария Е @ Feb 16 2009, 01:12) *
Ну насколько я понимаю, EP6AUTOINLENх конфигурируется, если ep6 работает в режиме IN, у меня она out, поэтому я EP6AUTOINLENх и не использую.
А про асинхронный интерфейс: человек, который разрабатывает прошивку для ПЛИС, сказал, что ему так удобнее, спорить не стала, мне-то особой разницы нет)

Честно говоря, уже работает. Не поняла толком в чем была ошибка, но помог код, который прислали в личку (Спасибо, alexkok a14.gif )


ну вроде немного разобрался, если кому интересно на будущее:

После ресета EP2CS = 0x28 (То есть фифо FULL и 4 пакета в буфере, интересно зачем?)
Чтобы это убрать нужно (я использую EP2):
EP2FIFOCFG = 0x01; //выключить автоаут, хотя по умолчанию он и не стоит
SYNCDELAY;
//потом очищаем "имеющиеся" 4 пакета в FIFO
OUTPKTEND = 0x82;
SYNCDELAY;
OUTPKTEND = 0x82;
SYNCDELAY;
OUTPKTEND = 0x82;
SYNCDELAY;
OUTPKTEND = 0x82;
SYNCDELAY;
//и вот теперь уже включить автоаут
EP2FIFOCFG = 0x11;
SYNCDELAY;

после этого вроде работает.
Go to the top of the page
 
+Quote Post
alexkok
сообщение Mar 5 2009, 05:24
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837



Цитата(alevnew @ Mar 4 2009, 17:49) *
Мария, или alexok - не поделитесь кодом инициализации? Беда 1 в 1 как Мария описала - если автоаут - не передаются данные, иначе передаются, пока буффер не заполнится. Не могу понять, все по доке и по примеру из ссылки - не работает.

ну вроде немного разобрался, если кому интересно на будущее:

после этого вроде работает.

Если ещё нужно, то вот моя конфигурация.Прикрепленный файл  EPs_config.txt ( 2.25 килобайт ) Кол-во скачиваний: 789


--------------------
Go to the top of the page
 
+Quote Post
alevnew
сообщение Mar 5 2009, 11:20
Сообщение #9


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

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



Цитата(alexkok @ Mar 5 2009, 10:24) *
Если ещё нужно, то вот моя конфигурация.Прикрепленный файл  EPs_config.txt ( 2.25 килобайт ) Кол-во скачиваний: 789


Спасибо!!!
Все вроде заработало, но в процессе обнаружился такой глюк (или может так и должно быть?):
Допустим делаю конфигурцию EP2 AutoOut и EP4 AutoIn. Все по 512 байт, bulk. Slave FIFO. Async.
Если я ставлю буферизацию EP2=2x - все работает.
Если я ставлю буферизацию EP2=4x, то EP2 работает, а вот EP4 игнорирует входные данные,
но на PKTEND все же реагирует, но присылает пустой пакет.
Причем даже если отключить EP2 (EP2CFG=0) - то все равно EP4 ведет себя так же.
Если же буферизация EP2=2x - то все работает ОК.

Кто-нибудь сталкивался с таким, ли может в даташите где прописано?
Go to the top of the page
 
+Quote Post
alexkok
сообщение Mar 5 2009, 17:46
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837



Цитата(alevnew @ Mar 5 2009, 15:20) *
Спасибо!!!
Все вроде заработало, но в процессе обнаружился такой глюк (или может так и должно быть?):
Допустим делаю конфигурцию EP2 AutoOut и EP4 AutoIn. Все по 512 байт, bulk. Slave FIFO. Async.
Если я ставлю буферизацию EP2=2x - все работает.
Если я ставлю буферизацию EP2=4x, то EP2 работает, а вот EP4 игнорирует входные данные,
но на PKTEND все же реагирует, но присылает пустой пакет.
Причем даже если отключить EP2 (EP2CFG=0) - то все равно EP4 ведет себя так же.
Если же буферизация EP2=2x - то все работает ОК.

Кто-нибудь сталкивался с таким, ли может в даташите где прописано?

В TRM на фиг. 1-17 приведены возможные конфигурации ендпойнтов.


--------------------
Go to the top of the page
 
+Quote Post
alevnew
сообщение Mar 6 2009, 10:10
Сообщение #11


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

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



Цитата(alexkok @ Mar 5 2009, 22:46) *
В TRM на фиг. 1-17 приведены возможные конфигурации ендпойнтов.

А слона то я и не приметил smile.gif
Спасибо!
Теперь все стало на свои места.
Go to the top of the page
 
+Quote Post
alevnew
сообщение Mar 6 2009, 14:21
Сообщение #12


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

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



А вот еще вопрос возник, мож кто сталкивался:
Есть EP4, AUTOIN=1
На каком то этапе (ну какая-либо исключительная ситуация, хост не принимает данные), нужно очистить данные, находящиеся в FIFO.
Пробовал так:
1. Переводим в AUTOIN=0
2. Делаем FIFORESET
3. Делаем EP4BCH:L=0
4. делаем INPKTEND=0x84 два раза

Не работает, уж по всякому пробовал.
Максимум, чего добился, приходят вместо полных пакеты нулевой длины. Но как было в буфере 2 пакета, так и остается. И флаг FULL не сбрасывается.

Мож кто делал подобное?

Сообщение отредактировал alevnew - Mar 6 2009, 14:22
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Mar 16 2010, 19:48
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Проблема с установкой драйверов под Windows7.

Скачал новый пакет разработчика с новыми драйверами: http://www.cypress.com/?rID=34870
Подправил, как описано в мануале, VID и PID.
Собственно проблема в том, что нет цифровой подписи у драйвера. От сюда не могу поставить драйвер для CY7C68013A. Система сначала говорит, что устанавливаемый драйвер не имеет сертификата, все равно продолжить? Жму да. После установки выдает сообщение, прикрепленное к посту.

Пробовал делать и такой маневр:
Код
Для отключения проверки цифровой подписи при установке драйверов я использую:
gpedit.msc=>Конфигурация_пользователя=>Администрат ивные_шаблоны=>Система=>Установка_драйвера=>Цифров ая_подпись_драйверов_устройств=>Включен=>> Пропустить .

Результат тот же.

Так же отключал UAC при помощи утилиты UAC off.

Что еще можно сделать? Возможно ли сделать цифровую подпись своими силами?
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Mar 17 2010, 07:37
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(Vitaliy_ARM @ Mar 16 2010, 22:48) *
Проблема с установкой драйверов под Windows7.
...

Эх, лучше бы Вам задать этот вопрос в теме Проблема CyUSB.sys и 64-х битных Windows. Судя по всему Вы как раз и пытаетесь установить CyUsb.sys под Windows 7 64 bit (x64).

Вот пара ссылок в интернете: Windows 7 - Guide to Installing Un-Signed Drivers in Win 7 x64 и Loading Unsigned Drivers in Windows 7 and Vista 64-bit (x64). Ключевые слова для поиска в интернете - названия тем ссылок, а также "Windows 7 Test Mode".

Лично у меня, использовать CyUsb.sys под Windows 7 x64 получается только в режиме Test Mode и при выборе во время загрузки Windows по F8 "Disable Driver Signature Enforcement". То есть, только до следующей перезагрузки Windows 7 sad.gif . Предлагаемая в интернете утилита Driver Signature Enforcement Overrider, по отзывам пользователей, может привести к краху Windows 7. Достаточно экзотическое решение, предложенное в интернете - однократно загрузить компьютер с отключенной проверкой подписи драйверов, а затем вместо перезагрузки переводить компьютер в спящий режим.

Правильное решение - подписать драйвер CyUsb.sys или использовать класс устройств USB, поддерживаемый Windows. В XP/SP3, Vista и Win7 добавлена поддержка еще одного класса: USB Video Class.

Дальнейшее обсуждение, давайте продолжим в теме Проблема CyUSB.sys и 64-х битных Windows.
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Jun 10 2010, 10:02
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(alevnew @ Mar 6 2009, 18:21) *
А вот еще вопрос возник, мож кто сталкивался:
Есть EP4, AUTOIN=1
На каком то этапе (ну какая-либо исключительная ситуация, хост не принимает данные), нужно очистить данные, находящиеся в FIFO.
Пробовал так:
1. Переводим в AUTOIN=0
2. Делаем FIFORESET
3. Делаем EP4BCH:L=0
4. делаем INPKTEND=0x84 два раза

Не работает, уж по всякому пробовал.
Максимум, чего добился, приходят вместо полных пакеты нулевой длины. Но как было в буфере 2 пакета, так и остается. И флаг FULL не сбрасывается.

Мож кто делал подобное?


Возникла аналогичная проблема: поднял в кипарисе CY7C68013A прерывание по которому нужно очистить FIFO EP2 IN и ничего не очищается, хотя светоидиот по прерыванию мигает.

Может за год уже кто-нибудь решил эту проблему?
Go to the top of the page
 
+Quote Post

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

 


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


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