English
Language : 

AN295 Datasheet, PDF (13/18 Pages) Silicon Laboratories – USB AUDIO CLASS TUTORIAL
AN295
4.1.12. Isochronous Endpoint Descriptor
The next descriptor defines the isochronous endpoint for the Tone Generator. The firmware reads as follows:
0x09,
0x05,
0x83,
0x05,
0x0002,
0x01,
0x00,
0x00
// bLength (9)
// bDescriptorType (ENDPOINT)
// bEndpointAddress (EP3 in)
// bmAttributes (asynchronous)
// wMaxPacketSize (512)
// bInterval (1 millisecond)
// bRefresh (0)
// bSynchAddress (no synchronization)
0x05,
// bDescriptorType (ENDPOINT)
This value is the standard descriptor type for an endpoint descriptor.
0x83,
// bEndpointAddress (EP3 in)
This field tells the host that endpoint three is configured to be an IN endpoint.
0x05,
// bmAttributes (asynchronous)
This field sets the endpoint to be asynchronous and isochronous. Isochronous endpoints can operate in three
different modes: asynchronous, where the stream uses a clock independent from the USB clock source;
synchronous, where the stream’s clock source is linked to the USB’s clock, such as through the use of USB
frames; and adaptive, where the stream’s clock source varies according to the buffer requirements of the stream.
0x0002,
// wMaxPacketSize (512)
This two-byte field tells the host that the maximum packet size is 0x0200, or 512 bytes.
0x01,
// bInterval (1 millisecond)
This field tells the host that the isochronous endpoint requires one packet per 1 millisecond USB frame.
0x00,
// bRefresh (0)
0x00
// bSynchAddress (no synchronization)
These two bytes are not used by this example system.
0x83,
// bEndpointAddress (EP3 in)
0x05,
// bmAttributes (asynchronous)
These two bytes set Endpoint 3 to be asynchronous, isochronous, and input. The endpoint is set to asynchronous
because the Tone Generator outputs samples independently of a USB-driven clock source.
0x0002,
// wMaxPacketSize (512)
0x01,
// bInterval (1 millisecond)
These two bytes show the bandwidth requirements for the endpoint. In this case, the endpoint requires enough
data bandwidth to transmit up to 512 bytes every 1 millisecond.
0x00,
// bRefresh (0)
0x00
// bSynchAddress (no synchronization)
These two bytes are only used when the endpoint provides synchronization data for the system. Since this
endpoint is asynchronous, these bytes must be set to ‘0x00’.
4.1.13. Isochronous Endpoint Audio Class Descriptor
The Descriptor following the standard Endpoint Descriptor is the class-specific Endpoint Descriptor. The firmware
defines this Descriptor as follows:
0x07,
0x25,
0x01,
// bLength (7)
// bDescriptorType (CS_ENDPOINT)
// bDescriptorSubtype (EP_GENERAL)
Rev. 0.1
13