chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

LPCXpressoとUSB ShieldでADKコンパチボードを作ってみる、、難航中

android端末と接続できるadkのリファレンスボードは高いので、勉強を兼ねて、ARMが載ったLPCXpressoとUSB Shieldの組み合わせでADKコンパチを作ってみようとしています。が、、案の定難航中で、LPCXpressoのSPI経由でUSB Shieldとは繋がっているようなのだが、どうもUSB Shieldに載っているMAX3421のステータスレジスタが正しく読めないような印象。。
いきなりADKのファーム一式をARMにポーティングするのではなく、地道に、Max3421e.cppあたりから1関数ずつテストして積み重ねるべきなのでしょう。。いろいろトラブルまみれだし、このアプローチが正しいのかどうか怪しいけど、趣味だから許されるむちゃくちゃ流はそれはそれで面白い。。。

LPCXpresso + USB Shieldで正しく接続できるようになったら、LPC1769に内蔵されたUSBコントローラに乗り換えたいけど、、そこまで行けるかどうか。。

■追記 (110720)
むちゃくちゃ流でやってる、ADKコンパチの開発ですが、LPCXpressoとMAX3421EはSPIで正しく接続できたようで、シーケンスとしてDeviceDescriptorをAndroid端末(自分の場合、Galaxy S2)まで取ってくる所まで進んだ。わからないのは、、USBを繋ぐと、GalaxyS2側で勝手なSAMSUNGのアプリ(Samsung Kies)が走る件と、GalaxyS2が返すデバイスIDはidVender 0x4e8だが、USB Host側は0x18d1を期待している。。これはなぜ一致しないのか。。SAMSUNGのデバイスだから0x4e8なのか?? それとも、、端末側で、対応のアプリを走らせたら、USB Host側の期待する0x18d1を返す??
左の画面キャプチャはデバッグ中の箇所。。縮小されてしまってほとんど見えませんね。すみません。
AndroidAccessoryクラスのisConnectedメソッドまで来ました。。ここで、isAccessoryDevice(devDesc)の判断で、isVenderが異なっておりfalseになるのでした。。

今回のADKコンパチ開発ではまった点を記録

  • AVRのintは16bitだが、ARMは32bitであった。構造体をchar * で渡して、サブルーチンでべた書きしている所では、構造体の要素の位置がずれた。。ソースはint -> short に変更
  • USB Host Shieldの回路図(PDF)ではD8 Resetと書かれているが、Sparkfunのボードでは、ResetはD7のようであった。これは自分が引っ張ってきた回路図が間違っているから?
  • USB Host Shieldへの電源供給は LPCXpressoの5V(USBから供給)を使い、USB Host ShieldのVINに5Vを供給した。が、、この電圧では、5Vの3端子レギュレータが正しく動作せず、USBのVBUS電圧が4V程度に低下していた。このため、Galaxyを繋いでもGalaxy側ではUSB接続された事を認知できず。。対策として、USB Host Shieldの電源は7V以上を別途用意して供給した。これにより、GalaxyのUSBは正常に反応。


■追記 (110720b)
いろんな記事を見ていると、USBのIDは追加すること、、等とあり、まぁ足せば良いのかという軽い解釈で、isAccessoryDeviceメソッドに対して、Vender:0x4e8 , Products:0x6860を追加。再度実行すると、途中でパケット解釈エラーが出たのだが、一応、USB Host側は、USB_STATE_RUNNINGにはなった。左の写真は、テスト中の状態。DoCoMo(Galaxy)とUSB HostShieldと、LPCXpressoです。Galaxyでは、USBを繋ぐと、Samsung Kiesアプリが走っています。残る課題は、、Android側(Galaxy側)で勝手に走る、Samsung Kiesアプリをどうにかして、Android側の本来アプリを起動させることか。。とりあえず、、今日はここまで。。

■ご参考URL
max3421Eのデータシート
http://japan.maxim-ic.com/datasheet/index.mvp/id/3639
アプリケーションノート
http://japan.maxim-ic.com/datasheet/index.mvp/id/3639/t/do#%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%8E%E3%83%BC%E3%83%88