- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
//UvcAppDebugPrint(4," %d", WrBuff);
status = CyU3PDmaChannelSendData(&glUibChHandle, (uint8_t*)&WrBuff, CX3_UVC_VC_LEN_VALUE_WORD);
CyU3PDebugPrint(4,"\n\r Send EP0 Data failed------------- = 0x%x", status);
//status = CyU3PUsbSendEP0Data(CX3_UVC_VC_LEN_VALUE_WORD,(uint8_t*)&WrBuff);
if (status != CY_U3P_SUCCESS)
{
CyU3PDebugPrint(4,"\n\r Send EP0 Data failed = 0x%X", status);
}
Replaced CyU3PUsbSendEP0Data to CyU3PDmaChannelSendData as mentioned in the above link. Used for handling GET request from host. API returns success but the UVC control gets disabled.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Instead of using CyU3PDmaChannelSendData() please test using CyU3PUsbSendEP0Data() itself - but along with this the following API needs to be used - CyU3PUsbSetEpSuspDisableMask() API (refer 5.36.7.52 of FX3 API guide) - which skips suspend of USB IN endpoints (as per the mask chosen).
But please note that by using CyU3PUsbSetEpSuspDisableMask(), there may be chances of data corruption when Bulk and EP0-IN transfers happen concurrently. Even when you used CyU3PDmaChannelSendData(), this possibility existed - which was communicated in the thread you referred.
Regards,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Instead of using CyU3PDmaChannelSendData() please test using CyU3PUsbSendEP0Data() itself - but along with this the following API needs to be used - CyU3PUsbSetEpSuspDisableMask() API (refer 5.36.7.52 of FX3 API guide) - which skips suspend of USB IN endpoints (as per the mask chosen).
But please note that by using CyU3PUsbSetEpSuspDisableMask(), there may be chances of data corruption when Bulk and EP0-IN transfers happen concurrently. Even when you used CyU3PDmaChannelSendData(), this possibility existed - which was communicated in the thread you referred.
Regards,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Data Corruption occurs with bulk transfer even after using CyU3PUsbSetEpSuspDisableMask() API for MJPEG format in USB 2.0 port.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Please note that using CyU3PUsbSetEpSuspDisableMask() OR using CyU3PDmaChannelSendData() directly will not prevent data corruption from happening. If you make sure that there is no active bulk transfer when control transfer (where data is sent to Host) happens, then corruption will not occur.
Regards,