3

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

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

我在网上做了一些关于 USB 工作原理的研究,但我似乎找不到这样做的好方法。我和大学的一位导师谈过。显然这“很容易”做到,但我真的不知道怎么做。任何人都可以提出一些想法吗?非常感谢。

4

3 回答 3

3

在这种情况下,最简单的方法是使用可以记录 USB 协议以及微控制器的附加软件,例如 USBlyzer ( http://www.usblyzer.com/ ) 或 USB 数据捕获 ( http://www.eltima.com ) /产品/USB捕获/

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

于 2017-01-18T09:48:59.520 回答
1

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

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

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

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

于 2015-10-16T07:40:30.223 回答
0

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

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

如果不需要分析 USB 协议,您可以拥有能够分析较慢总线的设备,例如 uart、spi I2c 等。您可以查看像 sparkfun 这样的爱好制造商的此类跟踪设备。祝你好运

于 2015-10-06T10:25:27.107 回答