USB low-full-high speed peripherals Forum Discussions
USB low-full-high speed peripherals
Hi! I am using a CY7C68001 that i access from a FPGA. I use the standard endpont settings as below: EP2 Bulk OUT, 512 bytes/p...
Show More
Hi!
I am using a CY7C68001 that i access from a FPGA.
I use the standard endpont settings as below:
EP2 Bulk OUT, 512 bytes/packet, 2x buffered
EP4 Bulk OUT, 512 bytes/packet, 2x buffered
EP6 Bulk IN, 512 bytes/packet, 2x buffered
EP8 Bulk IN, 512 bytes/packet, 2x buffered
I have managed to write down the descriptor to the chip and it does also enumerates
when the USB connector is connected to my PC.
I have managed to send data from my FPGA via the cypress chip using Endpoint 6.
I receive the data in my PC in my own VB program that uses the CyUSB driver.
Now, my problem is that i just does not understand how to receive data in the FPGA
when data is sent in the opposite direction (PC->FPGA) using Endpoint 2.
My questions are:
Q1
I send smaller batches of data than the buffer size of 512 bytes.
I plan to use the empty flag to check if there is any data in the endpoint buffer.
How do i know how many data bytes to read from the buffer?
Or must i alwayas read all 512 bytes and then myself figure out how much useful data i received?
Q2
When i have read data from the Endpoint buffer, how do i tell the cypress chip that i am ready
with the endpoint buffer and it can be used for the next batch of data?
Any help would be helpful.
BR Paul Show Less
I am using a CY7C68001 that i access from a FPGA.
I use the standard endpont settings as below:
EP2 Bulk OUT, 512 bytes/packet, 2x buffered
EP4 Bulk OUT, 512 bytes/packet, 2x buffered
EP6 Bulk IN, 512 bytes/packet, 2x buffered
EP8 Bulk IN, 512 bytes/packet, 2x buffered
I have managed to write down the descriptor to the chip and it does also enumerates
when the USB connector is connected to my PC.
I have managed to send data from my FPGA via the cypress chip using Endpoint 6.
I receive the data in my PC in my own VB program that uses the CyUSB driver.
Now, my problem is that i just does not understand how to receive data in the FPGA
when data is sent in the opposite direction (PC->FPGA) using Endpoint 2.
My questions are:
Q1
I send smaller batches of data than the buffer size of 512 bytes.
I plan to use the empty flag to check if there is any data in the endpoint buffer.
How do i know how many data bytes to read from the buffer?
Or must i alwayas read all 512 bytes and then myself figure out how much useful data i received?
Q2
When i have read data from the Endpoint buffer, how do i tell the cypress chip that i am ready
with the endpoint buffer and it can be used for the next batch of data?
Any help would be helpful.
BR Paul Show Less
USB low-full-high speed peripherals
Hi Guys: I need to edit the data from read from nand flash before they are sent to the USB via EP4. However the current ways the data i...
Show More
Hi Guys:
I need to edit the data from read from nand flash before they are sent to the USB via EP4. However the current ways the data is read and sent through to the USB are all done automatically without CPU's knowledge. I tried to disable EP4's Auto bit, EP4FIFOCFG = bmINFM and then while (!(GPIFTRIG&0x80)); // poll ep4 done
this does not seem work, I am still unable to get the data read from nand flash in EP4FIFO.
Help!... Show Less
I need to edit the data from read from nand flash before they are sent to the USB via EP4. However the current ways the data is read and sent through to the USB are all done automatically without CPU's knowledge. I tried to disable EP4's Auto bit, EP4FIFOCFG = bmINFM and then while (!(GPIFTRIG&0x80)); // poll ep4 done
this does not seem work, I am still unable to get the data read from nand flash in EP4FIFO.
Help!... Show Less
USB low-full-high speed peripherals
I have a product that uses the FX2LP device and loads its firmware through a sys file that was compiled on the windows DDK using the examples ...
Show More
I have a product that uses the FX2LP device and loads its firmware through a sys file that was compiled on the windows DDK using the examples shown in "EZLoader Custom USB Firmware Loader Driver - AN041"
Now I need to upgrade to 64 bit. I have the "Cypress Suite USB 3.4.1" and have created a new inf file but my old sys file isn't compiled for 64 bit and when I plug my device in, Windows complains that the sys file isn't for this platform (Windows 7, 64 bit)
Q: Is there an updated version of the AN041 app note that outlines the process to upgrade to 64 bit? I have installed the Windows 7 DDK but I am still missing all the support files for a 64 bit compile
any pointers would be greatly appreciated!
Show Less
Now I need to upgrade to 64 bit. I have the "Cypress Suite USB 3.4.1" and have created a new inf file but my old sys file isn't compiled for 64 bit and when I plug my device in, Windows complains that the sys file isn't for this platform (Windows 7, 64 bit)
Q: Is there an updated version of the AN041 app note that outlines the process to upgrade to 64 bit? I have installed the Windows 7 DDK but I am still missing all the support files for a 64 bit compile
any pointers would be greatly appreciated!
Show Less
USB low-full-high speed peripherals
Hello, I use the AN2131S and want to be able to use the whole available memory the AN2131S has (without any additional RAM-memory). I use µ...
Show More
Hello,
I use the AN2131S and want to be able to use the whole available memory the AN2131S has (without any additional RAM-memory). I use µVision3 from Keil and ask for the settings I have to make in the "BL51 locate"-tab of the "Options for target"-dialog.
I think my problem is solved more or less quickly for someone who is experienced with memory-mapping or how it's called (the thing you do in the "BL51 locate"-dialog):
I wrote a program, which is based on another, smaller program. I kept the settings of the originally (small) program (see screenshot here: http://www.loaditup.de/413999.html). But I think through the originally settings in this dialog the used memory is very limited... So I want to ask, what I have to modify on this data to be able to use a maximum of the memory of the AN2131S.
A second question: Are the xdata- and the code-spaces both on the same memory (the XRAM)? And how much XRAM has the AN2131 (I read something about 4k or 8k)?
Regards,
Stefan Show Less
I use the AN2131S and want to be able to use the whole available memory the AN2131S has (without any additional RAM-memory). I use µVision3 from Keil and ask for the settings I have to make in the "BL51 locate"-tab of the "Options for target"-dialog.
I think my problem is solved more or less quickly for someone who is experienced with memory-mapping or how it's called (the thing you do in the "BL51 locate"-dialog):
I wrote a program, which is based on another, smaller program. I kept the settings of the originally (small) program (see screenshot here: http://www.loaditup.de/413999.html). But I think through the originally settings in this dialog the used memory is very limited... So I want to ask, what I have to modify on this data to be able to use a maximum of the memory of the AN2131S.
A second question: Are the xdata- and the code-spaces both on the same memory (the XRAM)? And how much XRAM has the AN2131 (I read something about 4k or 8k)?
Regards,
Stefan Show Less
USB low-full-high speed peripherals
I am trying to run a USB sample program on CY8C24894 device. I made a new board and the device on the board is prorgammed fine wiht PSoC minip...
Show More
I am trying to run a USB sample program on CY8C24894 device. I made a new board and the device on the board is prorgammed fine wiht PSoC miniprorgammer. However USB is not detected by the PC. I created a new project absed on the AN50989
The same program created for CY8C24794 on the development board does works fine
I duplicated the following for my device from AN50989:
1] Sample C program
2] POrt connections as in GUI setup
3] USB setup for HID device class
I downloaded another sample application for this device . This time PC detects the USB and installs device driver. Howvever, when I am trying to access the device through GUID interface, I get VID=0 and PID=0.
I donot know if I am missing something.
I would apprecite your help.
Thanks in advance.
DK
Show Less
The same program created for CY8C24794 on the development board does works fine
I duplicated the following for my device from AN50989:
1] Sample C program
2] POrt connections as in GUI setup
3] USB setup for HID device class
I downloaded another sample application for this device . This time PC detects the USB and installs device driver. Howvever, when I am trying to access the device through GUID interface, I get VID=0 and PID=0.
I donot know if I am missing something.
I would apprecite your help.
Thanks in advance.
DK
Show Less
USB low-full-high speed peripherals
CPLD--->CY7c68013--->PC CPLD generates incremental data, then I use BULK method, EP2 out, EP6 in,to send data to PC, PC use bulk-loop function...
Show More
CPLD--->CY7c68013--->PC
CPLD generates incremental data, then I use BULK method, EP2 out, EP6 in,to send
data to PC, PC use bulk-loop function(Cypress Examples, i modified this VC++ code, to force PC to receive only),
I use BUSHOUND to watch the data , I find data loss during data transfer. some data
loss per 512 bytes transfer.
Need I use ping-pong transfer? How to realize it.....
I beg your reply......
USB low-full-high speed peripherals
In our application design, we meet some difficulties about the CY7C68001 and hope to get your suggestions. Our application: 1. Use t...
Show More
In our application design, we meet some difficulties about the CY7C68001 and hope to get your suggestions.
Our application:
1. Use the USB 2.0 to deal with the CT graphic data communication between the host (PC) and the external master (DSP board: for data computing). We use the control and the bulk way for the communication. And the key issue is about the bulk way when using the CY7C68001.
2. Data stream consideration:
Step (1).get the graphic data (6300*6400, i.e, large number) at one time from the PC host and transmit to DSP board via USB 2.0 interface;
Step (2).the DSP board begins the step of data computing when receive the first lot of 6400 number, at this time it needs the host (PC) to pause the data transferring and wait for the data computing from external master (in DSP board);
Step (3).when the data computing (for the first lot 6400) has been finished and it will transmit the computed data to the PC host and ask the host (PC) to start the graphic data transferring again;
Step (4).the PC host begins the graphic data transferring (the second lot, also 6400); the same process begins (loop: step(2)-->step(3)-->step(2)-->step(3)-->step(2)...)the whole process will be in the end when the PC transfer the whole number.
3. Issues we hope to get suggestions
It locates in the bulk way when the PC host pause the process (transfer the data to the external master, i.e. the DSP board)
My way: every time, I send a token packet (e.g. all number is 4) via EP2, EP4 from the PC host to the external mater and then decide which steps to go: (1) continues to transmit data if receiving the same data as the token packet; (2) PC host pause the transmit when it receive the different data in a packet via the EP6, and the EP8
Also, when the DSP board wants begins the step (data computing), I let it transmit a token packet (e.g. all number is 4) to host via EP6 and the EP8. Sure it get the PC token data (a packet) firstly.
4. My own question:
Yes, the whole process can run smoothly at the beginning and I can get the correct computed data in the PC host while the process suspending. The symptom is: the PC transmits the error data or it suspends the process. I have studied the CY7C68001 data sheet these days. If I know correctly, the PC host will continues to transmit the same data if it cannot finish it successfully in the last time. And I am little confused about my data stream design. The PC can only play the role: (start the data transmit and pause data transferring). In normal situation, how to deal with my application?
P.S. I see the saying in the forum:Suspend condition cannot be sent to a USB device using EZ-USB Control panel/Cyconsole/Control center. It is initiated by the host when it is going into power saving modes or standby. Can I think the data stream is not proper in our application?
Thanks for your time and consideration.
Best Regards
Show Less
Our application:
1. Use the USB 2.0 to deal with the CT graphic data communication between the host (PC) and the external master (DSP board: for data computing). We use the control and the bulk way for the communication. And the key issue is about the bulk way when using the CY7C68001.
2. Data stream consideration:
Step (1).get the graphic data (6300*6400, i.e, large number) at one time from the PC host and transmit to DSP board via USB 2.0 interface;
Step (2).the DSP board begins the step of data computing when receive the first lot of 6400 number, at this time it needs the host (PC) to pause the data transferring and wait for the data computing from external master (in DSP board);
Step (3).when the data computing (for the first lot 6400) has been finished and it will transmit the computed data to the PC host and ask the host (PC) to start the graphic data transferring again;
Step (4).the PC host begins the graphic data transferring (the second lot, also 6400); the same process begins (loop: step(2)-->step(3)-->step(2)-->step(3)-->step(2)...)the whole process will be in the end when the PC transfer the whole number.
3. Issues we hope to get suggestions
It locates in the bulk way when the PC host pause the process (transfer the data to the external master, i.e. the DSP board)
My way: every time, I send a token packet (e.g. all number is 4) via EP2, EP4 from the PC host to the external mater and then decide which steps to go: (1) continues to transmit data if receiving the same data as the token packet; (2) PC host pause the transmit when it receive the different data in a packet via the EP6, and the EP8
Also, when the DSP board wants begins the step (data computing), I let it transmit a token packet (e.g. all number is 4) to host via EP6 and the EP8. Sure it get the PC token data (a packet) firstly.
4. My own question:
Yes, the whole process can run smoothly at the beginning and I can get the correct computed data in the PC host while the process suspending. The symptom is: the PC transmits the error data or it suspends the process. I have studied the CY7C68001 data sheet these days. If I know correctly, the PC host will continues to transmit the same data if it cannot finish it successfully in the last time. And I am little confused about my data stream design. The PC can only play the role: (start the data transmit and pause data transferring). In normal situation, how to deal with my application?
P.S. I see the saying in the forum:Suspend condition cannot be sent to a USB device using EZ-USB Control panel/Cyconsole/Control center. It is initiated by the host when it is going into power saving modes or standby. Can I think the data stream is not proper in our application?
Thanks for your time and consideration.
Best Regards
Show Less
USB low-full-high speed peripherals
Hello! Can anyone help me for my project to build an wireless usb application like wireless webcam. Is CYRF7936 with 4MHz channel bandwidth an...
Show More
Hello! Can anyone help me for my project to build an wireless usb application like wireless webcam. Is CYRF7936 with 4MHz channel bandwidth and 62.5kbps data rate, is it possible to transmit the output of a webcam via wireless.
I want to ask that, can we use CYRF7936 to make the wireless webcam using wired one? If not then which chip can be used to make it wireless and if yes then, what considerations should be undertaken.
Thank you
Show Less
I want to ask that, can we use CYRF7936 to make the wireless webcam using wired one? If not then which chip can be used to make it wireless and if yes then, what considerations should be undertaken.
Thank you
Show Less
USB low-full-high speed peripherals
We are evaluting your FX2 for a company project.
I am trying the examples on our brand new cy3684 kit and I notice that although they work, I can make trivial one line changes to the code and have unrelated functionality break. It is like the linker is moving code around based on these changes and losing alignment or putting things where there is no memory.
What linker settings are recommended for these examples? All that comes with it out of the box is that code should be above 0x0080 and xdata is above 0x1000. Also, I see RAMSIZE at 256. Is that it? Do you set up a stack or anything?
I can change a loop counter in a function that is never executed from WORD to DWORD and toggle the Endpoint 4 bulk transfers to work and not work. The loop counter is in code that never executes and is absolutely unrelated to this endpoint 4 stuff.
I start with an example that has the bulk transfers working like bulkloop.c and a couple vendor commands, get chip revision and a few others.
I add a single function to Vend_Ax.c that I don't even call. If I do call it, it makes no difference to the experiment. It is as follows:
BOOL Init();
BOOL Init() {
WORD i;
for (i = 0; i < 20; i++); // delay at least 2us
for (i = 0; i < 1000; i++); // delay at least 5us
//
// Check the status lines
//
return 0;
}
If you change the "WORD i;" line to "DWORD i;", then run the bulk transfer out Endpoint 4 using CyConsole, the bulk transfer will succeed, but the USB will stall with the next vendor command. You do not even have to call this function, just having it declared produces the problem. I am guessing I need better linker settings. Show Less
We are evaluting your FX2 for a company project. I am trying the examples on our brand new cy3684 kit and I notice that although they work,...
Show More
We are evaluting your FX2 for a company project.
I am trying the examples on our brand new cy3684 kit and I notice that although they work, I can make trivial one line changes to the code and have unrelated functionality break. It is like the linker is moving code around based on these changes and losing alignment or putting things where there is no memory.
What linker settings are recommended for these examples? All that comes with it out of the box is that code should be above 0x0080 and xdata is above 0x1000. Also, I see RAMSIZE at 256. Is that it? Do you set up a stack or anything?
I can change a loop counter in a function that is never executed from WORD to DWORD and toggle the Endpoint 4 bulk transfers to work and not work. The loop counter is in code that never executes and is absolutely unrelated to this endpoint 4 stuff.
I start with an example that has the bulk transfers working like bulkloop.c and a couple vendor commands, get chip revision and a few others.
I add a single function to Vend_Ax.c that I don't even call. If I do call it, it makes no difference to the experiment. It is as follows:
BOOL Init();
BOOL Init() {
WORD i;
for (i = 0; i < 20; i++); // delay at least 2us
for (i = 0; i < 1000; i++); // delay at least 5us
//
// Check the status lines
//
return 0;
}
If you change the "WORD i;" line to "DWORD i;", then run the bulk transfer out Endpoint 4 using CyConsole, the bulk transfer will succeed, but the USB will stall with the next vendor command. You do not even have to call this function, just having it declared produces the problem. I am guessing I need better linker settings. Show Less
USB low-full-high speed peripherals
Hi I written the firmware using keil software.and converted into .hex to.iic using hextobix.exe. now i have some confusion that is I ...
Show More
Hi
I written the firmware using keil software.and converted into .hex to.iic using hextobix.exe.
now i have some confusion that is
I want store my firmware that is firmware.iic in to the EEPROM which is connected via I2C to cy7c68013a, and load the firmware into cy7c68013a from EEPROM when i power-up the board.
1)How can i download the firmware into EEPROM first time i.e using cyconsole tool.before downing the firmware.iic file into the EEPROM i have to be load any file into the cy7c68013a (i.e. Vend_Ax.hex ) or only Firmware.iic file is enough
2)CYUSB.sys file detect the hardware and enumerate or i have to write any driver at host side to detection and enumeration the device i.e cy7c68013a
Show Less
I written the firmware using keil software.and converted into .hex to.iic using hextobix.exe.
now i have some confusion that is
I want store my firmware that is firmware.iic in to the EEPROM which is connected via I2C to cy7c68013a, and load the firmware into cy7c68013a from EEPROM when i power-up the board.
1)How can i download the firmware into EEPROM first time i.e using cyconsole tool.before downing the firmware.iic file into the EEPROM i have to be load any file into the cy7c68013a (i.e. Vend_Ax.hex ) or only Firmware.iic file is enough
2)CYUSB.sys file detect the hardware and enumerate or i have to write any driver at host side to detection and enumeration the device i.e cy7c68013a
Show Less