13206|30

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

可以同时在一个USB实现虚拟串口和移动硬盘吗 [复制链接]

我使用STM32 CPU,在一个USB端口上可以分别实现虚拟串口和移动硬盘的功能。
请问可以合并2个功能到一起吗,即插上USB线之后,主机同时发现一个虚拟串口和一个移动硬盘。

  谢谢!
此帖出自stm32/stm8论坛

最新回复

楼主,你有例程吗?给我一个吧!我也在学习这个,无奈我是个菜鸟,苦苦专研半个多月一点进度都没有!  详情 回复 发表于 2014-10-12 19:09
点赞 关注
 

回复
举报

52

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 可以做混合设备吧,偶也在疑惑中。
此帖出自stm32/stm8论坛
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 可以,很简单
此帖出自stm32/stm8论坛
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 
请教3楼如何完成这个项目,还需要自己写Windows下的驱动吗?
谢谢!
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 


CDC需要驱动(只是一个inf文件),MSC不需要。
http://blog.ednchina.com/SimonQian/244655/message.aspx
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 这样一来就可以做免驱动的虚拟串口了,其实INF放到U盘里面了。
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 有没有参考的源码啊?
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 ST有CDC例程,也有MSC例程,XX在一起就可以了。。。。。。
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 
改一下descriptor,枚举一个具有两个interface的USB复合设备。

网上能找到复合设备的descriptor的例子吧
此帖出自stm32/stm8论坛
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 不知道 是 不 是  通过 不同  的  端点 来 实现  多个设备的
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

11
 
下面是ST提供的 Mass 和 CDC 的设备描述符,我做了合并,不知是否正确?

/***************** Mass **************************/
const uint8_t MASS_DeviceDescriptor[MASS_SIZ_DEVICE_DESC] =
  {
    0x12,   /* bLength  */
    0x01,   /* bDescriptorType */
    0x00,   /* bcdUSB, version 2.00 */
    0x02,
    0x00,   /* bDeviceClass : each interface define the device class */
    0x00,   /* bDeviceSubClass */
    0x00,   /* bDeviceProtocol */
    0x40,   /* bMaxPacketSize0 0x40 = 64 */
    0x83,   /* idVendor     (0483) */
    0x04,
    0x20,   /* idProduct */
    0x57,
    0x00,   /* bcdDevice 2.00*/
    0x02,
    1,      /* index of string Manufacturer  */
    2,      /* index of string descriptor of product*/
    3,            
    0x01    /*bNumConfigurations */
  };


/***************** VCom Port **************************/
const uint8_t Virtual_Com_Port_DeviceDescriptor[] =
  {
    0x12,   /* bLength */
    0x01,   /* bDescriptorType */
    0x00,
    0x02,   /* bcdUSB = 2.00 */
    0x02,   /* bDeviceClass: CDC */
    0x00,   /* bDeviceSubClass */
    0x00,   /* bDeviceProtocol */
    0x40,   /* bMaxPacketSize0 */
    0x83,
    0x04,   /* idVendor = 0x0483 */
    0x40,
    0x57,   /* idProduct = 0x5740 */
    0x00,
    0x02,   /* bcdDevice = 2.00 */
    1,      /* Index of string descriptor describing manufacturer */
    2,      /* Index of string descriptor describing product */
    3,      /* Index of string descriptor describing the device's serial number */
    0x01    /* bNumConfigurations */
  };

/***************** VCom + Mass **************************/
const uint8_t Virtual_Com_Port_DeviceDescriptor[] =
  {
    0x12,   /* bLength */
    0x01,   /* bDescriptorType */
    0x00,
    0x02,   /* bcdUSB = 2.00 */
    0x00,   /* bDeviceClass */
    0x00,   /* bDeviceSubClass */
    0x00,   /* bDeviceProtocol */
    0x40,   /* bMaxPacketSize0 */
    0x83,
    0x04,   /* idVendor = 0x0483 */
    0x40,
    0x57,   /* idProduct = 0x5740 */
    0x00,
    0x02,   /* bcdDevice = 2.00 */
    1,      /* Index of string descriptor describing manufacturer */
    2,      /* Index of string descriptor describing product */
    3,      /* Index of string descriptor describing the device's serial number */
    0x01    /* bNumConfigurations */
  };

