2013-02-14 180 views
0

我是学生,目前正在为我的大学开展一个项目。我正在尝试使用TUSB3410(http://www.ti.com/product/tusb3410)和它的USB将其与通过UART连接的C2500(http://www.ti.com/product/cc2500)连接起来,以便能够读取日期。像USB到串口的东西。Android通过USB和UART读取数据

我可以像TUSB3140的供应商ID或其终端一样获取TUSB3140的信息,这样我就可以使用普通的USB API。但收到cc2500的信息相当棘手。我不知道我应该使用哪种方法或哪个参数是正确的。所以,也许你有一个想法,如controlTransfer()等方法应该如何。

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

回答

4

恐怕答案不那么简单。

根据链接的数据表和相关文档,TUSB3410不是固定功能设备。它基本上是一端是USB设备,另一端是一个UART,中间是一个MCU应用处理器。为了让芯片做任何有用的事情,它必须加载一个固件应用程序来管理数据如何从一侧移动到另一侧。因此you可以在固件中定义数据如何通过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设备类,那么基本上有兴趣三点:

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

作为一个起点,也许看看这个开源项目的来源,它使用主机API实现CDC基础。你应该能够得到怎样卷从那里(特别是CdcAcmSerialDriver)自己的驱动程序是一个好主意:

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

+0

非常感谢您的回答。 实际上,该设备已经完成固件和所有其他组件已经在那里工作。我刚刚介绍了使用TUSB3410和CC2500的这款“USB棒”的组件。 在Windows下,它使用CDC驱动程序,工作正常。我的问题是,我想为Android编写兼容的驱动程序。那么,我该怎么做? – Patrick 2013-02-20 09:42:45

+0

这是非常重要的信息,谢谢你的分享。我编辑了答案。 – Devunwired 2013-02-20 22:33:38

0

我想除了它是使用AOA协议FT311D,你也可以考虑使用FT231X,通过FT231X,您可以使用Android超级终端的APK,您可以在Google搜索/谷歌播放中轻松找到该APK。这是通过OTG方法使用的。你也可以看看。