EZ-USB/CyAPI Проблем скорост

N

Nephazz

Guest
Здравейте,

Моят настоящия проект е да се установи връзка между компютър USB WinXP и FPGA.Не да си цапаме ръцете на FPGA обаче, шефът прави тези неща.Той има нужда от мен да се предвиди datarate на най-малко 15 MB / s.Имам един съвет, който е "Cypress полупроводникови CY3684 / 3674 EZ-USB Разширено развитие борда" отпечатани на един и "CY7C68013A-128AXC 0731 Б 04 645490" чип монтиран.Използвам този за разработване на моя WinXP софтуер (MS Visual C ), но окончателната версия ще използва FPGA съвет от Avnet.Сегашната фърмуера за USB CY7-Controller е bulkloop.hex deliverd в C: / кипарис / USB / примери.

Точно сега ли да използвам CyAPI и I'am може да се установи връзка на съвета, да получите някои информации като "брой крайни точки" и голяма доставка и излиза.За да meassure на tranferspeed използвам.(Източник файл е приложен) За съжаление аз само се около 1 MB / s.(Опитах се използват http://www.cypress.com/?docID=4383 да meassure скорост, но не мога да го изпълняват. Това е може би, защото използвам "USB конзола" вместо "EZ-USB Control Panel" които не мога да намеря никъде.)

Така че ...Къде ми е претрупана?Има CyAPI като цяло може да се постигне висока честотна лента?Трябва ли да го използвате неправилно или е само expample фърмуер, който не дава?Имате ли някакви бележки или други ап задължително четиво?

Приятен ден,
ЯнPS: Това е crossposted в http://www.cypress.com/forums/forum/messageview.cfm?catid=8&threadid=10046&enterthread=yКод:

//************************************************ ***********

//************************************************ ***********

/ /

/ / Файл: Test_CyAPI.cpp

/ / Дата: 7.4.10

/ / Автор: Kießling, Jan стр.

/ / Цел: да се използва за CyAPI и писане на основния

/ / Функции

//************************************************ ***********

//************************************************ ***********
//************************************************ ***********

/ / Включва

//************************************************ ***********

# Включват <windows.h>

# Включват <stdio.h>

/ / # Включват <iostream.h>

# Включват <time.h>

# Включват <conio.h>

# Включват <math.h>

# Включват <CyAPI.h>

# Включват <string>

# Включват <iostream>//************************************************ ***********

/ / Макроси и Глобални променливи

//************************************************ ***********

Именно чрез STD;

Дръжка за ученици дръжка;

използване на STD:: низ;

//************************************************ ***********

/ / Декларации

//************************************************ ***********

булев USBSend512 (грозен знак * вън, USBDevice CCyUSBDevice *);

булев USBGet512 (грозен знак * в, USBDevice CCyUSBDevice *);

нищожен wait_seconds (INT секунди);

//************************************************ ***********

/ / Майн

//************************************************ ***********

нищожен Майн (свободен)

