USB superspeed peripherals Forum Discussions
Hello,
I have been following steps as RashiV_61 mention in my last discussion (https://community.cypress.com/message/227908?et=watches.email.thread#227908 )
and when i change the endpoint type from "CY_U3P_USB_EP_BULK" to "CY_U3P_USB_EP_ISO" i got error massage after programming board i got error from windows (unknown device (Invalid Configuration Descriptor))
I use SyncADMux project from GPIF Desginder and as per firmware I use is AN65974.
I attached project file (file that has been changed are cyfxslfifousbdscr.c - to change descriptors and cyfxslfifosync.c - after changing this file (the first file was left as it was in example) I did not encounter this error)
Show LessCan FX3 support superspeed mode that has HID interface plus bulk interface?
The single HID interface mouse+keyboard example doesn't enumerate as super speed. Can it enumerate as super speed?
Show LessGood day!
( Sensor AR0341 4lane 640*480*60fps)
I didn't use your program(from sdk) before. Now I am corrected
I also have a problem with your Linux Studio
1. the CS3 Receiver Configuration tab Is not saved, which means that you need to type everything again every time. see err2.jpg
2. it is not Clear how CS3 MAPI Interface Configuration H_Active is considered as it changes only when PCLK and format are changed. Can you describe it ?
3. my sensor was configured for CPU Clock 192MHz 640*480*60fps 4 lane and an error occurred
Max Output pixel clock cannot transfer CSIData.... see err1.jpg
And I don't understand why: (
Sensor Transmitter CASE Clock 192MHz = 384 Mbps per lane
CS3 PCLK= 87,88MHz RAW10 GPIF16bit. CS3 Recover Data_Rate = 87,88* 10(PixelDepth) = 878,8 Mbps perlane.
4. And still it is unclear opposite Output Pixel Clock the error "Minimum value 301.23" is shown as it so counted ?
At the moment, the project is configured as follows:
I. Sensor AR0341: CX3:
* ignore the name sensor ar0341
CyU3PMipicsiCfg_t OV4689_RAW10_640_480_60 =
{
CY_U3P_CSI_DF_RAW10, /* CyU3PMipicsiDataFormat_t dataFormat */
4, /* uint8_t numDataLanes */
1, /* uint8_t pllPrd */
62, /* uint16_t pllFbd */
CY_U3P_CSI_PLL_FRS_250_500M, /* CyU3PMipicsiPllClkFrs_t pllFrs */
CY_U3P_CSI_PLL_CLK_DIV_4, /* CyU3PMipicsiPllClkDiv_t csiRxClkDiv */
CY_U3P_CSI_PLL_CLK_DIV_4, /* CyU3PMipicsiPllClkDiv_t parClkDiv */
0, /* uint16_t mClkCtl */
CY_U3P_CSI_PLL_CLK_DIV_2, /* CyU3PMipicsiPllClkDiv_t mClkRefDiv */
640, /* uint16_t hResolution */
0 /* uint16_t fifoDelay */
};
status = CyU3PMipicsiSetPhyTimeDelay(1, 8);
USB works in HS mode. The reset timer is enabled.
Problems:
1 Getting multiple bundles of data CX3 freezes.
Here is a screenshot showing the logs and the location when it was frozen.
When the DMA freezes MIPI continues to work
Here is hsync (yellow) datalane0 (Red) hsync.jpg
Here is Vsync (yellow) datalane0 (Red) vsync.jpg
Here is pclk (yellow) data band 0 (Red) pclk.jpg
Show LessDid I set the values correctly?
1280 * 720 @30fps , 4lane, RAW12
CSI clock : 448Mhz
Data Lane : 4 LANE
THS-Prepare : 70
THS-Zero : 170
Frame rate : 30fps
H-Active : 1280
H-Blanking : 1256
V-Active : 720
V-Blanking : 16
Data format : RAW12
1. Can csi clock be over 400Mhz at 4 lane?
2. CX3 MIPI Reciver Configuration default value is O.K?
/* null_RAW12_Resolution0 : */
CyU3PMipicsiCfg_t null_RAW12_Resolution0 =
{
CY_U3P_CSI_DF_RAW12, /* CyU3PMipicsiDataFormat_t dataFormat */
4, /* uint8_t numDataLanes */
2, /* uint8_t pllPrd */
89, /* uint16_t pllFbd */
CY_U3P_CSI_PLL_FRS_250_500M, /* CyU3PMipicsiPllClkFrs_t pllFrs */
CY_U3P_CSI_PLL_CLK_DIV_4, /* CyU3PMipicsiPllClkDiv_t csiRxClkDiv */
CY_U3P_CSI_PLL_CLK_DIV_4, /* CyU3PMipicsiPllClkDiv_t parClkDiv */
0, /* uint16_t mClkCtl */
CY_U3P_CSI_PLL_CLK_DIV_2, /* CyU3PMipicsiPllClkDiv_t mClkRefDiv */
1280, /* uint16_t hResolution */
50 /* uint16_t fifoDelay */
};
3. Are there any more settings I need to add?
Best regards.
Hi,
I am using Windows host application for the UVC extension unit from UVC Extension unit here. I have taken firmware changes reference from CX3 UVC extension unit community thread. I am using CX3 SDK-1.3 and firmware example "cycx3_uvc_ov5640" for my experiment. When I test the UVC extension unit then it always returns an error with Error code: 0x80070492. However, I am able to stream the camera on my windows host machine. I have attached detailed error logs in attachement.
Can anyone help me that is there any configuration difference in the latest SDK for the UVC extension unit? Or Am I referring wrong host application example?
Show LessDear Readers,
In DmaMultiChannelConfiguration it is possible to have two producer PIB socket and CY_U3P_CPU_SOCKET_CONS as consumer socket.
when we are trying the above configuration, we are getting configuration error.
but when i tried UIB socket as consumer socket it is working fine
Show LessAlthough I'm running .NET C#, I had this issue initially when trying to run in x64: CyUSB.dll - x64 - Matlab problem
Any CPU would work.
Anyway, I followed the advice to try CyUSB 1.2.3.0 and now I'm getting "Attempted to read or write protected memory"... no matter what configuration I build with.
Name | Value | Type | |
---|---|---|---|
StackTrace | " at CyUSB.PInvoke.HidD_FreePreparsedData(Byte* data)\r\n at CyUSB.CyHidDevice.Open(Byte dev)\r\n at CyUSB.USBDeviceList..ctor(Byte DeviceMask, App_PnP_Callback fnCallBack)\r\n at CyUSB.USBDeviceList..ctor(Byte DeviceMask)\r\n at USBBootloaderHost.Form1..ctor() in C:\\CyBootloaderHost\\USBBootloaderHost\\Form1.cs:line 57\r\n at USBBootloaderHost.Program.Main() in C:\\CyBootloaderHost\\USBBootloaderHost\\Program.cs:line 18" | string |
Any advice appreciated.
My final goal is to add a feature to my app to program PSoC over USB.
Are there any examples I can download?
Thanks!
Show Less請問我現在有一個 672x528 320fps 的設定在 CX3 運行。
PC端可以順利收到影像,可是 FPS 約莫落在 200~220 上下。
我有把本來噴 uart debug 的 PRINT_FRAME_INFO 取消後,FPS 可以提升到 240~250 之間,與 320 還是有一定的差距。
請問還能怎麼調整令 CX3 可以達到 320fps 的出圖速度,或是 CX3 是否有 FPS 極限?是否有 document 可以參考,謝謝。
Show LessI was wondering if anyone might have encountered something similar to what I'm seeing with the DMA on the FX3. We have a DMA channel configured to pump data from the GPIF to the USB largely following the cyfxbulksrcsink.c example. The DMA is setup as follows:
/* Create a DMA Auto channel for the image producer socket. */
CyU3PMemSet ((uint8_t *)&dmaCfg, 0, sizeof (dmaCfg));
/* The buffer size will be same as packet size for the
* full speed, high speed and super speed non-burst modes.
* For super speed burst mode of operation, the buffers will be
* 1024 * burst length so that a full burst can be completed.
* This will mean that a buffer will be available only after it
* has been filled or when a short packet is received. */
dmaCfg.size = (size * CY_FX_EP_BURST_LENGTH);
/* Multiply the buffer size with the multiplier
* for performance improvement. */
dmaCfg.size *= CY_FX_DMA_SIZE_MULTIPLIER;
dmaCfg.count = CY_FX_IMAGE_DMA_BUF_COUNT;
dmaCfg.prodSckId = CY_FX_PPORT_PRODUCER_SOCKET;
dmaCfg.consSckId = CY_FX_EP_IMAGECONSUMER_SOCKET;
dmaCfg.dmaMode = CY_U3P_DMA_MODE_BYTE;
dmaCfg.notification = 0;
dmaCfg.cb = NULL;
dmaCfg.prodHeader = 0;
dmaCfg.prodFooter = 0;
dmaCfg.consHeader = 0;
dmaCfg.prodAvailCount = 0;
apiRetStatus = CyU3PDmaChannelCreate (&glChHandleImage,
CY_U3P_DMA_TYPE_AUTO, &dmaCfg);
Where:
size is 1024
CY_FX_EP_BURST_LENGTH is 16
CY_FX_DMA_SIZE_MULTIPLIER is 2
and CY_FX_IMAGE_DMA_BUF_COUNT is 3
(CY_FX_PPORT_PRODUCER_SOCKET is CY_U3P_PIB_SOCKET_0 and CY_FX_EP_IMAGECONSUMER_SOCKET is CY_U3P_UIB_SOCKET_CONS_6
From what I have been able to learn about the FX3 this all seems fine (I'm resurrecting this project that someone else started) but what I'm seeing is that when I try to get data off the sensor I get 96k bytes through the WinUsb_ReadPipe() on the PC before subsequent reads timeout. The reads have to be done in not more than 16k chunks based on the 16k buffer size in the FX3 but it doesn't matter if the chunk size is smaller it always stops at 96k - my image is 2MB total. The "interesting" thing is 96k is exactly how much buffer I've allocated to the DMA configuration (1024 x 16 x 2 x 3). It seems to me that the DMA isn't cycling through the buffers once it has handed them off to the USB socket; once it has gone through the six 16k buffers I don't get any more data.
How are the buffers are recycled or what might prevent the DMAC from recycling them? Seems to me that since I'm seeing the data at the PC that the buffers should be available for re-use in the FX3. I looked through the example code, the library source code and the FX3 programmer's guide but haven't found anything explaining that process. I suspect that there is something amiss in how I have things setup such that the DMAC callback isn't able to re-use the buffers but I don't know where the DMA callback code is or even if it is provided in source code. Any suggestions / ideas would be appreciated.
FYI - I believe I confirmed by suspicion by doubling the number of buffers and then i received twice as much data at the PC...
Thanks,
Greg
Show Less