问题:
1. bDeviceClass,bDeviceSubClass,bDeviceProtocol 应该如何设置? 在Simon21ic提供
的例子里面,它们分别如下设置,请教一下这样设置的含义?
        0xEF,        // bDeviceClass
        0x02,        // bDeviceSubClass
        0x01,        // bDeviceProtocol
   有的文章说应该设为0x00,0x00,0x00,其具体内容在Interface Descriptor中再表述;

2. idVendor=0x0483,idProduct=0x5740 是会导致加载 stmcdc.inf 驱动吗?
3. 我分别测试了一下ST和IAR提供的Virtual Com 的例子,发现数据传输最大为 50-60 KBytes/s
   (W2K下)不知是否正常?会不会是在Win下面只能如此了?


  以上问题比较菜,请Simon21ic和vigia帮忙看一下。
此帖出自stm32/stm8论坛
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

12
 
1, DeviceDescriptor里不要设置设备的类,因为你要做复合设备,这个设备带有两个interface,每个interface分别实现一个USB类。
所以用:
0x00,   /* bDeviceClass : each interface define the device class */
0x00,   /* bDeviceSubClass */
0x00,   /* bDeviceProtocol */

重点要改的是Configuration Descriptor
你可以看看注释,把interface的数目改成2个,然后先说明一个VCD的interface descriptor,紧跟是这个interface所使用的端点descriptor,然后再说明一个MASS的interface descriptor,紧跟这个interface的端点descriptor。两个interface要使用不同的端点号来完成。

2, PID和VID要用你自己定义的

3, 这个VCD的速度我还真没有测过,我自己改了一个,挺好使的,等上班了我测测速度。
此帖出自stm32/stm8论坛
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(初级)

13
 


1. 要看你实现的方法
2. 设备驱动安装的时候可以选择的,MSC的驱动会自动安装。
3. 偶米测试过,偶这里自己实现的VCOM,在921600的速度下,短接RXD和TXD,速度大概是50+KB/s。另外,据说ST的代码很垃圾。
东西是要你自己搞定的,再提供一些资料吧:
http://blog.ednchina.com/SimonQian/192173/message.aspx
http://blog.ednchina.com/SimonQian/191568/message.aspx
此帖出自stm32/stm8论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

14
 


昨天实验的结果: 使用ST的virtual Com代码为基础, 试图一点一点的修改,首先仅修改了Virtual_Com_Port_DeviceDescriptor 和 Virtual_Com_Port_ConfigDescriptor 部分,是按照 Simon21ic 的模式修改的(没有添加Mass部分的任何代码),结果是:
     在XP下,可以自动添加 Virtual Com; 在W2K下, PC机立即重启! 有关代码见附件 读了 Simon21ic 提供的网页,很受启发,但是还是有些疑问:
1. 使用composite device 模式做, Mass 需要1个接口,CDC需要2个接口, 一定需要使用 IAD 表述吗?
2. 使用IAD 表述可在Win2K 下运行吗?
3. 如果Mass 需要1个接口,CDC需要1个接口, 那么还需要IAD 表述吗?
4. 我看了一段NXP提供的双串口的实现代码,其中使用了两个interface,每个interface有3个EndP, 其中没有使用IAD 表述,Why ?
5. 如果一个应用只有一个Interface 和 2个EndP 那么,可以将 EndP定义到 4,5 而 1,2,3EndP空闲吗? 我想改造ST 的Mass 代码,将其中的 EndP 改为 1Tx,1Rx 可以,但是改到 4Tx,4Rx则不行?

USB.rar (2.35 KB)

此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

15
 


CDC可以用一种只有一个interface(2个Endpoint)的方式实现,XP下可以识别。请仔细看网页。
如果每个设备只有一个接口的话,可以简单实用组合设备的方式,你可以自己测试。
CDC设备的通信类接口的Union Functional Descriptor里本来就已经指定的2个接口的接口号。所以不排除可以直接使用组合设备的方式实现。当然,这个就需要你自己测试了。
你把ST的Mass代码都看一下就知道了。
W2K的话,我这里没有条件测试了。
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

