恐怕答案不那麼簡單。
根據鏈接的數據表和相關文檔,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