131 lines
5.7 KiB
C
131 lines
5.7 KiB
C
/********************************** (C) COPYRIGHT *******************************
|
|
* File Name : usb_desc.c
|
|
* Author : WCH
|
|
* Version : V1.0.0
|
|
* Date : 2022/08/20
|
|
* Description : usb device descriptor,configuration descriptor,
|
|
* string descriptors and other descriptors.
|
|
*********************************************************************************
|
|
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
|
|
* Attention: This software (modified or not) and binary are used for
|
|
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
|
|
*******************************************************************************/
|
|
|
|
#include "usb_desc.h"
|
|
|
|
/* Device Descriptor */
|
|
const uint8_t MyDevDescr[] =
|
|
{
|
|
0x12, // bLength
|
|
0x01, // bDescriptorType (Device)
|
|
0x10, 0x01, // bcdUSB 1.10
|
|
0x00, // bDeviceClass (Use class information in the Interface Descriptors)
|
|
0x00, // bDeviceSubClass
|
|
0x00, // bDeviceProtocol
|
|
DEF_USBD_UEP0_SIZE, // bMaxPacketSize0
|
|
(uint8_t)DEF_USB_VID, (uint8_t)(DEF_USB_VID >> 8), // idVendor 0x1A86
|
|
(uint8_t)DEF_USB_PID, (uint8_t)(DEF_USB_PID >> 8), // idProduct 0xFE07
|
|
0x00, DEF_IC_PRG_VER, // bcdDevice 1.00
|
|
0x01, // iManufacturer (String Index)
|
|
0x02, // iProduct (String Index)
|
|
0x03, // iSerialNumber (String Index)
|
|
0x01, // bNumConfigurations 1
|
|
};
|
|
|
|
/* Configuration Descriptor */
|
|
const uint8_t MyCfgDescr[] =
|
|
{
|
|
/* Configuration Descriptor */
|
|
0x09, // bLength
|
|
0x02, // bDescriptorType
|
|
0x29, 0x00, // wTotalLength
|
|
0x01, // bNumInterfaces
|
|
0x01, // bConfigurationValue
|
|
0x03, // iConfiguration (String Index)
|
|
0x80, // bmAttributes Remote Wakeup
|
|
0x23, // bMaxPower 70mA
|
|
|
|
/* Interface Descriptor */
|
|
0x09, // bLength
|
|
0x04, // bDescriptorType (Interface)
|
|
0x00, // bInterfaceNumber 0
|
|
0x00, // bAlternateSetting
|
|
0x02, // bNumEndpoints 2
|
|
0x03, // bInterfaceClass
|
|
0x00, // bInterfaceSubClass
|
|
0x00, // bInterfaceProtocol
|
|
0x00, // iInterface (String Index)
|
|
|
|
/* HID Descriptor */
|
|
0x09, // bLength
|
|
0x21, // bDescriptorType
|
|
0x11, 0x01, // bcdHID
|
|
0x00, // bCountryCode
|
|
0x01, // bNumDescriptors
|
|
0x22, // bDescriptorType
|
|
DEF_USBD_REPORT_DESC_LEN & 0xFF, DEF_USBD_REPORT_DESC_LEN >> 8, // wDescriptorLength
|
|
|
|
/* Endpoint Descriptor */
|
|
0x07, // bLength
|
|
0x05, // bDescriptorType
|
|
0x01, // bEndpointAddress: OUT Endpoint 1
|
|
0x03, // bmAttributes
|
|
0x40, 0x00, // wMaxPacketSize
|
|
0x01, // bInterval: 1mS
|
|
|
|
/* Endpoint Descriptor */
|
|
0x07, // bLength
|
|
0x05, // bDescriptorType
|
|
0x82, // bEndpointAddress: IN Endpoint 2
|
|
0x03, // bmAttributes
|
|
0x40, 0x00, // wMaxPacketSize
|
|
0x01, // bInterval: 1mS
|
|
};
|
|
|
|
/* HID Report Descriptor */
|
|
const uint8_t MyHIDReportDesc[ ] =
|
|
{
|
|
0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00)
|
|
0x09, 0x01, // Usage (0x01)
|
|
0xA1, 0x01, // Collection (Application)
|
|
0x09, 0x02, // Usage (0x02)
|
|
0x26, 0xFF, 0x00, // Logical Maximum (255)
|
|
0x75, 0x08, // Report Size (8)
|
|
0x15, 0x00, // Logical Minimum (0)
|
|
0x95, 0x40, // Report Count (64)
|
|
0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
|
|
0x09, 0x02, // Usage (0x02)
|
|
0x15, 0x00, // Logical Minimum (0)
|
|
0x26, 0xFF, 0x00, // Logical Maximum (255)
|
|
0x75, 0x08, // Report Size (8)
|
|
0x95, 0x40, // Report Count (64)
|
|
0x91, 0x06, // Output (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
|
|
0xC0, // End Collection
|
|
};
|
|
|
|
/* Language Descriptor */
|
|
const uint8_t MyLangDescr[] =
|
|
{
|
|
0x04, 0x03, 0x09, 0x04
|
|
};
|
|
|
|
/* Manufacturer Descriptor */
|
|
const uint8_t MyManuInfo[] =
|
|
{
|
|
0x0E, 0x03, 'w', 0, 'c', 0, 'h', 0, '.', 0, 'c', 0, 'n', 0
|
|
};
|
|
|
|
/* Product Information */
|
|
const uint8_t MyProdInfo[] =
|
|
{
|
|
0x12, 0x03, 'C', 0, 'H', 0, '3', 0, '2', 0, 'V', 0, '2', 0, '0', 0, 'x', 0
|
|
};
|
|
|
|
/* Serial Number Information */
|
|
const uint8_t MySerNumInfo[] =
|
|
{
|
|
0x16, 0x03, '0', 0, '1', 0, '2', 0, '3', 0, '4', 0, '5', 0
|
|
, '6', 0, '7', 0, '8', 0, '9', 0
|
|
};
|
|
|