2012年02月18日

AndroidからFTDI Bit-bangモードの制御

Android上で動作する、FTDIのUSBシリアル/パラレル変換チップFT232/245シリーズ用のデバイスドライバ FTDriver(@ksksue氏作)ってのがありまして、今話題です。
https://github.com/ksksue/FTDriver
Android 3.1以降で対応した、USB Host APIにより、FTDIチップから任意のシリアル入出力が出来ます。

今回、ksksue氏のgithubからのフォークに初挑戦し、そこにBit-bangモードに対応する改変を入れてみました。
上記本線からforkしたのはこちら⇨ https://github.com/yishii/FTDriver

Bit-bangモードとは、FTDIのFT232BM、FT245BMからサポートされたモードで、USBシリアル/USBパラレル変換ではなく、汎用入出力IOをUSBからの制御に基づいて行う、USB-IO的な動作するモードです。
FT232RLでは、5ビットのC-BUSピンのも追加され、UARTの機能を生かしたまま、Bit-bangモードを使用することもできます(要EEPROM書き換え)。

P1100979.JPG

Bit-bangモードの制御追加は、OSSのlibusb上の制御モジュールlibFTDIを参考に実装してみました。
使い方は簡単。こんなかんじです。

	FTDriver mSerial;
	final int MODE_SERIAL = FTDriver.BAUD115200;
	mSerial = new FTDriver((UsbManager)getSystemService(
		Context.USB_SERVICE));
	mSerial.begin(MODE_SERIAL);

	// 第二引数 1 => Output
	mSerial.setBitmode(true, 0xff,
		FTDriver.FTDI_MPSSE_BITMODE_BITBANG);

	for(i=0;i<=5;i++){
		data[0] = (byte)0xff;
		mSerial.write(data,1);
		Log.i("FTDriverTest","Output high");

		data[0] = (byte)0x00;
		mSerial.write(data,1);
		Log.i("FTDriverTest","Output low");

	}
	// exit from bit-bang mode
	mSerial.setBitmode(false, 0, 0);

	mSerial.end();
入力の場合、
	FTDriver mSerial;
	final int MODE_SERIAL = FTDriver.BAUD115200;
	byte data;

	mSerial = new FTDriver((UsbManager)getSystemService(
		Context.USB_SERVICE));
	mSerial.begin(MODE_SERIAL);

	mSerial.setBitmode(true, 0x00,
		FTDriver.FTDI_MPSSE_BITMODE_BITBANG);

	data = mSerial.getPinState();

	// exit from bit-bang mode
	mSerial.setBitmode(false, 0, 0);

	mSerial.end();

動画貼り付けました。実験としては、秋月のフルカラーLEDバーをFTDI FT232RLが搭載されたArduino duemilanoveのFTDIピンに接続し、Android側からIO制御するものです。
FTDI_BBdemo.png
FTDIボードとして、Arduino duemilanoveを使用していますが、AVR側は何もしない起動直後に無限ループするファームを焼いています。従って、Arduinoではなく、単なるFTDIボードとして使用しています。


以下のボードでAndroidから8ビットの汎用I/Oできるってことです。

FT232RL搭載小型USB-シリアルアダプタ 5V
スイッチサイエンス
売り上げランキング: 16984


Arduinoをはじめようキット
スイッチサイエンス
売り上げランキング: 510
ラベル:FTDI android
posted by いしいっち at 15:09| Comment(0) | TrackBack(0) | Android開発関連 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック