アクセスカウンタ
Now loading...
最近のエントリー
アーカイブ
検索


リンク
Powered by
Movable Type3.35

2007年06月10日

FTDI社製FT232Rの汎用I/Oポートの操作

先月試した SiliconLabs製のCP2103は汎用I/Oが4ビット付いている。電圧仕様は3.3Vなので気を使った。似たようなものにFTDI社製のFT232RLがある。こちらはI/O電圧が3.3Vと5Vより選択できる。なかなかよさそうなのでFT232Rを試してみる。まずはFT232RLの汎用I/O(CBUS)を操作する簡単なソフトを作成した。
1.環境
WindowsXP
VisualC++Express
MicrosoftPlatformSDK
2.必要なもの:FTDI社より下記ファイル
CDM 2.00.00.zip (ドライバ、DLL、Lib、ヘッダファイル)
MProg3.0_Setup.exe (EEPROM書き換えツール)
3.ソースリスト
#include < windows.h >
#include < stdio.h >
#include "FTD2XX.H"

int main(int argc, char *argv[])
{
    char    cmd;
    LPSTR   pos;
    BYTE    data;
    HANDLE  hc;
    int     res;
    char    Buf[64];

    Buf[0] = 0;
    if( argc < 2 || (toupper(*argv[1])=='W' && argc < 3 )) {
        printf_s("FT232RCBUS r\nFT232RCBUS w 1100\n");
        return( 0 );
    }
    cmd = *argv[1];
    res = FT_ListDevices( 0,
                        Buf,
                        FT_LIST_BY_INDEX | FT_OPEN_BY_DESCRIPTION );
    hc = FT_W32_CreateFile( Buf,
                        GENERIC_READ | GENERIC_WRITE,
                        0,
                        NULL,
                        OPEN_EXISTING,
                        FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED
                              | FT_OPEN_BY_DESCRIPTION,
                        NULL );
    if( hc == INVALID_HANDLE_VALUE ) {
        printf_s( "Open Error:%s\n", Buf);
        res = 11;
    } else {
        switch( toupper( cmd )) {
            case 'R':
                res = FT_GetBitMode( hc, &data );
                if( res == FT_OK ) {
                    printf_s( "%x\n", data );
                } else {
                    printf_s( "R command Error %d\n", res );
                }
                break;
            case 'W':
                pos = argv[2];
                data = 0;
                if( pos[0] == '1' ) data |= 0x08;
                if( pos[1] == '1' ) data |= 0x04;
                if( pos[2] == '1' ) data |= 0x02;
                if( pos[3] == '1' ) data |= 0x01;
                res = FT_SetBitMode( hc, 0xf0 | data, 0x20 );
                if( res != FT_OK ) {
                    printf_s("W command Error %x\ndata %x\n", res, data );
                }
                break;
            default:
                printf_s( "FT232RCBUS r\nFT232RCBUS w 1100\n" );
                break;
        }
        FT_W32_CloseHandle( hc );
    }
    return( res );
}
4.使い方。(PCに1つだけFT232RLを接続した場合を想定)
まずMProgツールでCBUSのビットをI/Oに設定してEEPROMを書き換えておく。
CBUS の出力状態を読む。
FT232RCBUS.exe r
CBUSの出力を変更する。(例:bit3とbit2を1に、bit1とbit0を0にする)
FT232RCBUS.exe w 1100
これをバッチファイルなどで利用する。 Posted by やんもす at 2007年06月10日 00:32
コメント
コメントを投稿する


(非公開です。無記入でも可)

(公開されます。無記入でも可)

左の情報をクッキーに保存しますか?