我可以通过 USB 端口将数据序列(不是文件)从 Android 设备传输到 FPGA 板吗?android 是否支持使用某些 API 顺序进行此类传输?
2 回答
根据您的 Android 硬件,最多可以使用三种不同的方式来执行此操作。从最广泛支持到最少,它们是 ADB 协议、USB 附件模式和 USB 主机模式。ADB 协议实际上是为调试 Android 设备而设计的,但 Android 支持在其上建立 TCP 连接隧道,并且诸如microbridge之类的各种项目都使用它在 Android 应用程序和外部硬件之间传输数据。其他人已经链接了另外两个的文档。
您实际可以使用哪些取决于您使用的是哪种 FPGA 板以及它具有哪种 USB 硬件。(我暂时假设您使用的是现成的板。)有些板只有 USB-to-JTAG 接口,通常是专有的和无证的,在这种情况下 USB Host 是唯一的方法与它交互,您将需要在 Android 端使用一些相当丑陋的代码。其他的,如 OsciPrime 和 Ztex 的板,使用 Cypress FX2 微控制器,它再次需要 USB 主机支持,但允许您在两者之间定义自己的 USB 协议。少数拥有飞利浦 ISP1362 芯片并支持 USB 主机模式,在这种情况下,您可以使用 ADB 或开放附件协议 - 您甚至可以在其上启动 ucLinux 并使用 libusb 连接到您的手机。
如果您正在开发自己的硬件,这显然取决于个人品味、性能要求、BOM 成本和开发时间之间的权衡,以及您需要能够支持的 Android 设备范围有多大。例如,USB 收发器的 TUSB110x 系列非常便宜,并且可以支持 USB 主机模式,因此理论上您可以与现有的所有 Android 硬件进行接口,但它们需要在 FPGA 方面进行大量工作。
(由于新用户的两个超链接限制,此答案已剔除一些超链接。抱歉。)
这取决于您的 Android 设备。自 API 级别 12 以来,Android 开发人员已经支持 USB 主机和 USB 附件。据我所知,USB 附件有点时髦,因为它旨在仅识别 USB 标准“Android 开放附件协议”的 Android 专有扩展,
特别是,您会发现有关他们的osciprime 开源示波器的博客文章,其中包括与 XiLinx CPLD 的硬件接口,这至少接近于您正在尝试做的事情。