USB superspeed peripherals Forum Discussions
text.format{('custom.tabs.no.results')}
Hi, I want to drive simple GPIO with max speed.
I have initialized the deviceinit and GPIO clock as:
/* Initialize the device */
clockConfig.setSysClk400 = CyTrue;
clockConfig.cpuClkDiv = 2;
clockConfig.dmaClkDiv = 2;
clockConfig.mmioClkDiv = 2;
clockConfig.useStandbyClk = CyFalse;
clockConfig.clkSrc = CY_U3P_SYS_CLK;
/* Initialize the GPIO block */
gpioClock.fastClkDiv = 2;
gpioClock.slowClkDiv = 2;
gpioClock.simpleDiv = CY_U3P_GPIO_SIMPLE_DIV_BY_2;
gpioClock.clkSrc = CY_U3P_SYS_CLK;
gpioClock.halfDiv = 0;
Then I tried to create pulses:
/* Initialize test pin */
newGpioConfig.outValue = CyFalse;
newGpioConfig.driveLowEn = CyTrue;
newGpioConfig.driveHighEn = CyTrue;
newGpioConfig.inputEn = CyFalse;
newGpioConfig.intrMode = CY_U3P_GPIO_NO_INTR;
apiRetStatus = CyU3PGpioSetSimpleConfig(TEST_30, &newGpioConfig);
/* loop */
while(1){
CyU3PGpioSetValue (TEST_30, CyFalse);
CyU3PGpioSetValue (TEST_30, CyTrue);
}
I see that speed is too slow. Swithing frequency is very low. Frequency is about 288 kHz.
Why does it work with low speed? How can I get a high speed?
Show LessHello,
I have recently been developing with the FX3 and I have been running into some problems. I have been developing on the "Cypress BeUSB 3.0" kit, and using a 64 bit Windows 7 system.
The FX3 seems to work fine when using USB 2.0 ports on my computer, I loaded the UVCVideoClass and UVCVideoClassBulk examples onto the SPI flash and it shows up as a UVC camera and I can view with AMCap. However if I load that firmware onto the SPI flash, set the boot mode to SPI, and plug it into a USB3.0 port it does not show up. I tried most of the other examples for USB3.0 device that cypress provides and the same behavior occurs, it will work fine on a USB2.0 port but the computer won't even recognize something has been plugged in if I use a USB3.0 port.
However if I change the boot mode to USB, and plug it into a USB3.0 port, it shows up in the Control Center. But looking at the device tree it is registering as a USB2.0 device. Also it won't let me program the SPI flash when it is in a USB3.0 port. If I try it says "Waiting for device boot programmer to enumerate" and pauses for five seconds before displaying "Cypress boot programmer failed to enumerate". If I try to load the firmware onto the RAM instead of the SPI flash it says "programming succeeded" but nothing happens, no new device appears with either the uvc camera or streaming examples.
I also tried loading one of the examples on the SPI flash and testing it on other computers, all running 64 bit Windows 7, to make sure it wasn't just something wrong with my USB3.0 drivers. They all had the same behavior, it worked in a USB2.0 port but not USB3.0. I would think that maybe the development boards had some issue but a colleague of mine said he used one of these boards about a year ago on a different project and it worked great, and I believe he was also developing on a 64 bit Windows 7 machine.
My USB3.0 ports definitely work though, I tested them with a USB3.0 flash drive and Camera, they worked perfectly. I checked on the device tree viewer and they were showing up as USB3.0 Super Speed devices.
After spending quite awhile trying to debug this I'm stumped, any advice on making these show up as USB3.0 devices would be greatly appreciated, thanks.
- Joe
Show LessI config FX3 as Slave FIFO 32bit.
If I set FLAGA is Thread_0_DMA_Ready, FLAGB is Thread_0_DMA_Watermark, and set watermark as 4.
Assume DMA buffer is 1024*4.
Because the write is random, I assume the flowing steps:
1. Write 1019 words to fifo;
2. Because no data, wait some cycles;
3. Write 2 words to fifo; (I think FLAGB is not active, because 3 cycles latency)
4. Because no data, wait some cycles, now FLAGB is active;
5. Now data arrived, but we cannot know how many space at DMA buffer? FLAGB=L, FLAGA=H, ( actual has 3 words space);
I think, at step 5, we can only use single write cycle? For example, write one word, and wait 4 cycles, then check the FLAGA?
Show LessDear Sir,
I had found another similar question,CX3 supports resolution?
It seems total payload 3840*2160*30fps*1byte = 248832000 Bytes , which is lower than 300M bytes, CX3 maximum bandwidth.
But, when I use CX3 MIPI Receiver Summary to configure a 4K sensor ,e.g. IMX214, I have to use faster CSI clock (625Mhz)and little blanking.(H-Blanking=40, V-Blanking = 10).
in this configuration, Error free, otherwise, FIFO delay time ERROR will occur.
625Mhz is 1250Mps, is more than 1Gbps per data lane, can CX3 mipi receiver block work at this high speed?
Can you give me some advice which parameters are not configured correctly?
Good time and enjoy FIFA!
Best regards,
David
Enjoy FIFA
Show LessHi,Can CX3 support 4K raw10 @30fps resolution? or 4K raw8 @30fps ?
If CyU3PMipicsiReset() is initialized before CyU3PMipicsiInit (), it will report the error CyU3PMipicsiReset Err = 0x44, and then the initialization succeeds after CyU3PMipicsiInit ().
But now cx3 DMA cannot receive mipi data, and the mipi end can be measured with data,Why can't you receive data?
thank !
Show LessDear all,
I'm using CYUSB3KIT-003 FX3 as a slave FIFO with 32 bit data word and 100 MHz clock sourced from an external FPGA as application processing unit.
I'm new to this so I tried the from cypress provided examples in AN 65974.
I'm aware that cypress provided different firmware images for loopback, short-packet, streamIn and streamOut and the correlated fpga images.
When setting up loopback image in fx3 und FPGA and sending data from the control center into the out endpoint I can see the arrival of data in the fpga via Altera Signal Tap Tool. (See attached image).
FLAG A and B are set High in the beginning and stays high to cause the fpga state machine to get into the loop_back_write state for writing the data back to FX3. This is quite understandable in regard to loopback function.
I want to set up my own control state machine in fpga which can handle stream in and stream out. The fpga example from cypress provide two different fpga images for streaming data in and out. To create one fpga image which can handle both requests I would combine the state machines and would look in the idle state if either flag A and B or flag C and D are set to stream data out and in respectively (and using stremain/out firmware in FX3) However in the beginning Flag A and B are always High (so output buffer in FX3 is not full) and fpga starts to transfer data even when I didn't call XferData with appropiate endpoint. Sometimes I see only flag A is high but not flag B with streamin/out FX3 firmware image.
How is FX3 and/or the fpga statemachine to be configured to only read and write data when user calls api XferData at software on Host-PC?
The reason for this is, that I want to transfer a definite amount of critical data to fpga and send the calculated new data (fixed amount) back via XferData calls. It should not be a continous streaming. Are flags A B C D the correct indication for the fpga to know if it has to send or receive data?
Show LessI have a Denebola kit from e-Con Systems. It was initially configured to send images in a YUY2 format.
I managed to modify the firmware to send image in RGB565 format. For this purpose, I changed the following parameters:
- Camera format registers
- Media Type identifier (GUID)
- MIPI CSI-2 format (in 'CyU3PMipicsiCfg_t')
Since the bits-per-pixel of both formats is the same (16), I can see the video. Even when the camera format is set to YUY2, I can see the image in the PC, but color distorted.
The problem is, I want to stream in RAW8 or RAW10, which have a different bpp. I have changed the same parameters as before, but I can't get it running.
I have read this and this thread, but I'm still missing something. I also posted a case: case#00435749.
Should I change the previous parameters? What values should I use?
Other parameters I think that should be changed, based on what I have read here, are the 'hResolution' in 'CyU3PMipicsiCfg_t', used to calculate BYTE_COUNT; or the MIPI CSI-2 to GPIF bus used in 'CyU3PMipicsiGpifLoad' (now it is set to 16).
Should I change this parameters? What values should I use?
What format, media type identifier and bits-per-pixel should I use in the USB descriptor?
Show LessI have taken the cyusb_linux program (originally written for Qt 4.8), and ported it over to the Macintosh Qt 5.x. I have tested on Sierra for for identifying the USB 3.0 board, and downloading a program to the Superspeed Explorer Kit.
I have not tested *all* functionality. It uses system_profiler on a periodic basis to locate the plugged in device, rather than the udev features.
It is a QT project, and I would recommend compiling it for your machine, as there are some dependencies that may require libraries only installed with Xcode. It uses libusb (like the linux unit), and may require XCode to be installed due to references to libjpeg. Qt Creator can be a pain to set up on the Macintosh, but once it is set up everything goes well.
This was originally written under the GPLV2, so of course, it stays GPL v2.
If anyone is interested in it, you can contact me at wmaxfield at gmail dot com
Show Lesshi all,
I have use 32 bit slave fifo and I want to use GPIO[53:56] as an GPIO used as spi lines for read/write to SPI flash externally connected to a board. And also I need to use Uart for printing debug messages. In FX3, when using 32 bit gpif, then SPI_MOSI and UART_TX are mapped to the same GPIO[55]. Is it possible to use both UART and GPIO in GPIO[55] at a time ?. I tried by reconfiguring the IO matrix, but it wont work. Is there any possible way to do this?
Thanks in advance.
Show Less