SDAA062 September   2025 TMS320F28P559SJ-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
    1. 1.1 Intelligent Cabin and IVI System
    2. 1.2 USB Interface Application in IVI
    3. 1.3 TMS320F28P55x Introduction
  5. 2USB Composite Device Enumeration and Data Report
    1. 2.1 USB Composite Device Enumeration
      1. 2.1.1 Descriptor Structure
      2. 2.1.2 Descriptor Types
        1. 2.1.2.1 Device Descriptor
        2. 2.1.2.2 Configuration Descriptor
        3. 2.1.2.3 Interface Descriptor
        4. 2.1.2.4 Endpoint Descriptor
        5. 2.1.2.5 String Descriptor
    2. 2.2 USB Composite Device HID Data Report
      1. 2.2.1 Data Report Item
      2. 2.2.2 HID Report Descriptor Structure
        1. 2.2.2.1 Main Item
        2. 2.2.2.2 Global Item
        3. 2.2.2.3 Local Item
    3. 2.3 Example of Building a HID Report Descriptor
  6. 3Software Realization
    1. 3.1 APIs for USB Composite Device Initialization
      1. 3.1.1 USBStackModeSet
      2. 3.1.2 USBDCDCCompositeInit
      3. 3.1.3 USBDHIDCustomCompositeInit
      4. 3.1.4 USBDCompositeInit
    2. 3.2 APIs for USB Composite Device CDC Data Report
      1. 3.2.1 USBBufferSpaceAvailable
      2. 3.2.2 USBBufferWrite
      3. 3.2.3 USBBufferRead
      4. 3.2.4 USBDCDCTxHandler
      5. 3.2.5 USBDCDCRxHandler
    3. 3.3 APIs for USB Composite Device HID Data Report
      1. 3.3.1 USBDHIDCustomTouchEvent
      2. 3.3.2 USBDHIDCustomReportKey
    4. 3.4 APIs for USB Composite Device Simulation
      1. 3.4.1 MultTouchSimHandler
      2. 3.4.2 KeySimHandler
    5. 3.5 APIs for USB Device Operate States Query
      1. 3.5.1 USBDCDCControlHandler
      2. 3.5.2 CustomHandler
  7. 4System Test
    1. 4.1 Test Setup
    2. 4.2 USB SCI CDC Device Function Test
    3. 4.3 USB Touch Screen HID Device Function Test
    4. 4.4 USB Button HID Device Function Test
  8. 5Summary
  9. 6References
  10. 7Appendix

Device Descriptor

The device descriptor is the first descriptor queried by the host during enumeration. This is to communicate to the host what specification of USB the device complies with and how many possible configurations are available on the device. Upon successful processing of the device descriptor, the host reads all the configuration descriptors.

In the TI USB composite device project, the device descriptor structure is defined in usblib.h. The instance of the structure is defined in tCompositeInstance structure in usbdcomp.h called by the USBDCompositeInit function. The variable values are initialized by the BuildCompositeDescriptor function in usbcomp.c. The key elements of the device descriptor are shown in Table 2-1.

typedef struct
{
 uint8_t bLength;
 uint8_t bDescriptorType;
 uint16_t bcdUSB;
 uint8_t bDeviceClass;
 uint8_t bDeviceSubClass;
 uint8_t bDeviceProtocol;
 uint8_t bMaxPacketSize0;
 uint16_t idVendor;
 uint16_t idProduct;
 uint16_t bcdDevice;
 uint8_t iManufacturer;
 uint8_t iProduct;
 uint8_t iSerialNumber;
 uint8_t bNumConfigurations;
}
PACKED tDeviceDescriptor;
Table 2-1 Key Elements of a Device Descriptor
Key Elements Description
bcdUSB Informs the host of what version of USB the device supports
bDeviceClass

00 - The device class is defined in the Interface Descriptor

FF - the device class is Vendor class

any other number is the specification for the class of this device
idVendor 16-bit number assigned by USB.org to the manufacturer of the product
idProduct 16-bit product model ID assigned by the vendor to this product
bNumConfigurations How many different configurations are available for this device