Android通过USB读取数据&;通用异步收发器

Android通过USB读取数据&;通用异步收发器,android,Android,我是一名学生,目前正在为我的大学做一个项目。我正在尝试编写一个能够读取日期的应用程序,使用TUSB3410()及其USB将其与通过UART连接的C2500()相连接。类似USB到串行的东西 我可以从TUSB3140获取信息,如其供应商id或其端点,这样我就可以使用普通的USB API。但接收cc2500的信息相当棘手。我不知道应该使用哪种方法或哪种参数是正确的。因此,您可能知道controlTransfer()等方法的外观 我希望你能帮我解决这个问题 恐怕答案没有那么简单 根据链接的数据表和相关

我是一名学生,目前正在为我的大学做一个项目。我正在尝试编写一个能够读取日期的应用程序,使用TUSB3410()及其USB将其与通过UART连接的C2500()相连接。类似USB到串行的东西

我可以从TUSB3140获取信息,如其供应商id或其端点,这样我就可以使用普通的USB API。但接收cc2500的信息相当棘手。我不知道应该使用哪种方法或哪种参数是正确的。因此,您可能知道controlTransfer()等方法的外观


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

恐怕答案没有那么简单

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

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

如果您只是在寻找一个简单的嵌入式实现来将UART、SPI等数据导入Android应用程序,那么您最好使用类似FTDI FT311的产品,该产品实现开放式附件协议,并附带库代码,让您从两方面着手:

编辑:根据您的评论

因此,如果您的设备符合CDC USB设备类别,那么基本上有三个关注点:

  • 每个设备都有一个用于配置的“端点0”,可以在Android API中使用
    controlTransfer()
    方法访问该端点。CDC设备使用此端点更改波特率、停止位等项
  • CDC设备(如VCP)有两个接口,一个用于通信,一个用于数据。数据接口(通常是第二次枚举)有两个批量端点(一进一出),串行数据通常在其中传输。您可以使用
    bulkTransfer()
    方法或使用异步
    UsbRequest
    在这些端点上来回传输数据
作为一个起点,或许可以看看这个开源项目的源代码,它使用宿主API实现CDC基础。您应该能够很好地了解如何从那里启动自己的驱动程序(特别是CdcAcmSerialDriver):


恐怕答案并没有那么简单

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

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

如果您只是在寻找一个简单的嵌入式实现来将UART、SPI等数据导入Android应用程序,那么您最好使用类似FTDI FT311的产品,该产品实现开放式附件协议,并附带库代码,让您从两方面着手:

编辑:根据您的评论

因此,如果您的设备符合CDC USB设备类别,那么基本上有三个关注点:

  • 每个设备都有一个用于配置的“端点0”,可以在Android API中使用
    controlTransfer()
    方法访问该端点。CDC设备使用此端点更改波特率、停止位等项
  • CDC设备(如VCP)有两个接口,一个用于通信,一个用于数据。数据接口(通常是第二次枚举)有两个批量端点(一进一出),串行数据通常在其中传输。您可以使用
    bulkTransfer()
    方法或使用异步
    UsbRequest
    在这些端点上来回传输数据
作为一个起点,或许可以看看这个开源项目的源代码,它使用宿主API实现CDC基础。您应该能够很好地了解如何从那里启动自己的驱动程序(特别是CdcAcmSerialDriver):