16
 
Thank Simon21ic's help

今天的试验情况如下:

1. 按照Simon21ic的提示使用单个接口(3 ENDP)构造CDC VCOM 是可以的, 还没有试验单个接口(2 ENDP)的模式。
2. 以ST 的Mass Sample 为基础,逐步添加CDC VCOM 的代码,可以看到 Mass盘但是VCOM没有出现。
   端点安排如下:

   Interface 1
      Mass  (EndP1Tx,EndP1Rx)
   Interface 2
      VCom  (EndP2 Intrrupt, EndP3Rx, EndP3Tx)
   以上的两个Interface 单独试验都是Ok 的。

3. 运行的环境:万利的3210E板, IAR 5.3, Win2K
4. 关键想知道如何安排运行断点来发现问题?

下面是描述:

//MASS_SIZ_DEVICE_DESC=81

const uint8_t MASS_VCOM_DeviceDescriptor[MASS_SIZ_DEVICE_DESC] =  {
    0x12,   // bLength
    0x01,   // bDescriptorType
    0x00,   // bcdUSB, version 2.00
    0x02,
    0x00,   // bDeviceClass : each interface define the device class
    0x00,   // bDeviceSubClass
    0x00,   // bDeviceProtocol
    0x40,   // bMaxPacketSize0 0x40 = 64
    0x83,   // idVendor     (0483)
    0x04,
    0x20,   // idProduct
    0x57,
    0x00,   // bcdDevice 2.00*/
    0x02,
    1,      // index of string Manufacturer
    2,      // index of string descriptor of product*/
    3,      //
    0x01    //bNumConfigurations
};

const uint8_t MASS_ConfigDescriptor[MASS_SIZ_CONFIG_DESC] =  {

    0x09,   // bLength: Configuation Descriptor size
    0x02,   // bDescriptorType: Configuration
    MASS_SIZ_CONFIG_DESC,
    0x00,
    0x02,   // bNumInterfaces: 2 interface
    0x01,   // bConfigurationValue:
    0x00,   // iConfiguration:
    0xC0,   // bmAttributes:
    0x32,   // MaxPower 100 mA

    /******************** Descriptor of Mass Storage interface ********************/
    0x09,   // bLength: Interface Descriptor size
    0x04,   // bDescriptorType:
    0x00,   // bInterfaceNumber: Number of Interface
    0x00,   // bAlternateSetting: Alternate setting
    0x02,   // bNumEndpoints*/
    0x08,   // bInterfaceClass: MASS STORAGE Class
    0x06,   // bInterfaceSubClass : SCSI transparent*/
    0x50,   // nInterfaceProtocol
    4,      // iInterface:

    0x07,   // Endpoint descriptor length = 7
    0x05,   // Endpoint descriptor type
    0x81,   // Endpoint address (IN, address 1)
    0x02,   // Bulk endpoint type
    0x40,   // Maximum packet size (64 bytes)
    0x00,
    0x00,   // Polling interval in milliseconds

    0x07,   // Endpoint descriptor length = 7
    0x05,   // Endpoint descriptor type
    0x01,   // Endpoint address (OUT, address 2)
    0x02,   // Bulk endpoint type
    0x40,   // Maximum packet size (64 bytes)
    0x00,
    0x00,   // Polling interval in milliseconds
      
            //Interface Descriptor
    0x09,   // bLength: Interface Descriptor size
    0x04,   // bDescriptorType: Interface
    0x01,   // bInterfaceNumber: Number of Interface
    0x00,   // bAlternateSetting: Alternate setting
    0x03,   // bNumEndpoints: 3 endpoints used
    0x02,   // bInterfaceClass: Communication Interface Class
    0x02,   // bInterfaceSubClass: Abstract Control Model
    0x01,   // bInterfaceProtocol: Common AT commands
    0x00,   // iInterface:
    //Header Functional Descriptor
    0x05,   // bLength: Endpoint Descriptor size
    0x24,   // bDescriptorType: CS_INTERFACE
    0x00,   // bDescriptorSubtype: Header Func Desc
    0x10,   // bcdCDC: spec release number
    0x01,
    //Call Managment Functional Descriptor
    0x05,   // bFunctionLength
    0x24,   // bDescriptorType: CS_INTERFACE
    0x01,   // bDescriptorSubtype: Call Management Func Desc
    0x00,   // bmCapabilities: D0+D1
    0x01,   // bDataInterface: 1
    //ACM Functional Descriptor
    0x04,   // bFunctionLength
    0x24,   // bDescriptorType: CS_INTERFACE
    0x02,   // bDescriptorSubtype: Abstract Control Management desc
    0x02,   // bmCapabilities
    //Union Functional Descriptor
    0x05,   // bFunctionLength
    0x24,   // bDescriptorType: CS_INTERFACE
    0x06,   // bDescriptorSubtype: Union func desc
    0x00,   // bMasterInterface: Communication class interface
    0x01,   // bSlaveInterface0: Data Class Interface
    //Endpoint 2 Descriptor
    0x07,   // bLength: Endpoint Descriptor size
    0x05,    // bDescriptorType: Endpoint
    0x82,   // bEndpointAddress: (IN2)
    0x03,   // bmAttributes: Interrupt
    0x08,   // wMaxPacketSize:
    0x00,
    0xFF,   // bInterval:
    //Endpoint 3 Descriptor
    0x07,   // bLength: Endpoint Descriptor size
    0x05,   // bDescriptorType: Endpoint
    0x03,   // bEndpointAddress: (OUT3)
    0x02,   // bmAttributes: Bulk
    0x40,   // wMaxPacketSize:
    0x00,
    0x00,   // bInterval: ignore for Bulk transfer
    //Endpoint 3 Descriptor
    0x07,   // bLength: Endpoint Descriptor size
    0x05,   // bDescriptorType: Endpoint
    0x83,   // bEndpointAddress: (IN3)  
    0x02,   // bmAttributes: Bulk
    0x40,   // wMaxPacketSize:
    0x00,
    0x00    // bInterval      
};
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

