如何使用我自己的电路检测USB闪存驱动器上是否存在数据活动?

问题描述:

我目前正在为我的大学课程开展一个项目。我正在设计一个设备,它将成为计算机和USB闪存驱动器之间的中间接口,即数据从计算机 - >我的设备 - > USB驱动器。如何使用我自己的电路检测USB闪存驱动器上是否存在数据活动?

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

我已经在网上做了一些关于USB如何工作的研究,但我似乎无法找到这样做的好方法。我曾与一位大学的家教讲过话。显然这是“非常容易”做的,但我真的不知道如何。任何人都可以建议一些想法非常感谢。

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

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

如果没有分析USB协议的要求,您可以使用能够分析像uart,spi I2c等较慢总线的设备。您可以检查像Sparkfun这样的爱好制造商是否适用于此类跟踪设备。 祝你好运

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

仔细阅读USB规范(http://www.usb.org/developers/docs/),尤其是'协议层'部分。您可能会在'简而言之'一文中看到一些基本知识。
用示波器探索总线。
另外,您也可以使用http://desowin.org/usbpcap/http://freeusbanalyzer.com/等软件分析器来浏览总线上的数据。

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

当然,您的微控制器必须足够快,以保持USB 2.0总线的速度。低速设备(如键盘)的活动检测将更加简单,甚至可以使用arduino完成。

在这种情况下,最简单的方法是使用附加的柔和,可以登录USB协议以及微控制器,像USBlyzer(http://www.usblyzer.com/)或USB数据采集(http://www.eltima.com/products/usb-capture/

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