Change endpoints from bulk to isochronous type

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
MaMa_4520856
Level 4
Level 4
25 replies posted 25 sign-ins 10 replies posted

Hello,

I have been following steps as RashiV_61 mention in my last discussion (https://community.cypress.com/message/227908?et=watches.email.thread#227908 )

and when i change the endpoint type from "CY_U3P_USB_EP_BULK" to "CY_U3P_USB_EP_ISO" i got error massage after programming board i got error from windows (unknown device (Invalid Configuration Descriptor))

I use SyncADMux project from GPIF Desginder and as per firmware I use is AN65974.

I attached project file (file that has been changed are cyfxslfifousbdscr.c - to change descriptors and cyfxslfifosync.c - after changing this file (the first file was left as it was in example) I did not encounter this error)

1 Solution
JayakrishnaT_76
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hello,

This error as mentioned in your response occurs when the configuration descriptor is invalid (or some mistakes are made in cyfxslfifousbdscr.c  file). Please refer to the USB 3.0 specification which can be found in the following link:

https://www.usb3.com/whitepapers/USB%203%200%20(11132008)-final.pdf

You need to modify the Endpoint descriptors and endpoint companion descriptors accordingly for Isochronous endpoints by referring from section 9.6.6 of the above document. Please make the modifications and let us know if you still face the error.

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna

View solution in original post

0 Likes
12 Replies
JayakrishnaT_76
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hello,

This error as mentioned in your response occurs when the configuration descriptor is invalid (or some mistakes are made in cyfxslfifousbdscr.c  file). Please refer to the USB 3.0 specification which can be found in the following link:

https://www.usb3.com/whitepapers/USB%203%200%20(11132008)-final.pdf

You need to modify the Endpoint descriptors and endpoint companion descriptors accordingly for Isochronous endpoints by referring from section 9.6.6 of the above document. Please make the modifications and let us know if you still face the error.

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes

Hello,

That's works but for some reason when I try to send data using USB Control Center i got massage Zero-length data transfer completed (I am trying to send text "ABCD" which is 4 bytes lengh)

Regards,

Mateusz

0 Likes

Hello,

According to my understanding, your enumeration issue is solved. Please correct me if Iam wrong.

Regarding your question, please share a snapshot of the control center when you see this behaviour so that I can understand the problem better.

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes

Hello,

there is screenshoot you asked

pastedImage_0.png

the the enumeration issue is solved

0 Likes
lock attach
Attachments are accessible only for community members.

Hello,

I tested this at my end and found that the data transfer was successful. The snapshot of the same is given below:

pastedImage_0.png

Please try using the following firmware. This is the project that you have shared in your first response. I have made the edits to enumerate it with isochronous endpoints only.

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes

Hi,

could you tell me what was the issue and its same when I try to send data IN

Regards,

Mateusz

0 Likes

Hello,

Please let me know what was the value that you set for servicing interval field of endpoints in he descriptors. The spec allows this value to be set in between 1 and 16. I set it to the minimum value that is 1. Please let me know if the OUT endpoint is working fine now?

Please let me know what is the observation when you are trying to do an IN transfer. You can also share a snapshot of the control center application when you are performing IN transfer.

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes
lock attach
Attachments are accessible only for community members.

Hi,

I set it to 1, I'll share with you file where I was changing it

pastedImage_0.png

0 Likes

Hello,

I understood that there is a DMA channel between P Port and the USB Socket associated with the endpoint 0x81. Please let me know if you are getting PROD_EVENTS for this channel. PROD_EVENTS are obtained when a producer socket fills a DMA buffer associated with a channel. This can be checked by using the API CyU3PDeviceReset(CyFalse);. Please use this API inside the if block that checks for CY_U3P_DMA_CB_PROD_EVENT in the function CyFxSlFifoPtoUDmaCallback(). If PROD_EVENTS are received, the device will re-enumerate as Bootloader Device. Otherwise it will remain as StreamerExample Device itself. Please try this and let me know if you are receiving PROD_EVENTS.

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes

Hello,

after editing function (as shown in screen below) it stays as streamer example

pastedImage_0.png

As per DMA channels There are two DMA channel created in the default firmware PIB > USB (write to FX3) and  USB >PIB (read from FX3)

0 Likes

Hello,

This means that FX3 is not receiving any buffers from the external master. Please let me know what is the source of data to PIB of FX3? Is it an FPGA? We need to evaluate the interface between the external master and GPIF II block of FX3 to understand why no buffers are received by FX3.

Best Regards,

Jayakrishna

Best Regards,
Jayakrishna
0 Likes

The source of data is FPGA (connected via EEPROM)

0 Likes