17
 
设备的PID或VID要是新的,否则电脑会加载旧的驱动
USB枚举过程不好加断点。加了断点后,电脑如果太长时间收不到完整的枚举设备,可能会reset USB,重新枚举。打印试试
此帖出自stm32/stm8论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

18
 
根据楼上飞鸟的提示,作了相关的实验:
1. 原来ST Mass Demo代码使用的是 VID/PID=0483/5720
   原来ST VCom Demo代码使用的是 VID/PID=0483/5740
   stmcdc.inf 文件中间的 VID/PID=0483/5740
   以上的两个Demo都可以正常运行;
2. 合并以后的复合设备的Device 描述如果按照  VID/PID=0483/5720 设定,那么 WinXP只是正常出现Mass盘,
   如果按照  VID/PID=0483/5740 设定,那么WinXP只是正常出现VCom,以上都不会出现新的硬件提示。
   
   如果按照  VID/PID=0483/5730 设定,那么WinXP正常出现Mass盘,并且出现一个新的硬件提示:"STM32 Mass Storage",
   找了一个 ST的安装文件 stcdc.inf 将其中原有的 VID/PID=0483/5740改为 VID/PID=0483/5730 然后令WinXP去安装,得到提示是:“由于向导无法找到需要的软件因此无法安装该硬件”
   设备管理器中出现下列项目:
     磁盘驱动器下:正常的Mass设备;
     其他设备下:  带黄色问号的 "STM32 Mass Storage"
     通用串行总线控制器下:USB Composite Device 和 USB Mass Storage Device
   感觉到 VCom 已经出现,但是不知如何安装驱动?
   原来的ST的VCom 驱动是通过一个VCPDriver_V1.1_Setup.exe 来安装的。
   寻求各位的帮助,谢谢!

ABC.GIF (29.49 KB)

ABC.GIF

此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

19
 
终于基本解决了单USB下Mass+VCom的实现,经简单测试,SD卡文件可以读出,VCom可以双向通信。但是还存在下列问题:

