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

时间:2015-10-06 10:03:33

标签: microcontroller usb-drive usbserial usb-flash-drive

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

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

我已经在网上做了一些关于USB如何工作的研究,但我似乎无法找到一个很好的方法来做到这一点。我和大学的一位导师说过。显然这很简单"要做,但我不知道如何。有谁能提出一些想法?非常感谢。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

你的导师不太正确。
即使没有数据传输,USB总线也始终有活动。

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

我认为,足以用外部微控制器捕获总线上的所有数据包,测量其持续时间并对浪费的SOF数据包和有价值的数据包进行排序。

当然,您的微控制器必须足够快,以跟上USB 2.0总线的步伐。检测低速设备(如键盘)的活动将会非常简单,即使使用arduino也可以完成。

答案 2 :(得分:0)

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

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

如果不需要分析USB协议,您可以使用分析较慢总线的设备,如uart,spi I2c等。您可以检查像sparkfun这样的跟踪设备等业余爱好制造商。 祝你好运