
首先可以肯定的回答:有上限。 上限的具体瓶颈需要看设备的链接状态。 USB3.0接口有PCI和PLB两种模式,刚出3.0那会基本都是PCI的,现在新板子大部分都是PLB的,PCI的是一个USB3.0卡接到PCI-E插槽上(过去还有部分主板是接到内置的PCI-E插槽上,外面看不出来),PLB是做到芯片组里,PCI和PLB有些地方还称为非原生支持和原生支持。 整个USB传输通道应该是下面这样: USB设备-USB接口(1-N)-USBROOTHUB-USB控制器-PLB/PCIE总线-CPU/内存/DMA控制器 其中的对应关系是: PLB/PCIE总线下可能有多个USB3.0控制器,一个控制器下有一个或者多个RootHub(通常都是1个),一个RootHub下有多个USB口,一个口一般都对应主机外面的口,部分情况下一个USB口对应1个以上的物理接口。 下面的图是我电脑的XHCI控制器的链接图: 速度限制上看,PLB/PCIE总线带宽有限制,每个控制器,每个RootHub也有带宽限制,RootHub下的每个逻辑USB口也有速度限制,对应物理接口也有速度限制。 理论上说,每个RootHub的速度上限是USB3.0总线的上限,通常是5Gbps,折合字节带宽大概不到600M,那么下面的接口越多,每个接口能分到的速度越少,我这个图里有8个USB接口,那么如果挂上8个设备,每个速度就只有75M。 所以,如果你把所有的口都接上设备,那么肯定达不到最大速度。 下载一个USBView,查看一下自己PC上3.0口有多少个,再拿理论带宽除一下,就能算出结果。 另外,这只是理论值,实际情况可能会更糟糕,因为3.0对信号要求很高,接线越多,电压越不稳定,同时分走的电流越多(每个控制器能承受的最大电流是有限的),一旦干扰达到一定程度,USB3.0会自动降速来保持传输稳定,降速的后果就是3.0变成了2.0 |
顶一下 |
最全USB HID开发资料,悉心整理一个月,亲自测试
实战经验 | 选择USBX模块生成USB CDC ACM无PD的项目
STM32 USB HID键盘例程
刘氓兔的杂谈【001】-片上USB 高速PHY
【经验分享】在进行 USB CDC 类开发时,无法发送 64整数倍的数据
【源码】STLINK-V3MINI 高速USB仿真器,成功改刷【高速CMSIS-DAP】
在线直播|无需编写任何代码即可在STM32上实现USB-C Power Delivery
STM32 USB CDC 虚拟多串口
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...
USB Audio设计与实现