1. 在XP下枚举OK, 在Win2K下 VCom带有问号。
2. CDC下面定义了3个ENDP,但其中有一个作为Comm的ENDP没有实际使用,那么这个ENDP可不可以不占用收发缓存呢?这样可以节省一些USB缓存.
3. 当将CDC协议的双Interface 改为1个Interface, CDC协议描述部分,需要做哪些修改?
4. 当将CDC协议单Interface bInterfaceNumber=1的时候, CDC协议描述部分,需要做哪些修改?
5. ST的例子中USB缓冲分配没有从0开始,Why ? 见下面的2行。
  #define ENDP0_RXADDR        (0x18)
  #define ENDP0_TXADDR        (0x58)
此帖出自stm32/stm8论坛

点评

楼主能共享下源码吗? 谢谢啦!  详情 回复 发表于 2013-1-10 17:26
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

20
 
我做了个HID和CDC的项目,给你参考一下
const uint8_t CDCHID_ConfigDescriptor[CDCHID_SIZ_CONFIG_DESC] =
  {
    0x09, /* bLength: Configuation Descriptor size */
    USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
    CDCHID_SIZ_CONFIG_DESC,
    /* wTotalLength: Bytes returned */
    0x00,
    0x03,         /* bNumInterfaces: 1 interface */
    0x01,         /* bConfigurationValue: Configuration value */
    0x00,         /* iConfiguration: Index of string descriptor describing
                                 the configuration*/
    0xC0,         /* bmAttributes: Bus powered */
    0x32,         /* MaxPower 100 mA: this current is used for detecting Vbus */
                /* 09 */

                //USB CDC descriptor
                /*USB Interface Association Descriptor */
    0x08,
    USB_INTERFACE_ASSOCIATION_TYPE,
    0x00,// EPs used in CDC/ACM Function.
    0x02,
    0x02,// Interface class code for a CDC communication class interface.
    0x02,// Interface subclass code for an Abstract Control Model interface descriptor.
    0x00,// implemenent any particular protocol.
    0x00,// No string descriptor for this interface
                /* 17 */
               
    /*Interface Descriptor*/
    0x09,   /* bLength: Interface Descriptor size */
    USB_INTERFACE_DESCRIPTOR_TYPE,  /* bDescriptorType: Interface */
    /* Interface descriptor type */
    0x00,   /* bInterfaceNumber: Number of Interface */
    0x00,   /* bAlternateSetting: Alternate setting */
    0x01,   /* bNumEndpoints: One endpoints used */
    0x02,   /* bInterfaceClass: Communication Interface Class */
    0x02,   /* bInterfaceSubClass: Abstract Control Model */
    0x00,   /* bInterfaceProtocol: Common AT commands */
    0x00,   /* iInterface: */
    /* 26 */
               
    /*Header Functional Descriptor*/
    0x05,   /* bLength: Endpoint Descriptor size */
    0x24,   /* bDescriptorType: CS_INTERFACE */
    0x00,   /* bDescriptorSubtype: Header Func Desc */
    0x10,   /* bcdCDC: spec release number */
    0x01,
    /* 31 */
               
    /*Call Managment Functional Descriptor*/
    0x05,   /* bFunctionLength */
    0x24,   /* bDescriptorType: CS_INTERFACE */
    0x01,   /* bDescriptorSubtype: Call Management Func Desc */
    0x00,   /* bmCapabilities: D0+D1 */
    0x01,   /* bDataInterface: 1 */
    /* 36 */
               
    /*ACM Functional Descriptor*/
    0x04,   /* bFunctionLength */
    0x24,   /* bDescriptorType: CS_INTERFACE */
    0x02,   /* bDescriptorSubtype: Abstract Control Management desc */
    0x02,   /* bmCapabilities */
    /* 40 */
               
    /*Union Functional Descriptor*/
    0x05,   /* bFunctionLength */
    0x24,   /* bDescriptorType: CS_INTERFACE */
    0x06,   /* bDescriptorSubtype: Union func desc */
    0x00,   /* bMasterInterface: Communication class interface */
    0x01,   /* bSlaveInterface0: Data Class Interface */
    /* 45 */
               
    /*Endpoint 2 Descriptor*/
    0x07,   /* bLength: Endpoint Descriptor size */
    USB_ENDPOINT_DESCRIPTOR_TYPE,   /* bDescriptorType: Endpoint */
    0x82,   /* bEndpointAddress: (IN2) */
    0x03,   /* bmAttributes: Interrupt */
    VIRTUAL_COM_PORT_INT_SIZE,      /* wMaxPacketSize: */
    0x00,
    0xFF,   /* bInterval: */
    /* 52 */
               
    /*Data class interface descriptor*/
    0x09,   /* bLength: Endpoint Descriptor size */
    USB_INTERFACE_DESCRIPTOR_TYPE,  /* bDescriptorType: */
    0x01,   /* bInterfaceNumber: Number of Interface */
    0x00,   /* bAlternateSetting: Alternate setting */
    0x02,   /* bNumEndpoints: Two endpoints used */
    0x0A,   /* bInterfaceClass: CDC */
    0x00,   /* bInterfaceSubClass: */
    0x00,   /* bInterfaceProtocol: */
    0x00,   /* iInterface: */
    /* 61 */
               
    /*Endpoint 3 Descriptor*/
    0x07,   /* bLength: Endpoint Descriptor size */
    USB_ENDPOINT_DESCRIPTOR_TYPE,   /* bDescriptorType: Endpoint */
    0x03,   /* bEndpointAddress: (OUT3) */
    0x02,   /* bmAttributes: Bulk */
    VIRTUAL_COM_PORT_DATA_SIZE,             /* wMaxPacketSize: */
    0x00,
    0x00,   /* bInterval: ignore for Bulk transfer */
    /* 68 */
               
    /*Endpoint 1 Descriptor*/
    0x07,   /* bLength: Endpoint Descriptor size */
    USB_ENDPOINT_DESCRIPTOR_TYPE,   /* bDescriptorType: Endpoint */
    0x84,   /* bEndpointAddress: (IN1) */
    0x02,   /* bmAttributes: Bulk */
    VIRTUAL_COM_PORT_DATA_SIZE,             /* wMaxPacketSize: */
    0x00,
    0x00,    /* bInterval */
    /* 75 */
    //end of CDC
                /************** Descriptor of CDC HID interface ****************/  
                0x09,         /* bLength: Interface Descriptor size */
    USB_INTERFACE_DESCRIPTOR_TYPE,/* bDescriptorType: Interface descriptor type */
    0x02,         /* bInterfaceNumber: Number of Interface */
    0x00,         /* bAlternateSetting: Alternate setting */
    0x02,         /* bNumEndpoints */
    0x03,         /* bInterfaceClass: HID */
    0x00,         /* bInterfaceSubClass : 1=BOOT, 0=no boot */
    0x00,         /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
    0,            /* iInterface: Index of string descriptor */
    /* 84 */

                /******************** Descriptor of CDC HID HID ********************/
    0x09,         /* bLength: HID Descriptor size */
    HID_DESCRIPTOR_TYPE, /* bDescriptorType: HID */
    0x10,         /* bcdHID: HID Class Spec release number */
    0x01,
    0x00,         /* bCountryCode: Hardware target country */
    0x01,         /* bNumDescriptors: Number of HID class descriptors to follow */
    0x22,         /* bDescriptorType */
    CDCHID_SIZ_REPORT_DESC,/* wItemLength: Total length of Report descriptor */
    0x00,
    /* 93 */

                /******************** Descriptor of CDC HID endpoints ******************/
    0x07,          /* bLength: Endpoint Descriptor size */
    USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: */

    0x81,          /* bEndpointAddress: Endpoint Address (IN) */
    0x03,          /* bmAttributes: Interrupt endpoint */
    0x40,          /* wMaxPacketSize: 2 Bytes max */
    0x00,
    0x20,          /* bInterval: Polling Interval (32 ms) */
    /* 100 */
           
    0x07,        /* bLength: Endpoint Descriptor size */
    USB_ENDPOINT_DESCRIPTOR_TYPE,        /* bDescriptorType: */
                                                    /*        Endpoint descriptor type */
    0x01,        /* bEndpointAddress: */
                            /*        Endpoint Address (OUT) */
    0x03,        /* bmAttributes: Interrupt endpoint */
    0x08,        /* wMaxPacketSize: 2 Bytes max  */
    0x00,
    0x20,        /* bInterval: Polling Interval (20 ms) */
    /* 107 */
  }
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表