Isochronous endpoint descriptor service interval choice

usbusb device

Here's the isochronous endpoint descriptor:

0x07,                           /* Descriptor size */
CY_U3P_USB_ENDPNT_DESCR,        /* Endpoint descriptor type */
CONSUMER_ENDPOINT,              /* Endpoint address and description */
CY_U3P_USB_EP_ISO,              /* Iso endpoint type */
0x00,0x04,                      /* Max packet size = 1024 bytes */
0x04,                           /* Servicing interval for data transfers: 1ms*/

The last argument is the servicing interval. Currently, it is 0x04 meaning that the polling period is 8, that is, every eights bus interval. I know I can set such interval with values 0x01,0x02,0x03,0x04 meaning every microFrame, every second, every fourth, and every eights microframe respectively. Would it be possible to have a 0x8 interval to have polling on every 16th microframe (every second frame)?

Best Answer

Value of 5 gives you 2^(5-1)=2^4=16.Period for High-speed will be 16*0.125 = 2ms. So this specifies desirable interval between every 16th micro-frame.

To get a period you need to multiply the resulting value to 0.125ms or to 1ms, depending on the speed of your USB-bus.