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)
()
)
Моят настоящия проект е да се установи връзка между компютър 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)
()
)