如何用自己的电路检测U盘是否有数据activity?

How can I detect if there is data activity on a USB flash drive with my own circuit?

我目前正在为我的大学课程做一个项目。我正在设计一个设备,它将成为计算机和 USB 闪存驱动器之间的中间接口,即数据来自计算机->我的设备->USB 驱动器。

我想要此设备的功能之一是能够检测是否有任何数据 activity 正在进行,并将此信息发送到微控制器。我不需要知道数据本身的任何信息,只需要知道是否有数据在传输。

我在网上做了一些关于 USB 工作原理的研究,但我似乎找不到这样做的好方法。我和大学的导师谈过。显然这是 "very easy" 要做的,但我真的不知道该怎么做。谁能提出一些想法?非常感谢。

您正在尝试制作像 catc 这样的协议分析器 http://teledynelecroy.com/protocolanalyzer/protocolstandard.aspx?standardid=4 这些设备就像任何网络的中间人。

您需要您的设备同时充当 USB 主机(主)和 USB 设备(从)。此外,在将数据从一个端口复制到另一个端口时,您需要制作一份数据副本以供分析。 USB 设备具有严格的时序要求并以高数据速率运行。因此,您的设备可能需要大量的处理能力。这也使此类分析仪变得昂贵。

如果没有分析 USB 协议的要求,你可以有设备来分析较慢的总线,如 uart、spi I2c etc.You 可以检查像 sparkfun 这样的业余爱好者制造商的此类跟踪设备。 祝你工作顺利

你的导师不太对。
USB 总线总是有 activity,即使没有数据传输。

仔细阅读 USB 规范 (http://www.usb.org/developers/docs/),尤其是 'Protocol layer' 部分。您可以在 'USB in a nutshell' 文章中阅读一些基础知识。
用示波器探索总线。
您也可以使用 http://desowin.org/usbpcap/ or http://freeusbanalyzer.com/ 等软件分析器来探索总线上的数据。

我认为,用外部微控制器捕获总线上的所有数据包,测量它们的持续时间并分类废弃的 SOF 数据包和有价值的数据包就足够了。

当然,您的微控制器必须足够快,才能跟上 USB 2.0 总线的步伐。 activity 低速设备(如键盘)的检测会简单得多,甚至可以使用 arduino 完成。

在这种情况下,最简单的方法是使用额外的软件来记录 USB 协议以及微控制器,例如 USBlyzer (http://www.usblyzer.com/) or USB data capture (http://www.eltima.com/products/usb-capture/)

您需要将闪存驱动器插入插入计算机 USB 端口的设备。然后运行USB数据分析软件,找到USB口。就这样!之后,您可以监控和分析微控制器和应用程序之间的所有数据。此外,您可以保存和导出捕获的数据