array(25) { [3475672]=> int(3475672) [3475676]=> int(3475676) [3477086]=> int(3477086) [3480016]=> int(3480016) [3480030]=> int(3480030) [3480034]=> int(3480034) [3480040]=> int(3480040) [3480042]=> int(3480042) [3480155]=> int(3480155) [3480162]=> int(3480162) [3480164]=> int(3480164) [3480166]=> int(3480166) [3480175]=> int(3480175) [3480264]=> int(3480264) [3480268]=> int(3480268) [3480269]=> int(3480269) [3480270]=> int(3480270) [3480271]=> int(3480271) [3480273]=> int(3480273) [3480282]=> int(3480282) [3480283]=> int(3480283) [3480284]=> int(3480284) [3480289]=> int(3480289) [3480291]=> int(3480291) [3480378]=> int(3480378) } usb协议相关学习分享——接口描述符 - ST MCU

[应用相关] usb协议相关学习分享——接口描述符

[复制链接]
 楼主| Jacquetry 发表于 2023-11-24 20:00 | 显示全部楼层 |阅读模式
  1. struct _INTERFACE_DESCRIPTOR_STRUCT
  2. {
  3.     BYTE bLength;         
  4.     BYTE bDescriptorType;  
  5.     BYTE bInterfaceNumber;
  6.     BYTE bAlternateSetting;
  7.     BYTE bNumEndpoints;   
  8.     BYTE bInterfaceClass;  
  9.     BYTE bInterfaceSubClass;
  10.     BYTE bInterfaceProtocol;
  11.     BYTE iInterface;      
  12. }INTERFACE_DESCRIPTOR_STRUCT
bLength : 描述符大小.固定为0x09.
bDescriptorType : 接口描述符类型.固定为0x04.
bInterfaceNumber: 接口的编号
bAlternateSetting : 备用的接口描述符标号.用于在同一个接口中的多个描述符中进行切换。同一个接口可以有多个接口描述符,用bAlternateSetting来识别
bNumEndpoint : 使用的端点数目.端点0除外.
bInterfaceClass : 类型代码.
bInterfaceSubClass : 子类型代码.
bInterfaceProtocol : 协议代码.
iInterface : 字符串描述符的索引,如果没有字符串描述符的话,这个必须设置为0.

tfqi 发表于 2023-12-28 16:53 | 显示全部楼层
请问接口描述符的作用是什么呢
kxsi 发表于 2023-12-28 18:11 | 显示全部楼层
这些描述符即便不使用也不能删除是吗
coshi 发表于 2023-12-28 19:23 | 显示全部楼层
接口描述符不能单独返回给USB主机,主机会请求获得配置描述符集合
qcliu 发表于 2023-12-28 20:41 | 显示全部楼层
USB描述符有设备描述符、标准配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符
zljiu 发表于 2023-12-28 21:51 | 显示全部楼层
如果一个配置有多个接口的话,那么每个接口的编号都有一个独立的编号,编号从0开始递增
您需要登录后才可以回帖 登录 | 注册

本版积分规则

109

主题

1764

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部