usbRS2313
usbRS2313 の紹介†
これは、ATtiny2313を使った、USBシリアル変換器です。
CDC(コミュニケーション・デバイス・クラス)で実装していますので Windows標準のCDC仮想COMポートドライバーにより、 "COMx:" (xは1〜9まで) ポートに見えるはずです。
配線図†
- 回路図は、HIDasp(x)、HIDsphのものと共通です。
ATtiny2313 ___ ___ RESET [1 |__| 20] Vcc PD0(RxD)[2 19] PB7(SCK) PD1(TxD)[3 18] PB6(MISO) XTAL2 [4 17] PB5(MOSI) XTAL1 [5 16] PB4 PD2 [6 15] PB3 PD3(D+) [7 14] PB2 PD4(D-) [8 13] PB1 PD5 [9 12] PB0 GND [10 11] PD6 ~~~~~~~~~~~
- ・括弧()の書かれているpinと、GNC,Vccに配線をしてください。
- ・GND,Vcc間にはパスコン(10uF以上)を入れてください。
- ・PB5,PB6,PB7は、ISP(イン・システム・プログラミング)端子で、
- 外部にあるAVRライターとの接続が出来るようにすると、いつでも
- ファームウェアの更新が出来るので便利です。
- ・USB D+,D-は、68Ω程度の抵抗を経由してUSBコネクタに配線します。
- ・USB D- のUSBコネクタ側端子は1.5kΩで5Vもしくは3.3Vにpull upします。
- ・Vccを5V駆動させる場合はUSB D+,D-のコネクタ端子側にツェナーDiを入れて3.3V程度
- にクランプします。
- ・RxD,TxDはいわゆるTTLレベルです。(通常はHiで、スタートビットがLoになります。)
--------------------------------------- SPI: PB7-5 USB: PD4 ===> USB D- PD3 ===> USB D+ XTAL: XTAL1,2 => Crystal 12MHz ---------------------------------------
テスト†
- ・w32term.exeはWindowsのコマンドラインで動作する簡易ターミナルソフトです。
- ・teraterm等でも試験は出来ます。
- ATtiny2313の pin 2(RxD)とpin 3(TxD) をショートさせると、エコーバック
- テストが出来ます。
- ・Windows Vistaでは、USBのLowSpeed Bulk 転送が許されていないため、そのままでは
- 動作しません。
免責†
- まだ、いろいろな評価を行っていませんので不具合等がある可能性が高いです。
- 送信バッファフルの処理がありません。
- フローコントロールがありません。
ボーレートは下記のみサポートです。 0x04, BAUD_LH(1249) , // 1200,8N2 0x09, BAUD_LH( 624) , // 2400,8N2 0x12, BAUD_LH( 311) , // 4800,8N2 0x25, BAUD_LH( 155) , // 9600,8N2 0x4b, BAUD_LH( 77) , // 19200,8N2 0x7a, BAUD_LH( 47) , // 31250,8N2 * MIDI 0x96, BAUD_LH( 38) , // 38400,8N2 0x2c, BAUD_LH( 25) , // 57600,8N2 ------- ---------------- baud_h, brrに設定する値 // baud 8N2は固定です.
上記baudにマッチしない場合19200になります。--- ボーレートは割り算で求めるように変更したので、上記範囲程度であれば、任意の整数値を設定できます。
- Windowsに接続するとドライバーのinfファイルを要求されます。
- まだ用意できていませんので、AVR-Doperに付属のavrdoper.inf を使用してみてください。
- OHCIで試した限り57600でもなんとか動作しているような感じですが、UHCIホストでは38400で文字落ちが確認されています。
- UHCI(480Mbps)の場合はデバイスとの間にHighSpeedハブを挟むことで速度改善の可能性があります。
謝辞†
- LowSpeed AVR-USBでCDCクラスの実現は、Recursion Co., Ltd.
- http://www.recursion.jp/avrcdc/indexj.html
- の田村修氏の手により最初に行われました。
- このもとになったアイディアは2005年末の石川恭輔氏の実験に遡ります。
- また、AVR-USB( http://www.obdev.at/products/avrusb/index.html )
- のリファレンスプロジェクトのひとつである、
- AVR-Doper - an STK500 Compatible AVR Programmer
- のソースを今回のフレームワークに使わせていたきました。
- 上記の先達の方々に深く敬意と感謝を述べたいと思います。
DOWNLOAD†
その他†
ELM CHaNさんのHPに、簡易的にRS232Cレベルに変換するノウハウが書かれています。
- 昔はテレタイプ等いろいろな接続先の機器がありましたが、今はもうPCのマザーボードのシリアルか、 USBシリアル変換機のシリアル(たいていはMAX232のような変換IC)に繋ぐことしかない ので、
- RS232C規格を厳密に守る必要もなく、MAX232等の特性に合わせて繋がればそれで いいのかもしれません。
- 上記HPの応用的になりますが、74HCの代わりに普通のLS−TTLのインバータータイプで代用 したり、トランジスタ1個の簡単な反転器を入れてやることもあります。
- LS−TTLを使う場合は、入力のGND−VCC以上にスイングしないよう電圧クランプのダイオードを 入れる必要があります。
- 出力はTTLレベルのままでもMAX232ならセーフでしょう。