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

Кипарис (cy7c68013a) slave fifo и работа с этим из win10

Привет всем,

Появилась необходимость с плис и выкачать некоторое количество данных на скорости порядка 40Мб/с , для этого под рукой оказался модуль на  cy7c68013a, который (по идее) такое позволяет в режиме slave fifo.  Однако возникла какая то странная проблема! Под 10ку не могу найти как именно считать эти данные используя стандартный драйвер ( это единственный живой вариант тк 10 не позволяет ставить неподписанные драйвера ). Хотелось бы прицепиться консольной програмкой (на си) к драйверу  и скачать что там плис выдает. Соотв. вопрос к людям которые работали с данными микросхемами, куда копать?  Может есть что-то из примеров/дельных советов ?  

Заранее спасибо!

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


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

Если "40Мб/с " имеются ввиду мегабайты (?) то насколько я знаю, этм мс в синхронном режиме качает на тактовой не более 24MHz.

Все что надо, есть на сайте, примеры. Исходный коду утилиты на console32. Из утилиты "отсаживаете" функцию чтения из fifo.

"Прошивка" для CY7C68013 тамже, в виде проекта Keil. Пример можете взять "slave fifo" для закачки mpeg (исходник проекта).

Если вдруг рассичтываете на прокачку мегабайтов, то не выйдет, тк сам канал USB дает только 480 Мбит/с "чистыми".

Вообще чип очень старый, смотрите более мощные. Аналогичные девайсы есть у FTDI.

 

MSVS2008 + cyapi.lib  Консольное Win32

. . . .

 OVERLAPPED outOvLap, inOvLap;
 CCyUSBDevice  *USBDevice1 = new  CCyUSBDevice(NULL);
 int n_devices = USBDevice1->DeviceCount();

 if ( n_devices <= 0 )  { printf("\nINFO:  Unable to open device CYPRESS;\n");  exit(-1); }

 outOvLap.hEvent  = CreateEvent(NULL, false, false, "CYUSB_OUT");
 inOvLap.hEvent   = CreateEvent(NULL, false, false, "CYUSB_IN");

 static unsigned char inBuf[100000];	// приемный буфер
 LONG  length = 65000; //128;			// предполагаемая длина пакета (можно больше, но не менее)
 ZeroMemory(inBuf, sizeof(inBuf));
 int n_packet = 0;		// отладочный счетчик пакетов
 clock_t start, stop;	// для замера интервала времени между пакетами
 double  duration;		// интервал

 while( !kbhit() )		// выход по нажатию кл-ры
 {
	length = 65000;
	start = clock( );	// метка времени старта цикла опроса
	// ----------- CYPRESS ---------------------------------
	UCHAR  *inContext = USBDevice1->BulkInEndPt->BeginDataXfer(inBuf, length, &inOvLap);
	USBDevice1->BulkInEndPt->WaitForXfer(&inOvLap,5000);
	USBDevice1->BulkInEndPt->FinishDataXfer(inBuf, length, &inOvLap,inContext);
	// ---------- /CYPRESS ---------------------------------
	stop = clock( );	// метка времени стопа
	duration = (double)(stop - start) / CLOCKS_PER_SEC;
	printf("\nLen = %lu PacketInterval = %02.2f sec", length, duration);

	WriteFileDump_HEX_B("OSC_B", n_packet,  inBuf, length); 
	n_packet++;		// для отладки
	ZeroMemory(inBuf, sizeof(inBuf));
	Beep(6000, 10); 
}

CloseHandle(outOvLap.hEvent);
CloseHandle(inOvLap.hEvent);

 

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


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

22 minutes ago, k155la3 said:

Если "40Мб/с " имеются ввиду мегабайты (?) то насколько я знаю, этм мс в синхронном режиме качает на тактовой не более 24MHz.

тактовая фифо выбирается между 24 и 48мгц, и ширина 8 или 16бит. У меня вариант 48/8бит 

27 minutes ago, k155la3 said:

Все что надо, есть на сайте, примеры. Исходный коду утилиты на console32. Из утилиты "отсаживаете" функцию чтения из fifo.

А с каким софтом она идет в комплекте? У меня из исходников только streamer и bulkloop нашлись

32 minutes ago, k155la3 said:

Если вдруг рассичтываете на прокачку мегабайтов, то не выйдет, тк сам канал USB дает только 480 Мбит/с "чистыми".

В 480мбит/с по идее 40Мб/с должно влезать.

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


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

4 minutes ago, Neekeetos said:

В 480мбит/с по идее 40Мб/с должно влезать.

:) ОНО нам ничего не должно. С учетом "пакетизации" и накладных расходов на протокол USB - сильно сомневаюсь.

Читайте ейный TRM. У меня небыло необходимости разгонять по скорости, на 12 MHz вполне устраивало.

Для получения полного комплекта appnotes выкачивайте с сайта "пакеты" для ихних отладочных плат, там и документация, и драйверы, и примеры для PC и чипа fifo. Сразу хочу сказать, что "быстренько, сама, сама" может не получиться, тк Вам надо настроить "в едином порыве", согласовано 1. "прошивку" (fw) для процессора  CY7C68013.  2. корректное тактирование  CY7C68013 Вашим "мастером". 3. "клиентское" ПО на ПК должно корректно работать с  CY7C68013.

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


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

