Embedded 动态更改USB配置/接口;由设备启动

Embedded 动态更改USB配置/接口;由设备启动,embedded,usb,midi,Embedded,Usb,Midi,我正在开发一个USB MIDI设备,它可以作为无线系统的接收器。该设备将通过无线电模块与发射机进行双向通信,发射机是在USB主机模式下运行的独立硬件 接收器将插入PC。插入发射器的MIDI设备需要在PC上显示为MIDI端口。由于变送器支持USB集线器,因此可以插入多个设备 有两个要求我不是百分之百地满足: 1.)PC端上的MIDI端口名称需要反映插入发射机的USB设备提供的名称,以便清楚该端口用于哪个设备 2.)当设备从发射机上插拔时,PC上的MIDI端口集需要更新。这是问题的关键:有没有办法更

我正在开发一个USB MIDI设备,它可以作为无线系统的接收器。该设备将通过无线电模块与发射机进行双向通信,发射机是在USB主机模式下运行的独立硬件

接收器将插入PC。插入发射器的MIDI设备需要在PC上显示为MIDI端口。由于变送器支持USB集线器,因此可以插入多个设备

有两个要求我不是百分之百地满足:

1.)PC端上的MIDI端口名称需要反映插入发射机的USB设备提供的名称,以便清楚该端口用于哪个设备

2.)当设备从发射机上插拔时,PC上的MIDI端口集需要更新。这是问题的关键:有没有办法更新设备启动的可用USB接口/MIDI插孔

执行此操作的蛮力方法是,在接收到发送器发出的更改消息时,完全重置接收器(重置时,接收器将轮询发送器当前设备,并在主机PC重新枚举时提供更新的信息)

发射机/接收机硬件均基于PIC32MZ MCU(无RTO)。我擅长编写USB代码来让主机/接收器端执行任何操作。问题是,在USB协议级别,如何做到这一点


另外,需要明确的是:发射机/接收机通信将是一个特殊协议,接收机将自行设置其所有USB配置数据;其目的不是试图通过无线链路无缝枚举设备。

要在PC上显示端口名,只需将USB描述符字符串复制到发射机上即可


USB设备更改其配置的唯一方法是重置自身,就像它已被拔出一样,并让主机重新枚举它。因此,防止多个设备相互干扰的唯一方法是在接收器上安装多个(虚拟)USB设备。如果您的硬件不支持此功能,则无法避免重置。

那么,它将是一种带有无线下游端口的USB集线器?我做对了吗?发射机将是一个嵌入式USB主机,带有嵌入式或外部集线器。系统的无线部分将是一个独立于USB的独立协议。是的,我在进一步研究后得出了这个结论。我看到的是,集线器可以将其状态更新到主机以获得新端口状态,主机上的USB堆栈可以从设备请求更新的配置,但设备无法主动告知主机,在没有USB重置的情况下,其配置已更新。