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.