USB superspeed peripherals Forum Discussions
Hi all,
after having updated my AN75779 based project with the help of Technical Support, that gave me Rev Q215, I was happy to see that INVALID_SEQUENCE errors disappeared; and the new frame timeout system saved some bad situation...
But my happiness ended when I discovered that the frame acquisition sometime stops suddenly and there is no way to restore it. This problem is random: may happen after few minutes or hours. From the serial debug I get no errors, it seems all right but the acquisition cannot recover; the only way is a reboot.
I already tried: CyU3PPibDeInit/CyU3PPibInit, CyU3PDmaMultiChannelDestroy/CyU3PDmaMultiChannelCreate, CyU3PUsbResetEndpointMemories, but the acquisition remains stuck or sometime only few garbage bytes are returned.
How can avoid this? Or, at least, restore the acquisition...
Thank a lot!
Show Less
Hello, I want to use CYUSB3014 and a NANDflash to make a U disk. I met some trouble. I set the DQ0-DQ1 as address data multiplexed lines, first of all, I need to write to the Flash with 8byte command, is any FX3 API function doing it? Second, I would like to use the GPIF machine to read and write flash's sectors, how to read and write 512byte once using GPIF? third, how can I set the DMA channel, in which can resolve a UFI command from HOST and make a data transmission?
Look forward to your reply.
Show LessDear Sir,
Can you give me some solution to isolate CX3 from HOST?(e.g. PC)?
In medical situation, some instruments need electrical isolation between USB host and USB slave.
I found USB-4630 USB3.0 hub(from advantech,taiwan) and USB204R1(from Humandata, a japanese company) are isolator device, but I want to know a low cost solution. is there IC solution for this case?
Best regards!
David
Show LessHow to tune FX3 I2C SCL SDA timing same as MCU, FX3 I2C SDA is not alignment with falling edge SCL.
Can FX3 tune register let waveform same as MCU.png show. SDA edge is alignment with falling edge of SCL.
Show LessHi,
I know FX3 with GPIF II interface cannot function as Super Speed Host Controller as per this post:
However, my question is the following:
In the near-future, is Cypress planning to launch some product that can meet above requirement?
A normal USB3.0 Host Controller won't have the GPIF II Interface and hence cannot be used.
Please do let me know if some product is being planned.
Thanks,
Harshad.
Show LessTo whom may concern,
Hello, we are currently developing a camera using the CX3 (cyusb3065) chip.
There are no problems to use image capture function with the viewer of the PC or smart phone.
But, it is not easy to use this function as we press the camera button on the camera device.
We try to create a DMA channel and then, press the capture button to try to convey this message to the viewer's PC program but it is not working properly.
Please support if you have the solution on this problem.
As below are some of the code being implemented.
//
in CyCx3Appinit()
/* Create a DMA MANUAL_IN channel for the producer socket. */
dmaChConfig.size = 32;
dmaChConfig.count = 2; //CY_FX_BULKLP_DMA_BUF_COUNT;
dmaChConfig.prodSckId = CY_FX_EP_PRODUCER_SOCKET;
dmaChConfig.consSckId = CY_U3P_CPU_SOCKET_CONS;
dmaChConfig.dmaMode = CY_U3P_DMA_MODE_BYTE;
/* No callback is required. */
dmaChConfig.notification = 0;
dmaChConfig.cb = NULL;
dmaChConfig.prodHeader = 0;
dmaChConfig.prodFooter = 0;
dmaChConfig.consHeader = 0;
dmaChConfig.prodAvailCount = 0;
status = CyU3PDmaChannelCreate (&glChHandleStatusIn, CY_U3P_DMA_TYPE_MANUAL_IN, &dmaChConfig);
if (status != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "\n\r>CyU3PDmaChannelCreate failed, Error code = %d", status);
// CyCx3AppErrorHandler(status);
}
/* Create a DMA MANUAL_OUT channel for the consumer socket. */
dmaChConfig.prodSckId = (CyU3PDmaSocketId_t)CY_U3P_CPU_SOCKET_PROD; //CY_U3P_CPU_SOCKET_PROD;
dmaChConfig.consSckId = (CyU3PDmaSocketId_t)CY_FX_EP_CONSUMER_SOCKET; //CY_U3P_UIB_SOCKET_CONS_0;
status = CyU3PDmaChannelCreate (&glChHandleStatusOut, CY_U3P_DMA_TYPE_MANUAL_OUT, &dmaChConfig);
if (status != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "\n\r>CyU3PDmaChannelCreate failed, Error code = %d", status);
// CyCx3AppErrorHandler (status);
}
/* Set DMA Channel transfer size */
status = CyU3PDmaChannelSetXfer (&glChHandleStatusIn, CY_FX_BULKLP_DMA_TX_SIZE);
if (status != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "\n\r>CyU3PDmaChannelSetXfer glChHandleStatusIn Failed, Error code = %d", status);
// CyCx3AppErrorHandler (status);
}
status = CyU3PDmaChannelSetXfer (&glChHandleStatusOut, CY_FX_BULKLP_DMA_TX_SIZE);
if (status != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "\n\r>CyU3PDmaChannelSetXfer glChHandleStatusOut Failed, Error code = %d", status);
// CyCx3AppErrorHandler (status);
}
After pressing Capture Button, Function call
static void
CaptureIrqCallback (CyBool_t isButtonPressed)
{
CyU3PDmaBuffer_t bufferToSend;
CyU3PReturnStatus_t status = CY_U3P_SUCCESS;
CyU3PMemSet(glStatusPacket, 0x00, 16);
glStatusPacket[0] = 0x02; /* bStatusType = VideoStreaming interface */
glStatusPacket[1] = 0x01; /* bOriginator = ID of VideoStreaming interface */
glStatusPacket[2] = 0x00; /* bEvent = Button press */
glStatusPacket[3] = isButtonPressed ? 0x01 : 0x00; /* bValue = Button press state */
bufferToSend.buffer = glStatusPacket;
bufferToSend.count = 4;
bufferToSend.size = 16;
bufferToSend.status = 0;
//CyU3PDebugPrint (4, "\n\r>Before Button press send");
status = CyU3PDmaChannelSetupSendBuffer (&glChHandleStatusOut, &bufferToSend);
if (status != CY_U3P_SUCCESS)
CyU3PDebugPrint (4, "\n\r>SendButtonPressToHost(%d): SetupSendBuffer failed with 0x%x\n", isButtonPressed, status);
else
CyU3PDebugPrint (4, "\n\r>Commmand DMA channel setup, wait for completion");
status = CyU3PDmaChannelWaitForCompletion(&glChHandleStatusOut, CYU3P_WAIT_FOREVER);
if (status != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "\n\r>SendButtonPressToHost(%d): WaitForCompletion failed with 0x%x\n", isButtonPressed, status);
CyU3PDmaChannelDestroy (&glChHandleStatusOut);
}
CyU3PDebugPrint (4, "\n\r>Capture command sent to host\n");
}
The error occurs at this point at CaptureIrqCallback ().
status = CyU3PDmaChannelSetupSendBuffer (&glChHandleStatusOut, &bufferToSend);
if (status != CY_U3P_SUCCESS)
CyU3PDebugPrint (4, "\n\r>SendButtonPressToHost(%d): SetupSendBuffer failed with 0x%x\n", isButtonPressed, status);
else
CyU3PDebugPrint (4, "\n\r>Commmand DMA channel setup, wait for completion");
status = CyU3PDmaChannelWaitForCompletion(&glChHandleStatusOut, CYU3P_WAIT_FOREVER);
if (status != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "\n\r>SendButtonPressToHost(%d): WaitForCompletion failed with 0x%x\n", isButtonPressed, status);
CyU3PDmaChannelDestroy (&glChHandleStatusOut);
}
I have CYUSB3ACC_005 and Superspeed Explorer Kit, and ZC706.
My requirement is to transmit 32-b UVC from FPGA and allow quick download a block of control/calibration data (10 MB+) into FPGA via USB3 when the UVC is idle.
After some research my idea is as follows. Would like to check whether it makes sense.
1) Change the data width in fx3_uvc.cyfx to 32-bit, add a state machine (DOWNLOAD) to do 2~5.
2) Add a INTR_FPGA pin to interrupt the Zynq CPU when the FX3 Firmware has a sub-block of control data in EP0.
3) FX3 Firmware moves state machine by CyU3PGpifSMStart(DOWNLOAD_START) state, wait for 1ms.
4) Zynq CPU instructs FPGA to control READ pin and read 32-bit data.
5) Repeat 2/4 until all 10MB data is transmitted.
6) Move state machine to UVC by CyU3PGpifSMStart (START_SCK0, ALPHA_START_SCK0);
Show LessHello,
In the Cypress document AN90369 (How to interface a MIPI CSI2 Image sensor with EZ-USB CX3), section 5.6, a helper file named cycx3_sensor.c was mentioned. I searched the installation folder of FX3 SDK and I couldn't find this file. Anyone on this forum know where to find it? Thanks
Regards,
Huihai
Show LessHi:
I install the Eclipse from the FX3_SDK_Windows_v1.3.3.exe.
when I click the eclipse(Cypress EZ USB Suite) -> window->preference->appearance
I got the window "Cound Not Accept Changes" : The currently displayed page contains invalid valuse.
so I can't change the theme. so, how to fix it?
thanks
Show Less