USB superspeed peripherals Forum Discussions
Hi,
I'm trying to stream continuous 16, 24, and 32-bit data from GPIF over USB, but I'm running into problems at the highest internal GPIF clock speed. With 16/24/32-bit data, the following works great:
clockConfig.setSysClk400 = CyTrue; // CyU3PDeviceInit() -> 403.2MHz clock
CyU3PPibClock_t pibClk = {4, CyTrue, CyFalse, CY_U3P_SYS_CLK}; // 89.6MHz GPIF clock
-> Streaming 16-bit data continuously is about 179.2 MiB/s, and it works well.
-> Streaming 24-bit data continuously is about 268.8 MiB/s, and it also works well.
-> Streaming 32-bit data continuously is about 358.4 MiB/s, and it also works well.
However, when I increase the internal GPIF clock to ~100MHz, then only 16-bit streaming works. I'm using:
clockConfig.setSysClk400 = CyTrue; // CyU3PDeviceInit() -> 403.2MHz clock
CyU3PPibClock_t pibClk = {4, CyFalse, CyFalse, CY_U3P_SYS_CLK}; // 100.8MHz GPIF clock
Streaming 24-bit data continuously is only about 302.4 MiB/s, so I don't understand why it drops data since the higher 32-bit transfer rate (358.4 MiB/s) above works.
If the DMA buffer size is 31 KB (with 2 buffers per socket), then the system transmits 31*2 KB of data fine but then drops ~30 clocks of data every 31KB after that. If the DMA buffer size is 34 KB, then the system transmits 34*2 KB of data fine but then drops ~30 clocks of data every 34KB after that.
Any ideas?
Thank you!
P.S. I'm basically using the code here: https://community.infineon.com/t5/USB-superspeed-peripherals/SuperSpeed-Design-Examples-V1-2-1-GPIF-Example2-external-clock/m-p/392528 . Ajeeth provided an example GpifToUsb.zip file to ping pong between two threads. Increasing the DMA buffer size to 16+KB and tweaking the GPIF state machine to use DMA_WM_TH0/DMA_WM_TH1 allows me to stream 16-bit data at 100MHz continuously with no drops.
Show LessHello all,
I developed a UVC driver with CX3. My image sensor has a resolution of 1920x1280. Normally, when I develop the driver at 1920x1280 resolution, the image does not appear. However, when I print frame info from the uart, frame size = 4972800B appears. If I set the resolution to 1920x1295 in the descriptor, based on the calculation that 1920*1295*2 = 4972800 corresponds to this frame size, the image appears. However, the extra parts of the image appear slightly distorted from the top and bottom. How can I set this buffer correctly and set it to 1920*1280*2 = 4915200B? Does anyone have any solution?
Show Less
System: win11
The driver has been properly installed, and the factory default routine can run normally when I2C is started or USB is started.
Select USB to boot, and after downloading the cyfxusbuart firmware, the device manager shows that the configuration descriptor is invalid.
May I ask if this is a driving problem?
smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/%E8%B6%85%E9%AB%98%E9%80%9FUSB%E5%A4%96%E8%AE%BE/CYUSB3KIT-003%E5%BC%80%E5%8F%91%E6%9D%BFcyfxusbuart%E4%BE%8B%E7%A8%8B-%E9%85%8D%E7%BD%AE%E6%8F%8F%E8%BF%B0%E7%AC%A6%E6%97%A0%E6%95%88%E6%9E%9A%E4%B8%BE%E5%A4%B1%E8%B4%A5/td-p/653370
Show LessI am implementing a UVC application using a manual, 2 socket, many-to-one DMA. We are encountering output buffer overruns so I would like to send error packets to the sink to notify of this issue. Reading the UVC spec, it seems I can send UVC packets containing just the UVC header and error bit set for the duration of the overruns.
The example USBVideoClassBulk manually inserts buffers into a DMA channel with no buffers however I would be inserting into a DMA with 2 buffers per socket.
Is this understanding correct? If so, how can I insert an empty buffer into the existing DMA channel? If I am incorrect, how should I handle the output buffer overruns?
Show Lessas post https://community.infineon.com/t5/USB-low-full-high-speed/FX3-debug-print-to-usb-issue/td-p/651152 said, I am using CyU3PDebugPrint to print debug message to USB port,
but if I killed the read process in my PC, I can not operate FX3 again, It looks like the whole system's jammed.
i think If the host application, doesn't read the data on interrupt endpoint then DMA overflow will happen and CyU3PDebugPrint will get stuck.
so how can i clear the buffer automatically if it is full, I did not find a way to register a callback for CyU3PDebugPrint managed DMA
Show LessHello,
I got CYUSB FX3 superspeed kit 49$ in order to get video from 16bit parallel thermal camera.
i used AN75779 example to get video and my pin connections:
D0-D15 parallel data 16bit
PCLK - PCLK
CTL12 - HSYNC
CTL11 - VSYNC
everything looks good measured HSYNC/VSYNC and PCLK looks good. but no video blank screen (on FX3 camera application from windows)
anyone knows why i cant get video?
should i modify state machine for my case? i just change to;
<?xml version="1.0" encoding="us-ascii"?>
<CyXmlSerializer>
<!--This file is machine generated and read. It is not intended to be edited by hand.-->
<!--Due to this, there is no schema for this file.-->
<CyGuid_7d237aff-d944-11da-aaba-00164119d63b type_name="CyGpif2Designer.Common.PrjMgmt.Model.CyPrjMgmtGpif2exe" version="2">
<CyGuid_7d237b00-d944-11da-aaba-00164119d63b type_name="CyGpif2Designer.Common.PrjMgmt.Model.CyPrjMgmtProject" version="1">
<ProjectDocs>
<CyGuid_7d237b03-d944-11da-aaba-00164119d63b type_name="CyGpif2Designer.Common.PrjMgmt.Model.CyPrjMgmtItem" name="gpif2model.xml" persistent="./projectfiles/gpif2model.xml" target="7d237b02-d944-11da-aaba-00164119d63b">
<Hidden v="False" />
</CyGuid_7d237b03-d944-11da-aaba-00164119d63b>
<CyGuid_7d237b03-d944-11da-aaba-00164119d63b type_name="CyGpif2Designer.Common.PrjMgmt.Model.CyPrjMgmtItem" name="gpif2view.xml" persistent="./projectfiles/gpif2view.xml" target="7d237b01-d944-11da-aaba-00164119d63b">
<Hidden v="False" />
</CyGuid_7d237b03-d944-11da-aaba-00164119d63b>
<CyGuid_7d237b03-d944-11da-aaba-00164119d63b type_name="CyGpif2Designer.Common.PrjMgmt.Model.CyPrjMgmtItem" name="gpif2timingsimulation.xml" persistent="./projectfiles/gpif2timingsimulation.xml" target="3ad448c6-d155-4f76-a7fb-e760cd8e6feb">
<Hidden v="False" />
</CyGuid_7d237b03-d944-11da-aaba-00164119d63b>
</ProjectDocs>
<OutputDocs>
<CyGuid_7d237b03-d944-11da-aaba-00164119d63b type_name="CyGpif2Designer.Common.PrjMgmt.Model.CyPrjMgmtItem" name="cyfxgpif2config.h" persistent=".\cyfxgpif2config.h" target="7d237afd-d944-11da-aaba-00164119d63b">
<Hidden v="False" />
</CyGuid_7d237b03-d944-11da-aaba-00164119d63b>
<CyGuid_7d237b03-d944-11da-aaba-00164119d63b type_name="CyGpif2Designer.Common.PrjMgmt.Model.CyPrjMgmtItem" name="cyfxgpif2config.h" persistent="C:\Users\volkan\Workspace\UVC_AN75779\fx3_uvc.cydsn\cyfxgpif2config.h" target="7d237afd-d944-11da-aaba-00164119d63b">
<Hidden v="False" />
</CyGuid_7d237b03-d944-11da-aaba-00164119d63b>
</OutputDocs>
</CyGuid_7d237b00-d944-11da-aaba-00164119d63b>
<Settings>
<Setting name="GPIF2_OutputName" value="cyfxgpif2config" />
<Setting name="GPIF2_OutputLocation" value=".\" />
<Setting name="GPIF2_Template" value="C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\GPIFII Designer\inputs\outputtemplates\cygpif2cheadertemplate.tpl" />
</Settings>
</CyGuid_7d237aff-d944-11da-aaba-00164119d63b>
</CyXmlSerializer>
THANKS
Show Less
Hello,
I'm debug the CYUSB3014 evb board base on the an75779 demo code, when I enable the USB_DEBUG_INTERFACE in uvc.h, and install the driver, but when I use the Control Center, it only can write once, and need write success again, I add a printf in the UVCAppEP0Thread_Entry, it nerver goto this function, I think it doesn't make sense, I attach the project, can you give some suggestions, thanks.
Show Less
Hi, I am using a
Hello,
I need an example of CX3 Isochronous modes with MIPI csi camera sensors like OV5640 or others, I want to why you only provice CX3 Bulk modes + mipi sensors like ov5640/as0260. It seems that most of UVC camera use Isochronous modes, not bulk modes.
Thanks
Show LessWe want to test the Synchronous transfer mode, can you provide the example?The example in SDK is bulk mode,Is there a tutorial if we modify it, or just fix descriptors in USB dscr?
Show Less