USB superspeed peripherals Forum Discussions
HI,
I booted the FX3 code to transfer the data from u-port to p-port. FX3 is not detecting in the board. what might be the problem?
can anyone let me know about this.
I attached the code below, which was booted to 10 MP board.
Regards,
Aswini
Show LessI am using the following cx3 firmware with the danebola board and an ov5640 sensor to stream raw image data to the streamer app:”
https://community.cypress.com/thread/16971
I am seeing mostly failures in the streamer app when the packets per xfer and xfers to que are set to 256 and 64. Can you give me some suggestions how to get it to stream without failures?
Show Less
where did i find the read and write buffer in the msc example code.please let me know the buffer
Hi All,
I am still having issues using the CX3 RAW transfer firmware from this post: https://community.cypress.com/thread/16971?q=Streaming%20RAW%20image%20data%20using%20Cypress%20driver and the Cypress library to import RAW video data to the PC.
I see frequent DMA errors (error code 0x47 -- CY_U3P_ERROR_INVALID_SEQUENCE). The errors are being detected in the CyCx3UvcAppThread_Entry() routine. Since my original post (), I am concentrating on 5Mp frames @ 14.6 fps which has made the errors more frequent. I have optimized both the firmware (2000) and software (70) timeouts to the point where streaming can continue sometimes up to tens of minutes. Further, the system frequently recovers from these errors. I will see a burst of Steaming stopped/Streaming Started messages then image transfer continues. Inevitability however, the system will fail resulting in a continuous stream of Streaming stopped/Streaming Started messages without any data transfer. The only way to recover from this is to reload firmware.
I have experimented adding short delays in the collection thread to see how tolerant it is to Windows induced delays. Even a delay in collection as short as a millisecond will cause transfer errors and occasionally it causes a complete failure (a continuous stream of Streaming stopped/Streaming Started messages).
Any guidance is appreciated.
Thanks,
Scott
Show LessI used isochronous mode with CX3, But the test app Amcap always black screen. I am not sure the whether the config parameters are right, i have upload my code. It would be greatly appreciated If you can help on this issue.
we use 1280 x 800@15 fps, win10 platform. I use this macro "VS_ISOCHRONOUS_MODE" to switch bulk and isoc.
1.It shows that PC can get some data in the wireshark, like below.
2. When I open the camera, the uart log is as below:
MipiErrorThread Init.
AppInit:GpifSMStart passed
AppInit:fw version:1.11.27
d = 0 Cons = 0 Prtl_Sz = 0 Frm_Cnt = 0 Frm_Sz = 0 B
Prod = 0 Cons = 0 Prtl_Sz = 0 Frm_Cnt = 0 Frm_Sz = 0 B
status_t0 = 0, status_t1 = 0
Prod = 0 Cons = 0 Prtl_Sz = 0 Frm_Cnt = 0 Frm_Sz = 0 BCyCx3AppGetProbeControlData 1
CX3_APP_VS_PROBE_CONTROL ,1
CY_U3P_SUPER_SPEED = 1CyCx3AppGetProbeControlData 1
CX3_APP_VS_PROBE_CONTROL ,1
CY_U3P_SUPER_SPEED = 1CyCx3AppGetProbeControlData 1
CX3_APP_VS_COMMIT_CONTROL ,1
AplnStrt:CyCx3AppStart CyCx3AppStart
AplnStrt:SMState = 0x2
CB failure
UsbCB:Call AppStop CyCx3AppThread_Entry
AplnStop:SMState = 0x5
AplnStrt:CyCx3AppStart CyCx3AppStart
AplnStrt:SMState = 0x1
AplnStrt:CyCx3AppStart CyCx3AppStart
AplnStrt:SMState = 0x2
Prod = 29 Cons = 29 Prtl_Sz = 23120 Frm_Cnt = 1 Frm_Sz = 1090784 B
CB failure
UsbCB:Call AppStop CyCx3AppThread_Entry
AplnStop:SMState = 0x5
AplnStrt:CyCx3AppStart CyCx3AppStart
AplnStrt:SMState = 0x1
Prod = 55 Cons = 55 Prtl_Sz = 23120 Frm_Cnt = 2 Frm_Sz = 2048000 B
status_t0 = 0, status_t1 = 69
status_t0 = 0, status_t1 = 69
status_t0 = 0, status_t1 = 69
status_t0 = 0, status_t1 = 69
status_t0 = 0, status_t1 = 69
Show LessThanks for your help!
We fixed the problem by disabling low power mode.
But now we got a new one!
Our board's USB3.0 communication is not stable, it will fail in 20, 40 or 60 hours, the time is unpredictable.
The last three times we got no error or CTL message from bus hound.
We read the link error counter, it's no more than 64, and not changed after connection.
When it failes, it seems like that not all the pipes are blocked, sometimes EP3 blocked, sometimes other EP_Out pipe blocked.
When EP3 blocked, we can see the OUT DATA from bus hound, but cannot get the due IN DATA.
We tried to RESET, FLUSH and ABORT the pipe by calling WinUSB driver's interface,but cannot restore the communication.
The only way to restore communication without reset our board is to unplug then plug-in the USB cable.
Any idears with why this is happening?
Show LessHi Cypress
As below capture from attach file (Page 4) , What is the recovery failures happening rate in ver1.3.3 ? Does it happen in a specific lot ? When this happens .
Show Less
I get a depth sensor to connect to CX3. Now I can get the frame data on the host. But there is always data flicker in frame. I use the CyU3PMipicsiSetPhyTimeDelay to set the physical value and adjust the physical value. But the data flicker always exists. So what could be the problem? The following figure is mipi error log. Can any guy explain the variable in struct CyU3PMipicsiErrorCounts_t?
Show Less
Hi all,
for my Application ( Composite Device UVC + CDC-ACM ) I need to receive single bytes from the FX3 UART and forward them to the appropriate CDC Bulk EP..
Using DMA doesn't work because the data will transferred only if a buffer is filled, what means that at least 16 bytes have to be read.
When using the UART in register mode the function CyU3PUartReceiveBytes(...) seems to Block the whole system for a while if no bytes are available, even if I use it in a separate thread! Is there any possibility to avoid this?
Now I can see video at player, but only dozens of seconds the two function return Failure.and the video will be missing.
CyU3PDmaMultiChannelGetBuffer return CY_U3P_ERROR_TIMEOUT,
CyU3PDmaMultiChannelCommitBuffer return CY_U3P_ERROR_INVALID_SEQUENCE.
Please help me,how can I solve it?
thank you
my code in CY_U3P_DMA_CB_PROD_EVENT is
void DmaProducerEventCallback(CyU3PDmaMultiChannel *chHandle,
CyU3PDmaCbType_t type,
CyU3PDmaCBInput_t *input)
{
CyU3PDmaBuffer_t dmaBuffer;
CyU3PReturnStatus_t status = CY_U3P_SUCCESS;
status = CyU3PDmaMultiChannelGetBuffer(chHandle, &dmaBuffer, CYU3P_NO_WAIT);
if (status != CY_U3P_SUCCESS)
{
// signal the event and return
CyU3PEventSet(&glCloverUsbEvent, CX3_DMA_GET_BUFFER_ERROR_EVENT, CYU3P_EVENT_OR);
return;
}
for (int i = 0; ((i < 2) && (status == CY_U3P_SUCCESS)); i++)
{
/* Add Headers */
if (dmaBuffer.count < CX3_APP_DATA_BUF_SIZE)
{
DmaUvcDebugProbeInCallback(&dmaBuffer);
CyCx3AppAddHeader((dmaBuffer.buffer - UVC_DATA_BUFFER_HEADER_SIZE), CX3_APP_HEADER_EOF);
glCloverMipiInfo.hitFV = CyTrue;
}
else
{
CyCx3AppAddHeader((dmaBuffer.buffer - UVC_DATA_BUFFER_HEADER_SIZE), CX3_APP_HEADER_FRAME);
}
/* Commit Buffer to USB */
status = CyU3PDmaMultiChannelCommitBuffer(chHandle, (dmaBuffer.count + UVC_DATA_BUFFER_HEADER_SIZE), 0);
if (status != CY_U3P_SUCCESS)
{
CyU3PEventSet(&glCloverUsbEvent, CX3_DMA_COMMIT_BUFFER_ERRPR_EVENT, CYU3P_EVENT_OR);
break;
}
glCloverMipiInfo.dmaDone++;
glCloverMipiInfo.activeSocket ^= 1; /* Toggle the Active Socket */
status = CyU3PDmaMultiChannelGetBuffer(chHandle, &dmaBuffer, CYU3P_NO_WAIT);
}
}
my code in CY_U3P_DMA_CB_CONS_EVENT is
Show Lessvoid DmaCustomerEventCallback(CyU3PDmaMultiChannel *chHandle,
CyU3PDmaCbType_t type,
CyU3PDmaCBInput_t *input)
{
if(glCloverMipiInfo.dmaDone == 0)
{
Cx3Err("dma done is 0\r\n");
}
else
{
glCloverMipiInfo.dmaDone--;
}
glCloverMipiInfo.isStreamingStarted = CyTrue;
if((glCloverMipiInfo.dmaDone == 0)&&(glCloverMipiInfo.hitFV == CyTrue))
{
glCloverMipiInfo.hitFV = CyFalse;
glCloverMipiInfo.dmaTxCount = 0;
if(glCloverMipiInfo.activeSocket)
{
CyU3PGpifSMSwitch(CX3_INVALID_GPIF_STATE, CX3_START_SCK1,
CX3_INVALID_GPIF_STATE, ALPHA_CX3_START_SCK1, CX3_GPIF_SWITCH_TIMEOUT);
}else
{
CyU3PGpifSMSwitch(CX3_INVALID_GPIF_STATE, CX3_START_SCK0,
CX3_INVALID_GPIF_STATE, ALPHA_CX3_START_SCK0, CX3_GPIF_SWITCH_TIMEOUT);
}
}
}