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ならセーフでしょう。