2013-02-14 176 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方法使用的。你也可以看看。