USB superspeed peripherals Forum Discussions
Hello,
I have a sensor which supports UYVY format in 16 bit and 10 bit .It was streaming in 16 bit, I want to stream it in 10 bit UYVY format .I want to know the methods to stream UYVY format in 10 bit ?
Thanks and regards,
stardust
Show LessI am implementing a way to change between MultiChannel DMA and Single Channel DMA in my FX3 UVC firmware. I have the firmware working where it can correctly choose between Multi or Single Channel depending on the streamed resolution however whenever I try to stream a resolution that uses MultiChannel, I am receiving error code 0x40 from the CyU3PDmaMultiChannelReset API call. Looking at the API guide, it doesnt have any comments on why this error can be thrown. When I use the CyU3PDmaMultiChannelGetStatus API, I am seeing a status of 0xEF so it looks to be something in the setup but Im not sure what. My DMA creation code is as follows:
static void
CyFxUVCApplnDmaChannelCreate (void)
{
CyU3PEpConfig_t epCfg;
CyU3PDmaChannelConfig_t dmaCfg;
CyU3PDmaMultiChannelConfig_t dmaMultiCfg;
CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS;
CyU3PMemSet((uint8_t *)&epCfg, 0, sizeof(epCfg));
CyU3PMemSet((uint8_t *)&dmaCfg, 0, sizeof(dmaCfg));
CyU3PMemSet((uint8_t *)&dmaMultiCfg, 0, sizeof(dmaMultiCfg));
/* VideoStreaming USB IN Endpoint Configuration */
epCfg.enable = CyTrue;
epCfg.epType = CY_U3P_USB_EP_BULK;
epCfg.pcktSize = glEPPktSize; //1024 for USB 3, 512 for USB 2
epCfg.burstLen = glEPBurstLen; //16 for USB 3, 1 for USB 2
epCfg.isoPkts = 0;
epCfg.streams = 0;
apiRetStatus = CyU3PSetEpConfig(CY_FX_EP_VID_BULK, &epCfg);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "UVC start CyU3PSetEpConfig failed, Error code = 0x%x\r\n", apiRetStatus);
ERROR_BITMAP_SET(15);
ApplnErrorHandler(apiRetStatus);
}
if (CyFxAppNeedMultiDma() == CyTrue)
{
dmaMultiCfg.size = glDMABufSize; // 32KB for USB 3, 16KB for USB 2
dmaMultiCfg.count = glDMABufCount; // 2 for USB 3, 4 for USB 2
dmaMultiCfg.dmaMode = CY_U3P_DMA_MODE_BYTE;
dmaMultiCfg.notification = CY_U3P_DMA_CB_PROD_EVENT |
CY_U3P_DMA_CB_CONS_EVENT ;
dmaMultiCfg.prodHeader = 12;
dmaMultiCfg.prodFooter = 4;
dmaMultiCfg.consHeader = 0;
dmaMultiCfg.prodAvailCount = 0;
dmaMultiCfg.cb = CyFxUVCApplnMultiDmaCB;
dmaMultiCfg.validSckCount = 2;
dmaMultiCfg.prodSckId[0] = CY_U3P_PIB_SOCKET_0;
dmaMultiCfg.prodSckId[1] = CY_U3P_PIB_SOCKET_1;
dmaMultiCfg.consSckId[0] = (CY_U3P_UIB_SOCKET_CONS_0 | 0x02);
apiRetStatus = CyU3PDmaMultiChannelCreate(&glMultiChHandleUVCStream, CY_U3P_DMA_TYPE_MANUAL_MANY_TO_ONE, &dmaMultiCfg);
CyFxI2CWriteStatusBit(CyFalse, FPGA_I2C_STATUS_SINGLEDMA_POS);
}
else
{
dmaCfg.size = glDMABufSize;
dmaCfg.count = glDMABufCount;
dmaCfg.dmaMode = CY_U3P_DMA_MODE_BYTE;
dmaCfg.notification = CY_U3P_DMA_CB_PROD_EVENT |
CY_U3P_DMA_CB_CONS_EVENT ;
dmaCfg.prodHeader = 12;
dmaCfg.prodFooter = 4;
dmaCfg.consHeader = 0;
dmaCfg.prodAvailCount = 0;
dmaCfg.cb = CyFxUVCApplnSingleDmaCB;
dmaCfg.prodSckId = CY_U3P_PIB_SOCKET_0;
dmaCfg.consSckId = (CY_U3P_UIB_SOCKET_CONS_0 | 0x02);
apiRetStatus = CyU3PDmaChannelCreate(&glSingleChHandleUVCStream, CY_U3P_DMA_TYPE_MANUAL, &dmaCfg);
CyFxI2CWriteStatusBit(CyTrue, FPGA_I2C_STATUS_SINGLEDMA_POS);
}
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint(4, "UVC start CyU3PDmaChannelCreate failed, Error code = 0x%x\r\n", apiRetStatus);
ERROR_BITMAP_SET(16);
ApplnErrorHandler(apiRetStatus);
}
CyU3PUsbFlushEp (CY_FX_EP_VID_BULK); /* Recommended to flush after creation */
glDmaCreated = CyTrue;
}
and the function generating the error. This is run after UVC negotiation finishes and a resolution is decided:
CyU3PReturnStatus_t
CyFxUVCApplnDmaStart (void)
{
CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS;
/* Place the EP in NAK mode before cleaning up the pipe. */
CyU3PUsbSetEpNak(CY_FX_EP_VID_BULK, CyTrue);
CyU3PBusyWait(125); /* Required due to known SDK 1.3.4 issues */
/* Reset and flush the endpoint pipe. */
CyU3PUsbFlushEp(CY_FX_EP_VID_BULK);
if (CyFxAppNeedMultiDma() == CyTrue)
{
apiRetStatus = CyU3PDmaMultiChannelReset(&glMultiChHandleUVCStream);
if (apiRetStatus != CY_U3P_SUCCESS)
{
// RETURNS ERROR 0x40!!
ERROR_BITMAP_SET(32);
ApplnErrorHandler(apiRetStatus);
}
/* Set up DMA channel for infinite transfer */
apiRetStatus = CyU3PDmaMultiChannelSetXfer(&glMultiChHandleUVCStream, 0, 0);
if (apiRetStatus != CY_U3P_SUCCESS)
{
ERROR_BITMAP_SET(33);
ApplnErrorHandler(apiRetStatus);
}
}
else
{
apiRetStatus = CyU3PDmaChannelReset(&glSingleChHandleUVCStream);
if (apiRetStatus != CY_U3P_SUCCESS)
{
ERROR_BITMAP_SET(32);
ApplnErrorHandler(apiRetStatus);
}
apiRetStatus = CyU3PDmaChannelSetXfer(&glSingleChHandleUVCStream, 0);
if (apiRetStatus != CY_U3P_SUCCESS)
{
ERROR_BITMAP_SET(33);
ApplnErrorHandler(apiRetStatus);
}
}
CyU3PUsbSetEpNak(CY_FX_EP_VID_BULK, CyFalse);
CyU3PBusyWait(125);
glOutBuffers = 0;
return apiRetStatus;
}
My firmware also triggers the ERROR_BITMAP_SET(32) lines when I change the resolution with the USB cable plugged in. If I start up the device without the USB cable plugged in and then plug it in after initialization, there arent any errors (though switching the resolution still errors out.)
Show Less我们想用soc传rgb数据到fx3,用的接口就是接rgb屏幕那种24根数据线、一根时钟、三根控制管脚的接口。由于硬件打板周期较长,我想先问下这种方案有没有可行性,然后有没有类似的示例程序可以参考
This message is prompted whenever I try to install the Super Speed Explorer Kit . I have done installing the FX3 SDK. But this Super Speed Explorer Kit not getting installed. please help me
Show Less您好:我使用的是CYUSB3014芯片,安装了ezusbfx3sdk_1.3.5_Windows_x32-x64。第一次上电后,USU识别显示设备描述符请求失败,重新安装驱动没解决,当前启动模式在USB引导。可以帮忙看看吗 谢谢。
Hi,
May i know is this behavior expected?
1.) Program FX3 Firmware
2.) See Streamer Example in Device manager
3.) Restart PC (Win10)
4.) Open Device manager, see bootloader
5.) Program FX3 Firmware
6.) On Device Manager/Control center, the Streamer Example missing (Issue).
7.) Replug the USB cable, will see bootloader
8.) Program FX3 Firmware
9.) See Streamer Example in Device manager (now OK)
Setup:
USB3.1 Cable certified
Win 10, SDK 1.3.4, driver v1.2.23
Firmware: any firmware
PMODE: "boot only"
Thanks
Hello,
I have an image sensor that can support both 16 bit and 10bit in UYVY format and I am able to stream 16bit UYVY format, but I couldn't be able to stream in 10bit UYVY format, for that I need GUID that supports 10bit in UYVY format.
Also, I would like to know which windows application can stream 10bit UYVY format.
Show Less