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

 
 
> Помогите 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
 
Start new topic
Ответов
Мария Е
сообщение 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   Помогите c Cypress CY7C68013   Jan 28 2009, 19:26
|- - skyspark   Цитата(Мария Е @ Feb 5 2009, 00:46) Я сам...   Feb 6 2009, 14:26
|- - skyspark   Мария. Не понятно, зачем дважды конфигурировать f...   Feb 7 2009, 22:47
|- - Мария Е   Цитата(skyspark @ Feb 8 2009, 01:47) Мари...   Feb 15 2009, 20:12
|- - alevnew   Цитата(Мария Е @ Feb 16 2009, 01:12) Ну н...   Mar 4 2009, 13:49
|- - alexkok   Цитата(alevnew @ Mar 4 2009, 17:49) Мария...   Mar 5 2009, 05:24
|- - alevnew   Цитата(alexkok @ Mar 5 2009, 10:24) Если ...   Mar 5 2009, 11:20
|- - alexkok   Цитата(alevnew @ Mar 5 2009, 15:20) Спаси...   Mar 5 2009, 17:46
|- - alevnew   Цитата(alexkok @ Mar 5 2009, 22:46) В TRM...   Mar 6 2009, 10:10
- - alevnew   А вот еще вопрос возник, мож кто сталкивался: Есть...   Mar 6 2009, 14:21
- - Vitaliy_ARM   Проблема с установкой драйверов под Windows7. Ска...   Mar 16 2010, 19:48
|- - Konst_777   Цитата(Vitaliy_ARM @ Mar 16 2010, 22:48) ...   Mar 17 2010, 07:37
- - VladimirB   Цитата(alevnew @ Mar 6 2009, 18:21) А вот...   Jun 10 2010, 10:02
- - Konst_777   Цитата(VladimirB @ Jun 10 2010, 13:02) Во...   Jun 13 2010, 04:55


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

 


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


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