(

/ / [] USB Init

CCyUSBDevice * USBDevice = нови CCyUSBDevice (NULL);

/ / Се опитвайте да отваряте устройството # 0

ако (USBDevice-> DeviceCount () & &! USBDevice-> Отвори (0)) / / проверка, ако има едно устройство и при наличие device0 не е вече отворен

(

Съдът <<"Възстановяване и за откриване на устройството 0" <<endl;

USBDevice-> Reset ();

USBDevice-> Отвори (0);

)

ако (! USBDevice-> IsOpen ())

(

printf ("\ N устройство не отвори \ N N \");

)

още

(

printf ("\ N План отворен N \ \ N");

)/ / [Получите информация]

INT устройства = USBDevice-> DeviceCount ();

INT altInt = USBDevice-> AltIntfcCount ();

INT curInt = USBDevice-> AltIntfc ();

INT eptCount = USBDevice-> EndPointCount ();

INT maxPaketSize = USBDevice-> BulkOutEndPt-> MaxPktSize;/ / [] За печат информация

Съдът <<"FriendlyName:" <<USBDevice-> FriendlyName <<endl;

/ / Съдебната <<"Брой на Cypress устройства:" <<устройства <<endl;

Съдът <<"Броят на заместник интерфейси:" <<altInt <<endl;

Съдът <<"Използване Интерфейс:" <<curInt <<endl;

Съдът <<"Брой на крайни точки:" <<eptCount <<endl;

Съдът <<"Макс Paket Размер на насипни количества 1:" <<maxPaketSize <<endl;

Съдът <<"Xfer Размер =" <<USBDevice-> BulkOutEndPt-> GetXferSize () <<endl;/ / [Докладва всички крайни точки с вида и посоката]

низ посока, тип;

за (INT C = 0; в <eptCount; C )

(

ако (USBDevice-> крайни точки [C] -> Bin)

(

посока = "Вход";

)

още

(

посока = "Изход";

)

Switch (USBDevice-> крайни точки [C] -> атрибути)

(

случай 0:

тип = "управление";

прекъсване;

Случай 1:

тип = "изохронни";

прекъсване;

Случай 2:

тип = "насипно";

прекъсване;

Случай 3:

тип = "Прекъсване";

прекъсване;

)

Съдът <<"Крайна" <<в <<"е" <<тип <<"" <<посока <<endl;

)/ / [] Speed Test

грозен знак вън [512];

грозен знак в [512];

time_t t_start, t_end;

двойно t_elapsed;

/ / Първоначалният масив

за (с = 0; в <513; C )

(

посочени [в] = 0x00 C;

в [C] = 0x01;

)

/ / Старт тест

време (& t_start); / / получите текущото време

за (двойно AC = 0; AC <65535; AC )

(

USBSend512 (Out, USBDevice);

USBGet512 (в, USBDevice);

)

време (t_end &);

t_elapsed = difftime (t_end, t_start);

Съдът <<"" <<t_elapsed <<endl;

/ / [Са последните два масиви равни?]

булев ка = TRUE;

за (с = 0; в <512; C )

(

ако (в [C]! = посочени [в])

(

КА = FALSE;

)

)

ако (ка)

(

Съдът <<"В равнява Out" <<endl;

)

още

(

Съдът <<"В не е равно Out" <<endl;

)

/ / [Край на Главна]

USBDevice-> Close ();

връщане;

)//************************************************ ***********

/ / Функции

//************************************************ ***********булев USBSend512 (грозен знак * вън, USBDevice CCyUSBDevice *)

(

/ / Тази функция изпраща 512 байта via USB на открита крайна точка

/ / Връща TRUE при успех, фалшиви, ако не съществува ЕП

булев ОК = FALSE;

LONG дължина = 512;ако (USBDevice-> BulkOutEndPt) / / проверява дали съществува ЕП

(

ОК = (USBDevice-> BulkOutEndPt-> XferData (Out, дължина)); / / изпращане на масив

)

още

(

ОК = FALSE;

)

връщане OK;

)

//************************************************ ***********

булев USBGet512 (грозен знак * в, USBDevice CCyUSBDevice *)

(

/ / Тази функция стане 512 байта via USB от отворен крайна точка

/ / Връща TRUE при успех, фалшиви, ако не съществува ЕП

булев ОК = FALSE;

LONG дължина = 512;ако (USBDevice-> BulkInEndPt) / / проверява дали съществува ЕП

(

ОК = USBDevice-> BulkInEndPt-> XferData (в, дължина);

)

още

(

ОК = FALSE;

)

връщане OK;

)

//************************************************ ***********

нищожен wait_seconds (INT секунди)

(

clock_t endwait;

endwait = часовник () секунди * CLOCKS_PER_SEC;

време (часовник () <endwait)

()

)

 

Welcome to EDABoard.com

Sponsor

Back
Top