Cypress Perform

Home > Design Support > Cypress Developer CommunityTM > Cypress Forums > USB Controllers > Isoc High Bandwidth EP using USBIsoSourceSink

Bookmark and Share
Cypress Developer CommunityTM
Forums | Videos | Blogs | Training | Rewards Program | Community Components



Isoc High Bandwidth EP using USBIsoSourceSink
Moderator:
RSKV

Post Reply
Follow this topic



Isoc High Bandwidth EP using USBIsoSourceSink

Ken4242 posted on 09 May 2012 3:30 PM PST
Top Contributor
21 Forum Posts

I am trying to make the example USBIsoSourceSink work as a High BW EP.  I have updated the descriptor and I have changed the code below to 2 for isoPkts but the PID that the Cypress sends back is still a Data0 packet.  What do I need to do to make this example work as a High Bandwidth EP?

 

Ken

 

 

CyU3PMemSet ((uint8_t *)&epCfg, 0, sizeof (epCfg));enable = CyTrue;epType = CY_U3P_USB_EP_ISO;burstLen = (usbSpeed == CY_U3P_SUPER_SPEED) ?streams = 0;pcktSize = size;isoPkts = 2;

epCfg.

epCfg.

epCfg.

(CY_FX_EP_BURST_LENGTH) : 1;

epCfg.

epCfg.

epCfg.




Re: Isoc High Bandwidth EP using USBIsoSourceSink

Ken4242 posted on 09 May 2012 03:38 PM PST
Top Contributor
21 Forum Posts

I forgot to add that this is for HS and I will eventually use SS for this.  Below is the cleaned up part of the code.  If there is an example that exists I could use that as an example.  The only thing I see in the API docs or these examples is this isoPkts field but no other documentation on enabling High BW endpoints.

 

CyU3PMemSet ((uint8_t *)&epCfg, 0, sizeof (epCfg));

epCfg.enable = CyTrue;

epCfg.epType = CY_U3P_USB_EP_ISO;

epCfg.burstLen = (usbSpeed == CY_U3P_SUPER_SPEED) ? (CY_FX_EP_BURST_LENGTH) : 1;

epCfg.streams = 0;

epCfg.pcktSize = size;

epCfg.isoPkts = 2;



Re: Isoc High Bandwidth EP using USBIsoSourceSink

Ken4242 posted on 10 May 2012 10:20 AM PST
Top Contributor
21 Forum Posts

When I change just thi field, I get an Error code 77 from the  function CyU3PSetEpConfig.  Where can I get the error code "decoder ring" and is there any examples using Isoc High BW Eps?  Do I need to double my buffer size?  Any help from Cypress on this as there is almost no documentation on using this feature.

 

    CyU3PMemSet ((uint8_t *)&epCfg, 0, sizeof (epCfg));
    epCfg.enable = CyTrue;
    epCfg.epType = CY_U3P_USB_EP_ISO;
    epCfg.burstLen = (usbSpeed == CY_U3P_SUPER_SPEED) ? (CY_FX_EP_BURST_LENGTH) : 1;
    epCfg.streams = 0;
    epCfg.pcktSize = size;
    epCfg.isoPkts = 2;

    /* Producer endpoint configuration */
    apiRetStatus = CyU3PSetEpConfig(CY_FX_EP_PRODUCER, &epCfg);
    if (apiRetStatus != CY_U3P_SUCCESS)
    {
        CyU3PDebugPrint (4, "CyU3PSetEpConfig failed, Error code = %d\n", apiRetStatus);
        CyFxAppErrorHandler (apiRetStatus);
    }



Re: Isoc High Bandwidth EP using USBIsoSourceSink

Ken4242 posted on 10 May 2012 11:02 AM PST
Top Contributor
21 Forum Posts

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Note
Please note that a mult (isoPkts) setting of greater than 0 (multiple packets
or bursts in a micro-frame) is only supported for endpoints 3 and 7 in either
direction.

 

 

 

 

 



Re: Isoc High Bandwidth EP using USBIsoSourceSink

Ken4242 posted on 10 May 2012 11:04 AM PST
Top Contributor
21 Forum Posts

 

Note
Please note that a mult (isoPkts) setting of greater than 0 (multiple packets
or bursts in a micro-frame) is only supported for endpoints 3 and 7 in either
direction.

 

 

 

 

 



Re: Isoc High Bandwidth EP using USBIsoSourceSink

Ken4242 posted on 10 May 2012 11:06 AM PST
Top Contributor
21 Forum Posts

Sorry for the muliples here.  It was not showing my comments correctly.

 

Grepiing through all of the files I found the below statement which implies that I need to use EP3 or 7.
But when I change CY_FX_EP_PRODUCER to EP3 or EP7, I do not get any data from these EPs.

 

Note
Please note that a mult (isoPkts) setting of greater than 0 (multiple packets
or bursts in a micro-frame) is only supported for endpoints 3 and 7 in either
direction.


 



Re: Isoc High Bandwidth EP using USBIsoSourceSink

AssemblyRequired posted on 10 May 2012 01:12 PM PST
Top Contributor
37 Forum Posts

Ken -
 
The decoder ring is in cyu3error.h. I believe error 77 equates to CY_U3P_ERROR_INVALID_CONFIGURATION.

Three other changes needed to make this work come to mind:

* The wMaxPacketSize field of the endpoint descriptor needs to be updated to request as many transaction opportunities as your isoPkts value

* The 'size' field of the CyU3PDmaChannelConfig_t needs to be at least the product of the # of transaction opportunities and the maximum packet size (e.g., the max number of bytes transferrable per microframe).

* CY_FX_EP_PRODUCER_SOCKET will need to be redefined to CY_U3P_UIB_SOCKET_PROD_3

(Interdependent constants. Yuck.)

I would like to get this working myself to debug high-bandwidth issues I am seeing in our video application; maybe we can compare notes tomorrow.

-- Steve
 



Re: Isoc High Bandwidth EP using USBIsoSourceSink

AssemblyRequired posted on 11 May 2012 11:55 AM PST
Top Contributor
37 Forum Posts

It is working for me with those changes.  



Re: Isoc High Bandwidth EP using USBIsoSourceSink

Ken4242 posted on 07 Jun 2012 06:42 AM PST
Top Contributor
21 Forum Posts

Once I switched to this I was able to get multiple EPs running in High BW mode

 

Ken






ALL CONTENT AND MATERIALS ON THIS SITE ARE PROVIDED "AS IS". CYPRESS SEMICONDUCTOR AND ITS RESPECTIVE SUPPLIERS MAKE NO REPRESENTATIONS ABOUT THE SUITABILITY OF THESE MATERIALS FOR ANY PURPOSE AND DISCLAIM ALL WARRANTIES AND CONDITIONS WITH REGARD TO THESE MATERIALS, INCLUDING BUT NOT LIMITED TO, ALL IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT OF ANY THIRD PARTY INTELLECTUAL PROPERTY RIGHT. NO LICENSE, EITHER EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, IS GRANTED BY CYPRESS SEMICONDUCTOR. USE OF THE INFORMATION ON THIS SITE MAY REQUIRE A LICENSE FROM A THIRD PARTY, OR A LICENSE FROM CYPRESS SEMICONDUCTOR.

Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms and Conditions of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms and Conditions of this site. Cypress Semiconductor and its suppliers reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.