USB superspeed peripherals Forum Discussions
I have developed an FPGA based Infrared Imaging system. The FPGA drives the sensor and reconstructs a 720p format video from the data captured from the sensor. I can generate the 8 or 10 bit raw data, Syncs(and blanking).
I now want to be able to convert this 720p video into a USB video format. I purchased the FX3 Super speed EZ kit and a HSMC interface board to connect with my FPGA development kit.
I perused the AN75779 application note and have a few questions:
1. The AN75779 application is tailored for the Aptina MT9M114 image sensor. If I can get my timing signals(syncs and pixel clocks) to match those of the Aptina sensor, will I simply be able to use the code in the application note?
2. If not, what modifications are required? The SensorScaling_HD720p_30fps() and SensorScaling_VGA() functions are primarily used for controlling the image sensor(correct me if I'm wrong). All I have is a video stream with 8 bit parallel data, FVAL, LVAL, Pixel Clock and DATAVALID signals. What else will be needed to read video stream from the FPGA?
Thank you for your time and patience. This is my first ever project with FX3. Please do correct me if I'm missing something.
Show LessHello,
is there any available information available i.e. schematics or programming guides for using a Lupa300 and the FX3?
On semi has only limited information available.
Thanks for any help.
Show LessWe are trying to bring up our custom FX3 board which is supposed to interface with an FPGA board. However , due to mistake in the PCB footprint of the USB3.0 B-type connector, the pin numbers have been swapped. (USB3.0 B-type connector has 10 pins, and pin number 1 is where pin number 10 was supposed to be, similarly pins 2-9, 3-8 and so on). Right now to be able to check other functionalities and connections, we modified the cable and board such that, the FX3 is detected as a USB2.0 device. With the board and cable modifications, the device is detected in device manager as Cypress FX3 USB BootLoader Device as well as on the USB Control Center.
However when I try to flash an FX3 example firmware to the device through USB Control Center, I get a message saying Programming Failed. However the same firmware when I flash to the RAM of superspeedkit, I get a Programming Succeeded message. I have verified the PMODE pins, which are kept as F1F, (I2C flash is present, but does not contain a valid firmware as of now).
1) Is there a log produced by USB control center which gives reasons for the failure of the programming
2) If there was an error in the cable modification (say D+ and D- are swapped), will the device be detected at all by the PC?
3) Any other hardware issue, which can cause the programming failure
Any other points which can help in further analysis of the issue will be a lot of help
Show LessI am using EZ USB Suite. I just downloaded and reinstalle reinstalled the suite today, create a new Cypress Project and editing the cs3config.cycx mask. After filling the Image sensor configuration mask
I moved to
and surprisingly I cannot see the left side fileds filled with values. These are calculated fileds from the prevuous data and the user is not supposed to touch (this happened yesterday on the other PC
I am desperate. I cannot explain this. The ony difference to me is a difference PC ...
please help
Show LessHi,
I am trying to expand the bulk loop example so that the firmware to contain additional configurations.
I duplicated the CyFxUSBHSConfigDscr array in cyfxbulklpdscr.c to and changed the configuration number and number of configurations on the device descriptor.
a "stall" is returned when the host tries to configure the device (set-configuration).
do you have any ideas or code examples for this issue?
thanks,
Gal
Show LessHello
Re: CX3 configuration for OV5680 RAW10 format
I am understanding that RAW10 input data can be converted to YUV422 with CX3 based on the above Link,and the conversion data can be viewed as standard UVC data with UVC applications such as AMcap and e-CAMView.
Q1)
If they change the data format mentioned above, is it ok to think that it can be changed only by customizing the CX3 FW? No need to change the UVC driver?
Q2)
Could you please explain in details how the data array of YUV422 is converted when RAW10 is packed with 16bits?
Best Regards,
Arai
Show LessI use GPIO for input interrupt, but I can't get in to interrupt, may I ask where I made a mistake? Here is my initialization and interrupt code:
// gpio int
void CyFxGpioIntrCb (uint8_t gpioId)
{
CyBool_t gpioValue = CyFalse;
CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS;
/* Get the status of the pin */
apiRetStatus = CyU3PGpioGetValue (gpioId, &gpioValue);
if (gpioValue == CyTrue)
{
CyU3PGpioSetValue (22, CyFalse); // FOR IR LED
}
else
{
CyU3PGpioSetValue (22, CyTrue); // FOR IR LED
}
if( GPIO_SSOR_XVS == gpioId)
{
}
}
// init gpio
void
CyFxGpioInit (void)
{
CyU3PGpioClock_t gpioClock;
CyU3PGpioComplexConfig_t gpioConfig;
CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS;
/* Init the GPIO module */
gpioClock.fastClkDiv = 2;
gpioClock.slowClkDiv = 0;
gpioClock.simpleDiv = CY_U3P_GPIO_SIMPLE_DIV_BY_2;
gpioClock.clkSrc = CY_U3P_SYS_CLK;
gpioClock.halfDiv = 0;
vJackyTestPrintNormal (4, "CyU3PGpioInit begin\n");
apiRetStatus = CyU3PGpioInit(&gpioClock, CyFxGpioIntrCb);
if (apiRetStatus != 0)
{
/* Error Handling */
vJackyTestPrintErr (4, "CyU3PGpioInit failed, error code = %d\n", apiRetStatus);
// CyFxAppErrorHandler(apiRetStatus);
}
CyU3PGpioSimpleConfig_t gpioConf = {0};
gpioConf.inputEn = CyTrue;
gpioConf.driveLowEn = CyFalse;
gpioConf.driveHighEn = CyFalse;
gpioConf.outValue = CyFalse;
gpioConf.intrMode = CY_U3P_GPIO_INTR_BOTH_EDGE;
apiRetStatus = CyU3PGpioSetSimpleConfig (44, &gpioConf);
}
main function:
io_cfg.gpioSimpleEn[1] = io_cfg.gpioSimpleEn[1] | FX3_GPIO_TO_HIFLAG(44);
Show LessHello
https://community.cypress.com/message/35996#35996
Regarding the above community Link, there is a answer below.
>CyU3PUsbSetTxSwing API sets the Tx amplitude used by FX3 on the USB 3.0 interface.
>Please use this API with caution. The device has only been tested to work properly under the default swing setting of 0.9V (swing value set to 90).
>This API is expected to be called before calling the CyU3PConnectState() API to enable USB connections. (swing TX Amplitude swing in 10 mV units. Should be >less than 1.28V)
>
Qestion) Where is this 0.9V measured result? I think it is an IC output pin, but is it correct? Or is it the end of the USB cable (= HOST side)?
Best Regards
Arai
Show LessHi,
I had a spartan 7 fpga dumping data into the FX3 and was reading the data with a modified version of STREAMER C#.
The protocol was BULKtransfer. I was seeing some dataloss on some computers so I needed to move Isochronous protocol.
In bulk i was using 64*1024byte DMA buffers.
In bulktransfer the data that gets put into xBufs
The amount of Packets per Xfer*1024.
For my current application that was 19 packets of 1024. Worked like a charm
Just go USB_data_frame = xBufs
Now that I've changed the FX3 code to ISOCHRONOUS this is not longer true.
I had to increase the DMA buffer size as isochronous is really slow with small buffers.
Currently I still need to send dataframes of 19kB but I have to send at least 8 packets per Xfer (isochronous demands this) but i also had to increase the buffersize to 4KB instead of 1024.
Therefore, I'm sending at least 32KB every Xfer.
This is not a problem. I can deal with this on another level.
I do notice however that the packets that are coming in through
isoc.FinishDataXfer(ref cBufs
aren NOT 32 KB anymore.
They're alternating between 8KB and 12KB which makes me think it's sending either 2 or 3 bursts of the 4KB dma buffers.
To makes things worse, it seems that the data is skipping randomly.
Does that have anything to do with the "overlaps"?
USB_data_frame = xBufs
I only have been programming C# since last week so I'm quite in over my head.
Can anybody point me in the right direction as far as the inner workings of isoc.FinishDataXfer goes.
The manual is sooo incredibly short and explains nothing.
Thank You!!!!!!!!!!!!!!!!!!!!!
Show LessHello,
Today has arrived my CYUSB3KIT-003 EZ-USB FX3 SuperSpeed Explorer Kit and I need to interface to an FPGA.
The basic idea of the connection is the following:
FPGA => CYUSB3KIT-003 through GPIF II => USB (2.0 or 3.0) storage device.
Then I read into the UG (https://www.cypress.com/file/133836/download 😞
"The SuperSpeed Explorer Kit development board is powered from the USB 3.0 connector J1. This development board does not support self-powered mode, although the FX3 device does support it."
So what is the correct way to supply power to the board in case of using a USB storage device connected to J1 ? Isn't it possible to work this way ?
Thanks.
Regards,
simozz
Show Less