55 минут назад, k155la3 сказал:

MSVS2008 + cyapi.lib  Консольное Win32

...

Не лучший пример для быстрой передачи. Для быстрой потоковой передачи нужно использовать overlapped-функции, позволяющие работать потоком и ставить в очередь множество буферов на обслуживание.

В API есть такие. А то что Вы привели - для неспешного обмена.

Если поток реалтаймовый - лучше использовать изохронную точку, а не bulk.

 

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


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

1 minute ago, jcxz said:

Не лучший пример для быстрой передачи. Для быстрой передачи нужно использовать overlapped-функции, позволяющие работать потоком и ставить в очередь множество буферов на обслуживание.

Это пример утилиты. У меня был пакетный обмен. "Ничего личного" :)

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


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

4 минуты назад, k155la3 сказал:

:) ОНО нам ничего не должно. С учетом "пакетизации" и накладных расходов на протокол USB - сильно сомневаюсь.

Вполне реально настроить закачку в CY7C68013A по GPIF на скорости около 24МБ/с по имеющейся у ТС 8-битной шине. При желании наверное можно попробовать сделать скорость и выше по той же шине.

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


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

5 minutes ago, k155la3 said:

Для получения полного комплекта appnotes выкачивайте с сайта "пакеты" для ихних отладочных плат, там и документация, и драйверы, и примеры для PC и чипа fifo. Сразу хочу сказать, что "быстренько, сама, сама" может не получиться

Скачал какой то образ, изучаю что там :) Спасибо !

3 minutes ago, jcxz said:

Не лучший пример для быстрой передачи. Для быстрой передачи нужно использовать overlapped-функции, позволяющие работать потоком и ставить в очередь множество буферов на обслуживание.

А можно чуть подробнее про это? Я в общем то планировал на основе примера что то такое сделать, но с примерами напряженка оказалась :)

4 minutes ago, jcxz said:

Если поток реалтаймовый - лучше использовать изохронную точку, а не bulk.

Он не реалтаймовый, просто надо кучу данных вытащить из плис. 

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


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

25 минут назад, Neekeetos сказал:

А с каким софтом она идет в комплекте? У меня из исходников только streamer и bulkloop нашлись

Софт Вы можете написать сами. Примеры там есть, вполне доступные. Насчёт "подписанности" драйверов под win10 - не уверен. Мне это было не нужно.

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


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

2 minutes ago, jcxz said:

Насчёт "подписанности" драйверов под win10 - не уверен

Кипарис для этих чипов предлагал вариант сделать свой айди, свой драйвер и свой интерфейс к нему. Но это все не актуально в 10ке где подобный драйвер нельзя установить.. Поэтому стандартный из примеров это все что осталось, плюс может libusb но там скорости не будет мне кажется

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


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

3 минуты назад, Neekeetos сказал:

А можно чуть подробнее про это? Я в общем то планировал на основе примера что то такое сделать, но с примерами напряженка оказалась :)

Качайте и ставьте "Cypress Suite USB". В его составе есть вполне себе достаточный хелп "CyUSB.NET.chm". Ну и примеры есть firmware и software (на компе).

Пример потоковой передачи насколько помню был в примере "Screamer".

3 минуты назад, Neekeetos сказал:

Он не реалтаймовый, просто надо кучу данных вытащить из плис. 

Если не реалтаймовый и не нужно успевать прокачивать данные пока не переполнился буфер тогда лучше - bulk. Если же всё-таки реалтайм и буфер в ПЛИС может переполниться из-за задержек - тогда изохронный поток.

В любом случае для быстрого потока лучше использовать overlapped-API с цепочками буферов.

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


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

ищите там в примерах MPEG2_FX2LP.Uv2, я с него начинал.

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


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

4 минуты назад, Neekeetos сказал:

Кипарис для этих чипов предлагал вариант сделать свой айди, свой драйвер и свой интерфейс к нему. Но это все не актуально в 10ке где подобный драйвер нельзя установить.. Поэтому стандартный из примеров это все что осталось, плюс может libusb но там скорости не будет мне кажется

libusb - не лучший выбор. Недавно я делал обзор по этим библиотекам. см.:  https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=155951

При работе с CY7C68013A я использовал CyUSB, но в те времена win10 ещё не было в природе.

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


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

Вот злачное место на cypress.com   CYPRESS USB SuperSpeed Code Examples

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


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

Странно, что в Win XP. . .Win10 нет "унифицированного" драйвера для работы с этим чипом, хотя-бы в режиме параллельного IDE-интерфейса, с которым они использовались. Возможно и есть, но "прошивка"-настройка Cypress должна быть соответствующая. Правда, в этом случае Win сразу "монополизирует" сей девайс. :aggressive: Могло бы быть полезно, подобно унификации драйвера HID.

 

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


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

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

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

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

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

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

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

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

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

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