首先可以肯定的回答:有上限。 上限的具体瓶颈需要看设备的链接状态。 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 / F8 o9 ~- a# }' p |
顶一下 |
最全USB HID开发资料,悉心整理一个月,亲自测试
USB Audio设计与实现
【MCU实战经验】+STM32F107的USB使用
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...
STM32F4-DISC 实现USB主机(U盘)和USB设备(虚拟串口)自动切换
STM32 USB-HID通信移植步骤STM32 USB HID键盘例程
【经验分享】在进行 USB CDC 类开发时,无法发送 64整数倍的数据
如何让CDC类USB设备批量接收64字节以上数据
用STM32F4实现的USB摄像头UVC,配合上位机可识别车牌
STM32 USB CDC 虚拟多串口