Android通过USB读取数据UART

时间:2013-02-14 13:58:03

标签: android

我是学生,目前正在为我的大学开展一个项目。我正在尝试编写一个能够通过使用TUSB3410(http://www.ti.com/product/tusb3410)及其USB将其连接到通过UART连接的C2500(http://www.ti.com/product/cc2500)来读取日期的应用程序。像USB到串口的东西。

我可以从TUSB3140获取有关其供应商ID或其端点的信息,因此我可以使用普通的USB API。但收到cc2500的信息相当棘手。我不知道应该使用哪种方法或哪些参数是正确的。所以也许你知道像controlTransfer()等这样的方法应该是什么样的。

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

2 个答案:

答案 0 :(得分: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设备类,那么基本上有三个兴趣点:

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

作为一个起点,或许可以看一下这个开源项目的来源,该项目使用主机API实现了CDC基础知识。您应该能够很好地了解如何从那里推出自己的驱动程序(特别是CdcAcmSerialDriver):

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

答案 1 :(得分:0)

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