主机通过发送一个Set_Address请求来分配一个唯一的地址给设备。设备读取这个请求,返回一个确认,并保存新的地址。从此开始所有通信都使用这个新地址。 例:当主机收到正确的前16字节描述符后,会给设备分配一个地址,我的PC分配的地址为:0x03(这个要看你的机子当时的USB接口设备数目而定) Set_Address 请求所发送的数...
c = usb_choose_configuration(udev); 2. 调用usb_set_configuration接口枚举和申请注册usb接口设备。 err = usb_set_configuration(udev, c); 当接口添加到设备驱动模型中后,设备驱动模型核心再去为接口设备在usb总线上匹配和绑定接口驱动。 3.1.2 USB HUB驱动 usb的hub驱动在内核中的定义如下: static struct ...
至此,USB枚举过程就完成了。初始设置步骤:就是一个由SET事务构成的传输 可选数据步骤:就是一个由IN或OUT事务构成的传输,这个步骤是可选的,要看初始设置步骤有没有要求读/写数据(由SET事务的数据包阶段发送的标准请求命令决定)。 状态信息步骤:这个步骤就是要获取状态信息,由IN或OUT事务构成的传输,但是要注意这里...
__u8 bConfigurationValue; /* Set_Configuration 命令需要的参数值 */ __u8 iConfiguration; /* 描述该配置的字符串的索引值 */ __u8 bmAttributes; __u8 bMaxPower; } __attribute__ ((packed)); #define USB_DT_CONFIG_SIZE 9 10.2.3 接口描述符 接口是逻辑上的设备, 一个 USB 设备可以有多个接...
USBD_SelectConfigUrbAllocateAndBuild WdfUsbInterfaceSelectSetting 如何为 USB 设备选择配置。 如何在 USB 接口中选择备用设置。 UMDF: 不支持配置选择 IWDFUsbInterface::SelectSettingUsbInterfaceSetting.SelectSettingAsync 如何选择 USB 接口设置WinUsb_SetCurrentAlternateSetting ...
在USB的枚举阶段,会根据USB所处的状态调用usb_gadget_set_state()去设置USB设备的状态。 比如说在USB设备的枚举阶段,在composite_setup()函数中USB设备接收到了USB Host发过来的USB_REQ_SET_CONFIGURATION命令后调用set_config()设置相应的配置,这之后就会调用usb_gadget_set_state()去设置为USB_STATE_CONFIGURED状态...
int libusb_get_configuration (libusb_device_handle *dev_handle, int *config) 确定当前活动配置的 bConfigurationValue。 int libusb_set_configuration (libusb_device_handle *dev_handle, int configuration) 设置设备的活动配置。这在支持多个配置的USB设备中会用到。
/* set device connect */ usbd_connect(udev); udev->dev.cur_status = (uint8_t)USBD_DEFAULT; } 配置USB中断函数如下。 C void usb_intr_config(void) { nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2); #ifdef USE_USBHS0 nvic_irq_enable((uint8_t)USBHS0_IRQn, 3U, 0U); ...
SET_CONFIGURATION:设置配置。 请参阅 USB 规范中的 9.4.7 节。 有关详细信息,请参阅如何选择 USB 设备的配置。默认情况下,KMDF 选择默认配置以及每个接口中的第一个备用设置。 客户端驱动程序可以调用WdfUsbTargetDeviceSelectConfigType方法并将WdfUsbTargetDeviceSelectConfigTypeUrb指定为请求选项,以这种方式更改默...