V-USB (AVR-USB)の最近のブログ記事

先日、突然avr-usbの本家サイトが閉鎖してしまいました。
どうやら「AVR-USB」という名称がAtmel登録の商標に引っかかるとのこと。
新しい名前にして復活します、との予告があったので楽しみにしていました。

そして今日、復活しました。
その名も「V-USB」です。Virtual USBの略らしい。
本家サイト:http://www.obdev.at/products/vusb/index.html

・・・ヴァーチャル?なんかしっくり来ないな~と最初は思っていましたが、
virtualの意味を再確認して納得。
英英辞典「virtual」alc英和辞典「virtual」
つい2番の意味で考えたからしっくり来なかったんですね。このV-USBのvirtualは1番の意味ですね。なるほど~。たしかにピッタリ。
英和辞典だといまいちピンと来ないですが、英英辞典だとよく分かります。

というわけで、avr-usbあらため「V-USB」誕生を素直に喜びたいと思います。ぱちぱち。
このブログでも、V-USBを使ったプロジェクトを色々考えていくつもりです。
でも、まずはMP3プレーヤー作ってしまわねば…

(2013/12/02 写真・添付データ復活)

MP3プレイヤーの操作部には、PSoCのCapsenseを使うつもりでいます。Capsense部は基板を分けてPSoCとタッチパッドのみのパターンにしておき、メインコントローラとはI2Cで通信することにしてあります。プレイヤーに関してはまだ時間がかかるので後日レポートするとして、今日はそのI2Cテスト用にUSB-I2Cブリッジを製作したので紹介します。

USB-I2Cブリッジとは要するに、USB経由でパソコンと繋ぎ、PCからI2C機器とやりとりするためのアダプタです。手持ちの部品で何とかならないかなと思っていたらありました。

・i2c-tiny-usbプロジェクト (http://www.harbaum.org/till/i2c_tiny_usb/)
前に作ったHIDaspxも利用している、AVR-USBを用いたI2Cブリッジです。ATtiny45でUSB-I2Cブリッジを作ってしまおうというものです。すばらしいですね。

ただ欠点が。上記プロジェクトのハードウェアはクロック外付けのため、ピン数の都合上 RESET# ピン(Pin1)をI/Oとして使っちゃってます。それでファームのプログラムにHVSP (高電圧シリアルプログラミング)が必要になってしまい、ライタとしてSTK500とかAVRDRAGONとかがいるんです。どちらも持ってないので困った困った。ところが今は内部RCクロックを使ってAVR-USBを動かしてしまう例があるのです。それが EasyLogger (http://www.obdev.at/products/avrusb/easylogger.html) です。

で、組み合わせてみたのが今回作った内蔵オシレータタイプUSB-I2Cブリッジというわけです。
tiny45_intosc.sch.png usbi2c-20090401.zip
上のzipには、回路図/ボード図PDF/Eagleデータ/ファームウェアソース&バイナリ/テスト用コンソール&バイナリが入っています。オープンソース・オープンハードウェアプロジェクトですが、Eagleデータは商用利用への転用を禁止します。

回路は非常に単純な構成となりました。i2c-tiny-usbの回路からクロックを外し、I2Cの出力ピンを変更した程度です。

SANY0580.JPG SANY0584.JPG

USBのコネクタが逆なのは、作り始めてからピンの順番(1→4)を逆で設計していたことに気がついたからです^^; 手持ちで68Ωが無かったので75Ωにしたり、結構アバウトです。なにより、使ったマイコンがATtiny45-20PUではなく、ATtiny45V-10PUです。ファームは16.5MHzで動かすのでオーバークロックになりますが、実際やってみたらちゃんと動いたのでそれで良し、ということで。汎用の操作コンソールツールを作って(tool/usbi2c.exe)、試しにEEPROM (AT24C256)の読み書きをやってみました。

SANY0585.JPG

I2CはSCL、SDAラインをプルアップする必要があります。ブリッジ側ではプルアップを入れていない(3.3Vのターゲットを繋ぐ場合への考慮)ので、ターゲット側で10kΩプルアップを入れました。

なお、usbi2c.exeのコマンド構文は

(Write)      <SLA>:<DATA0> <DATA1> ... <DATA n>
(Write&Read) <SLA>:<DATA0> <DATA1> ... <DATA n>,<LEN>
(Quit)       q

※<SLA>...Slave address (8~119) in hexadecimal
         If omitted, previous SLA will be used
※<DATAn>...Write data byte in hexadecimal
※<LEN>...Read length in decimal

Examples with 24C256 (SLA:0x50)
* Read 8 bytes from address 0x0000
> 50:00 00,8

* Write 3 bytes ("ABC") to address 0x0120
> 50:01 20 41 42 43

です。(なんか<pre>~</pre>の中で日本語を使いたくなくなるのは私だけ?)
EEPROMの読み書きは問題なくできたので、ちゃんと通信出来ているようです。今度デジタルオシロの有るところに持って行って、通信波形を確認したいですね。というか家にデジタルオシロ欲しい。あぁ、AVRDRAGONも欲しい...。

AVR-USBはやっぱり素晴らしいですね。今後もいろいろ作っていきたいです。内蔵オシレータも面白いですが、tiny2313や12MHz水晶を大量に買い込んでおきたいですね。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちV-USB (AVR-USB)カテゴリに属しているものが含まれています。

前のカテゴリはRXです。

次のカテゴリはイベントです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 5.2.9