USB superspeed peripherals Forum Discussions
Hello everyone,
I'm planning to buy CYUSB3KIT and build USB link. I searched a few hours for knowledge what exactly usb control center can (or cyusb on Linux) but I don't have clear information. I'm bulding link for testing USB connection in various environments (for example in noise, various quality of wires etc.) and I need to send data and then check if received data are valid. I plan on testing in FS, HS and (if it succeeds) SS speed. Perfectly if application allows me to send known amount of packets with known data (in bulk transfers I saw incrementing 32bit integer) periodically (for example every 5 seconds) - then I can define when USB connection is better or worse in which environment (based in isochronous transfers on data correctness rate). I care about isochronous and bulk/interrupt (with CRC) transfers. I'd like to use examples prepared by Cypress with minimum alterations if possible to my use. My host will be likely Raspberry Pi 4B.
I saw example with bulk and isochronous loopback and also srcsink but no solution for host-to-device transmission with checking data in FX3 device. So I likely use loopback with usb control center/cyusb. But if it allows to make loopback isochronous transfers to-file? And if incrementing 32bit integers means that incrementing values are sending one by one in next packets or use full bandwith to transfer it?
Can I please for informations / screenshot what I can do in usb control center / cyusb?
I also may consider other solutions with that. I am new in USB and FX3.
Thank you for read my message. Sorry if I sorry if I confused it.
Regards, Tom
Show LessHi,
I have two questions about fx3.
Q1: When the CPU is done by software CPU resets(not whole device reset) , are the status of all I/O pins retained?
Q2: What is the maximum current consumption in the following cases?
1.current consumption while RESET# is Low
2.current consumption during RESET RECOVERY TIME
Regards,
Nagata.
Show LessHello,
inside the FX3 firmware the function CyU3PReturnStatus_t CyU3PUsbSetTxDeemphasis (uint32_t value) can be used to set the TX de-emphasis setting for the USB 3.0 signal. The Tx de-emphasis value should be less than 0x1F and default value is 0x11.
USB3 specifies TX de-emphasis from min 3.0 dB to max 4.0 dB (nominal is 3.5 dB).
What is the relation between the digital hex values and the values in dB?
Many thanks in advance
Daniel
Show LessWhat is the maximum current value that can be passed through the GPIO pin of CYUSB3014-BZXI?
Table 9 of the data sheet has a list of Iol and Ioh. Does this solve this question? Is this value per pin? Is there a specified value for the input current?
Thanks,
Tetsuo
Hello,
I tried referencing the pingpong buffer mechanism stated in AN75779 (UVC) for my ADC application. Using a GUI made in visual studio, I'm able to capture data properly:
But there are times when the data is corrupted.
I am using the "bulkEpt.XferData(ref buffer, ref bytes, false);" function to transfer data to and from the FX3 onboard.
Attached is the project source files that I modified to resemble the AN75779 pingpong buffer mechanism. Inside is also the folder containing the modified state machine I use with the firmware.
Thanks,
jl46
We're looking to replace a design that currently uses a CYUSB3013 with a CYUSB3035. The pinouts of the two devices are the same except 3035 doesn't support 'Charger detect output' which is no problem.
As far as I can tell the 3035 supports all peripherals we're using (including 16-bit GPIF slave interface) so it looks like the 3035 should be a drop-in replacement for the 3013.
Can anyone advise or is there an app note that gives details of the differences ?
Thanks
Dave
Show LessHi,
I have built a UVC video application on the CYUSB3KIT-003 (which has a CYUSB3014 device if I am not mistaking).
It uses control endpoint communication with vendor requests to program sensor registers “on the fly”. It also uses winusb.sys driver on host PC, so not the Cypress drivers. In USB3 mode all works well; in USB2 mode I get random issues with control endpoint transfers; the program sometimes simply stalls.
I found these discussions:
and
Apparently there is s silicon bug on some FX3 devices, related to control endpoint data corruption in USB2.0 mode.
This corruption occurs as a result of the use of "DMA data pre-fetching", which was implemented in SDK versions 1.3.2 and higher to solve yet another data corruption error: see comments with CyU3PUsbEnableEPPrefetch in cyu3usb.h.
Bottom line: the control endpoint data corruption in USB2 mode is fixed apparently in the SDK with a work around where all other BULK IN endpoints are suspended for a while. The price to pay is apparently a slow control endpoint transfer in USB2 mode. Indeed, in the SDK source code of CyU3PUsbSendEP0Data I see a call to CyU3PUsbSuspendInEpChannels for non-superspeed connection.
My suspicion is that my control endpoint transfer issues in USB2 mode are related to its slow response, caused by the CyU3PUsbSuspendInEpChannels somehow.
I have the following questions:
1) Does the CYUSB3014 on the CYUSB3KIT-003 have the silicon bug that requires the use of CyU3PUsbSuspendInEpChannels during control endpoint transfers in USB2 mode?
2) If the CYUSB3014 does not have the silicon bug: is it possible to remove the CyU3PUsbSuspendInEpChannels call inside the CyU3PUsbSendEP0Data function definition? Does that require hacking SDK code or is there a more elegant way?
3) In the aforementioned discussions it is suggested to replace the CyU3PUsbSendEP0Data calls in USB2 mode with a custom function that does not do a CyU3PUsbSuspendInEpChannel, to speed up control endpoint transfer in USB2.
In my UVC application, would I then have to manually suspend the BULK video EP temporarily each time I do a control endpoint transfer? How do I suspend a BULK video EP with the least amount of delays in my control endpoint transfers?
4) Does the host PC driver require special provisions to deal with a very slow responding control endpoint transfer?
Since I observe these "hangups" in USB2 mode irregularly, when I do control endpoint transfers.
Do the host PC cypress drivers have built-in special provisions for this that the winusb.sys driver does not have?
Thanks
Show LessI would like to implement FX3 as I2C device using any GPIO pin. Any example code?
Hi,
My design uses a complex gpio pin to control a LED. I need to send a pulse of certain width, e.g,, 2 seconds. I use pulsenow to generate the pulse. However, in some cases, I need to terminate the pulse earlier (before the counter reaches the threshold). How can I implement this so I can bring the IO pin back to logic 0?
Thanks.
Show LessHello,
I am trying to build a ToF camera using a sensor supplied by Vendor X (sorry not sure if I can disclose per NDA terms). I was reading the CX3 datasheet and am a bit confused about this line,
" CX3 conforms to the MIPI CSI-2 specification (version 1.01) and supports up to four data lanes with speed up to 1 gigabits per second (Gbps) per lane for a total bandwidth of 2.4 Gbps."
What does this really mean? Does it mean each MIPI lane can only run at 600Mbs or is the problem somewhere else down the line for example at the GPIF block? Does the GPIF block have enough buffer to handle 4Gbs per second coming in and then send the data out with a bandwidth of 2.4Gbs?
A little bit about the sensor I am using,
The sensor puts out 9 Raw frames that need to be combined at the hose to create a depth frame. The typical timing data and MIPI timing of the 9 raw frames looks like image below,
Also here is the MIPI frame structure if it helps,
Also here is some information about the data amount being transferred,
Frame Width | 512 Pixels |
Frame Height | 512 Pixels |
Integration Time | 120 usec |
Number of MIPI frames | 9 |
Number of data packets per MIPI frame | 8 |
MIPI data packet size | 49,152 bytes |
Number of pixels per RAW12 data packet | 32,768 |
Total transmitted data | 3,538,944 bytes |
Interval between MIPI frames | ~1.1 ms |
Instantaneous raw frame rate | ~910 FPS |
I am hoping the CX3 is able to handle such data traffic through its MIPI lanes and be able to send the raw data out its USB3 line to be processed on our host PC. I appreciate if someone from the Cypress application team can reach out to me to discuss this more in detail.