- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I'm working with an FX3 and I would like to combine BULK and ISOCHRONOUS endpoints (a pair of bulk endpoints and a pair of Isochronous endpoints). I've tried to modify the descriptor but I don't get the USB recognised. Also added code for a proper initialisation. If I use only the BULK interface it works just fine and I can see the device normally listed and its descriptors.
My question is: Can I mix in the same interface BULK and ISOCHRONOUS endpoints?
Kind regards
Solved! Go to Solution.
- Tags:
- usb3.0 descr
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I tried with 3,16. It did work on my side.
The problem may be due to the bandwidth allocation from the host for isochronous endpoints.
Please refer to section 4.4.8.2 from the USB 3.2/USB 3.1 spec.
Try increasing the servicing interval in the isochronous end point descriptors and check for enumeration of iso endpoints.
Thanks,
Yatheesh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Yes, you can add both bulk and isochronous endpoints in your firmware. Make sure that the total length field in the configuration descriptors is updated properly.
Please attach your descriptor file for review,
Thanks,
Yatheesh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Yatheesh,
Please find attached the descriptor file. In the main file I initialise the DMA channels, as per example, but the device does not get recognised by the OS.
CY_FX_EP_PRODUCER_1/CY_FX_EP_CONSUMER_1 are mapped at 0x01 and 0x81
CY_FX_EP_PRODUCER_2/CY_FX_EP_CONSUMER_2 are mapped at 0x02 and 0x82
Please let me know if you find anything fundamentally wrong.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Please try the attached descriptors file, i have modified it a bit. It works fine.
The wMaxPacketSize field in the Endpoint descriptors for isochronous endpoint should be set to 1024 if the bMaxBurst in the endpoint companion descriptors is set to a non zero value.
Thanks,
Yatheesh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Yatheesh,
Your file works indeed. Thanks. The only difference I can find is the value for CY_FX_ISO_PKTS and CY_FX_ISO_BURST. In my original code, I set those values to 3 and 8 respectively (taken directly from the ISOC example). With those in place it doesn't work. What can be the issue?
(The image shows my system with a max burst length of 8, instead of 16)
Thanks again
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I tried with 3,16. It did work on my side.
The problem may be due to the bandwidth allocation from the host for isochronous endpoints.
Please refer to section 4.4.8.2 from the USB 3.2/USB 3.1 spec.
Try increasing the servicing interval in the isochronous end point descriptors and check for enumeration of iso endpoints.
Thanks,
Yatheesh