0

我是学生,目前正在为我的大学做一个项目。我正在尝试编写一个能够通过使用 TUSB3410(http://www.ti.com/product/tusb3410)及其 USB 将其与 C2500(http://www.ti. com/product/cc2500 ) 通过 UART 连接。USB转串口之类的东西。

我可以从 TUSB3140 中获取信息,例如其供应商 ID 或端点,因此我可以使用普通的 USB API。但是接收cc2500的信息比较麻烦。我不知道我应该使用哪些方法或哪个参数是正确的。因此,也许您知道 controlTransfer() 等方法的外观。

我希望你能帮我解决这个问题!

4

2 回答 2

4

恐怕答案并不那么简单。

根据链接的数据表和相关文档,TUSB3410 不是固定功能器件。它基本上是一侧的 USB 设备,另一侧的 UART,以及中间的 MCU 应用处理器。为了让该芯片做任何有用的事情,它必须加载一个固件应用程序来控制数据如何从一侧移动到另一侧。因此,您可以在固件中定义数据如何通过 USB 移动(中断传输、批量传输等),这将控制 Android 应用程序如何与其交互。

此外,该芯片似乎不支持烧录固件,它总是从 I2C EEPROM 或 USB 主机外部加载固件。如果您的设备设置上还没有 EEPROM,您可能会遇到困难,因为 Android USB API 并没有真正让您的应用程序在枚举过程中访问设备,这是固件需要的时候如果从主机下载,则发送。它还需要您检测您的设备两次(一次使用标准引导代码 VID/PID,一次在固件文件接管并且设备重新连接到总线后)。

如果您只是在寻找一个简单的嵌入式实现来将 UART、SPI 等数据输入到 Android 应用程序中,那么您最好使用 FTDI FT311 之类的东西,它实现了 Open Accessory 协议并附带库代码来帮助您从等式的两边开始:http: //www.ftdichip.com/Products/ICs/FT311D.html

编辑:根据您的评论

所以如果你的设备符合CDC USB Device Class,那么基本上有3个关注点:

  • 每个设备都有一个用于配置的“端点 0”,并且可以在 Android API 中使用该controlTransfer()方法进行访问。CDC 设备使用此端点来更改波特率、停止位等项目。
  • 像 VCP 这样的 CDC 设备有两个接口,一个用于通信,一个用于数据。数据接口(通常枚举为第二个)有两个批量端点(一进一出),通常在其中传输串行数据。bulkTransfer()您可以使用该方法或使用异步在这些端点上来回传输数据UsbRequest

作为起点,不妨看看这个开源项目的源代码,它使用主机 API 实现了 CDC 基础知识。您应该能够很好地了解如何从那里滚动您自己的驱动程序(特别是 CdcAcmSerialDriver):

http://code.google.com/p/usb-serial-for-android/

于 2013-02-20T02:24:20.387 回答
0

我想除了使用AOA协议的FT311D,你也可以考虑使用FT231X,通过FT231X,你可以使用在google search/google play中很容易找到的android超级终端的APK。这是通过OTG方法使用的。你也可以看看。

于 2013-05-05T10:53:43.423 回答