カテゴリ
リンク

当サイトは、玄箱PRO (KURO-BOX/Pro)を中心とした組み込み、Linuxと電子工作を扱っています。
会社案内

情報セキュリティおよび個人情報の取り扱いについて


コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。コメントはそれぞれ投稿した人のものです。

■USB パラレル FTDI FT245RL を使ってみる
 玄箱PROに、自作のデバイスをつけるためには USB ポートに頼ることになります。比較的簡単なデバイスを使う場合には、USB パラレル IC を利用すると、マイコンなしで接続することができます。そこで、まず FT245RL *1)を使って LED を点滅させて見ます。



*1)データシートは以下の URL
http://www.ftdichip.com/Documents/DataSheets/DS_FT245R.pdf

■仮想シリアル・モード
 FT245RL には、仮想シリアル・モードと bit bang モードがあります。仮想シリアル・モードは、マイコンと FT245RL をつなぐことが想定されているようです。

FT245RL-micon.gif
マイコンと FT245RL の接続

 マイコンが主導権を握ってデータのやり取りをします。たとえば、マイコンが WR ピンを操作して、FT245RL のバッファ内にデータを1バイト書き込みます。こうすることで、マイコンと PC (玄箱PRO) がシリアル・ポートを通して通信するようにデータのやり取りができるようになります。データのやり取りのタイミングは、マイコン任せですし、マイコンが必要です。

FT245RL-WR.gif
WR のタイミング(データシートより抜粋)


■bit bang モード
 bit bang モードでは、FT245RL の8本の信号線 (DB0 から DB7) を USB からデータを受け取ったら、 FT245RL 主導で操作するモードです。信号線は1本ずつ、入力・出力を変えることができます。
 また、連続したデータが順にピンに現れる時間間隔を指定することもできます。ここでは、こちらの bit bang モードを使います。

FT245RL.gif
bit-bang モードの場合は、ピンの入出力のタイミングは USB から FT245RL に指示する

■秋月の FT245RL モジュール
 FT245RL という IC はフラット・パッケージで扱いにくいのですが、基板に実装して DIP に変換されているモジュールが秋月電子やストロベリー・リナックスなどで販売されています。ここでは秋月電子のモジュール*2)を使っています。
 ほかのモジュールもピン配置が違うかもしれませんが、同様に使えるはずです。

*2) [FT245RL]FT245RL USBパラレル変換モジュール
http://akizukidenshi.com/catalog/items2.php?q=%22K-01799%22&s=score&p=1&r=1&page=

■回路図と組み立て
 図に回路図を示します。実験用にはんだ付けの要らないブレッドボードを使って組み上げてみました。FT245RL モジュール以外に必要な部品は、1kΩ (1/4W でも 1/6W でもかまわない) 8本と LED 8本です。LED は、赤または緑がいいでしょう(青でも光るとは思います)。
 モジュール上のジャンパは、J1 は 2-3 をショート、J2 をショートしておきます。LED は向きがあるので注意してください。購入時に足が長いほう(アノード側)を抵抗に近い側にします。ブレッドボードに挿す前に足は2本とも長さが同じになるようにニッパーで切ります。

FT245RL-LED.gif

LEDを接続する回路図

FT245RL-breadborad.jpg
ブレッドボードで組んでみた

 この回路は秋月電子のテスト回路と同じなので、秋月電子の Windows 用サンプル・プログラム*3)を使ってテストすることもできます。デバイス・ドライバのインストールなどは説明書に従ってください。

*3) 秋月電子のサンプルプログラム
http://akizukidenshi.com/catalog/faq.php?kind=K&code=01799

■玄箱PROと FT245RL のデバイス・ドライバ
 玄箱PRO に FT245RL を挿すと、FT232 用のシリアル・ドライバで認識されますが、このドライバでは bit bang モードになりません。そこで一度認識されたデバイス・ドライバを rmmod で外します。root で以下を実行します。

rmmod ftdi_sio usbserial

 ただし、このときは ftdi_sio ドライバを使う、USB シリアルは使えません。別の方法としては、FT245RL を認識しないようにしたカーネル・モジュールを使ってください。

  modules245.tar.gz をダウンロードし、適当なディレクトリで展開、コピーします。

tar xzvf modules.tar.gz
cp ftdi_sio.ko usbserial.ko /lib/modules/2.6.12.6-oabi/kernel/drivers/usb/serial/

 一緒に含まれている usb-serial.c.diff は、カーネル・ソースの drivers/usb/serial/usb-serial.c へ行った差分です。FT232 と FT245RL は工場出荷時に vendor ID と product ID が一緒なので、文字列で識別し、FT245RL の場合にはドライバを割り当てないようにしています。

■libftdi のインストール
 bit bang モードで使うには、libftdi*4)を使うと便利です。http://www.intra2net.com/de/produkte/opensource/ftdi/index.php から、libftdi-0.10.tar.gz をダウンロードしてください。

 まず libusb, libusb-dev を apt でインストールします。root で以下を実行します。

apt-get install libusb-0.1-4 libusb-dev

 適当なディレクトリに libftdi-0.10.tar.gz を展開し、コンパイルします。

tar xzvf libftdi-0.10.tar.gz
cd libftdi-0.10
./configure
make

 root でインストールします。

make install
ldconfig /usr/local/lib

*4)Intra2net の Thomas Jarosch 氏作のライブラリ
http://www.intra2net.com/de/produkte/opensource/ftdi/index.php

■LED を点滅してみる
 作成した回路を USB に接続し、ドライバを rmmod で外します(カーネル・モジュールを入れ替えていれば、そのままでよい)。libftdi に付属の bitbang を root で実行してみます。

su
bitbang

 一度 LED が消え、点灯した後、左 (DB0) から LED が順に消灯していけばOKです。

 さらに bitbang を改造して点灯している LED が左から右、右から左に動くようにしたプログラムを作ってみました。led.c です。コンパイルは、

cc -g -O -o led -I/usr/local/include -lftdi -lusb led.c

とします。このプログラムを root で実行する

su
./led

と、最初の動画のように動作します。動画は、USBケーブルを挿したところから写していますが、最初に LED が点滅するのが見えると思います。応用するときには、最初にこのピンが変化することに注意してください。

プログラムの中身は、最初に全ピン出力として bit bang モードにし、

ftdi_enable_bitbang(&ftdic, 0xFF);

点灯パターンを

ftdi_write_data(&ftdic, &c, 1);

で順次、送っているだけです。

<光永 法明 >

 カテゴリ 

 

トラックバック(0)

このブログ記事を参照しているブログ一覧: USB パラレルと LED

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/1300

おすすめ書籍
Powered by
Movable Type 4.1
/*yahoo remove*/