Hello everybody.
I am using CY7c68013 FX2 connected with a FPGA. In Slave Fifo MOde. AutoIN. With EP2.
EP2FIFOCFG=0x0C //No INFM1, NO OEP1, Auto IN, Zerolenin, 8bits wordwide. syndelay EP2CFG=0xE2 Valid, Out, Bulk,512 bytes, double buffer. syncdelay
I compiled the program using Keil.
I already modified the CyUSB.inf. And at this moment I am able to download the Firmware. I am generating the data with the FPGA and with a digital analizer I can see the signals EMPTY, FULL & PF. Are working right. The Fifo is being full correctly. And the empty signal also asserts that indicates that the data is commited out. I supouse:
I want to see the data with the CyConsole. But in the tab Other Endpt Xfers. There are not listed my configured Endpoints.
Something also very strange for my, is thar in the DEVICE PROPERTIES tab is listed correctly the VID, PID, but nothing in the Manufacturer, product, serial Number, etc.
I am working with OS Windows XP, and I do not have Visual6 or BC, so I can not use the CyAPI library.
Is completely necesary the Visual6 or BC6 to xfer data?. Or I can Begin my debug just with the Cyconsole??
I do not know how to continue.
Muchas Gracias. Thank you Very much. Merci beaucoup. Vielen Dank.
Att. Diego Andres Botero Galeano delbotero@javeriana.edu.co diego.botero@javeriana.edu.co
Bogota/Colombia
"There are not listed my configured Endpoints. Something also very strange for my, is thar in the DEVICE PROPERTIES tab is listed correctly the VID, PID, but nothing in the Manufacturer, product, serial Number, etc."
This description suggests that you didn't provide correct descriptors.
Start with modifying the existing example, like Bulksrc You'll find this example in CY3684 dev kit installer, SETUP_FX2LP_DVK_1004.exe download.cypress.com.edgesuite.net/.../cy3684_ez_usb_fx2lp_development_kit_15.exe
After installation of this dev kit software, you'll find the example in this folder. C:\Cypress\USB\Examples\FX2LP\Bulksrc The descriptors are defined in dscr.a51
"I am working with OS Windows XP, and I do not have Visual6 or BC, so I can not use the CyAPI library."
You can use CyAPI either in VC6 or BC directly. Are you talking about SuiteUSB.NET for C#?
Tsuneo
You can download VC++2008 Express or VC#2008 Express from MS www.microsoft.com/.../
CyAPI works on VC++2008 Express However, VC++2008 Express doesn't include MFC. If you want to make a GUI application, C# is easier.
For C#, use SuiteUSB.NET instead of CyAPI Unfortunately, Cypress site doesn't allow direct link. On the Cypress site ( http://www.cypress.com ), search on "SuiteUSB.NET". You'll find this link under Reference Designs "SuiteUSB.NET 2.0 - USB Development tools for Visual Studio 2005 and .NET 2.0/3.0 (2)"
As of BC (now C++Builder) C++Builder Trial and Free Versions cc.codegear.com/.../cppbuilder
Hello
Thank you for the examples.
Now my program is running.
I had begun from the scratch without any example, and I had forgoten to relocate the descriptor table.
I added this part of code and ABRA-KADABRA, voila
// The following section of code is used to relocate the descriptor table. // The frameworks uses SUDPTRH and SUDPTRL to automate the SETUP requests // for descriptors. These registers only work with memory locations // in the EZ-USB internal RAM. Therefore, if the descriptors are located // in external RAM, they must be copied to in internal RAM. // The descriptor table is relocated by the frameworks ONLY if it is found // to be located in external memory. pDeviceDscr = (WORD)&DeviceDscr; pDeviceQualDscr = (WORD)&DeviceQualDscr; pHighSpeedConfigDscr = (WORD)&HighSpeedConfigDscr; pFullSpeedConfigDscr = (WORD)&FullSpeedConfigDscr; pStringDscr = (WORD)&StringDscr;
// Is the descriptor table in external RAM (> 16Kbytes)? If yes, // then relocate. // Note that this code only checks if the descriptors START in // external RAM. It will not work if the descriptor table spans // internal and external RAM. if ((WORD)&DeviceDscr & 0xC000) { // first, relocate the descriptors IntDescrAddr = INTERNAL_DSCR_ADDR; ExtDescrAddr = (WORD)&DeviceDscr; DevDescrLen = (WORD)&UserDscr - (WORD)&DeviceDscr + 2; for (i = 0; i < DevDescrLen; i++) *((BYTE xdata *)IntDescrAddr+i) = *((BYTE xdata *)ExtDescrAddr+i);
// update all of the descriptor pointers pDeviceDscr = IntDescrAddr; offset = (WORD)&DeviceDscr - INTERNAL_DSCR_ADDR; pDeviceQualDscr -= offset; pConfigDscr -= offset; pOtherConfigDscr -= offset; pHighSpeedConfigDscr -= offset; pFullSpeedConfigDscr -= offset; pStringDscr -= offset; }
Gracias, muchas gracias.
I forgot to say that my problem was also with the interruptions. I had masked them.
According with the documentation that I had read interruptions are not necessary in auto mode, slve fifo. The CPU just initialize the FIFOs, but they seems to be necessary for the enumeration process.
Well I was wrong, but I nead to check more documentation to understand it.
Have an example is very usefull.
Chao Gracias
delbotero