恐怕答案不那么简单。
根据链接的数据表和相关文档,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/
非常感谢您的回答。 实际上,该设备已经完成固件和所有其他组件已经在那里工作。我刚刚介绍了使用TUSB3410和CC2500的这款“USB棒”的组件。 在Windows下,它使用CDC驱动程序,工作正常。我的问题是,我想为Android编写兼容的驱动程序。那么,我该怎么做? – Patrick 2013-02-20 09:42:45
这是非常重要的信息,谢谢你的分享。我编辑了答案。 – Devunwired 2013-02-20 22:33:38